
Nikolai Smirnov
Software Development Lead

Hướng dẫn này giải thích cách giải reCAPTCHA v2 bằng Node.js với API của CapSolver. Hướng dẫn bao gồm cả triển khai không dùng proxy và dùng proxy, các bước cài đặt từng bước, và các ví dụ mã nguồn Node.js có thể sử dụng ngay. Bằng cách tuân theo hướng dẫn này, các nhà phát triển có thể tích hợp xử lý reCAPTCHA v2 vào quy trình tự động hóa hoặc thu thập dữ liệu một cách hiệu quả và đáng tin cậy.
reCAPTCHA v2 vẫn là cơ chế xác minh con người được triển khai phổ biến nhất trên web. Đối với các nhà phát triển làm việc với quy trình tự động hóa, trích xuất dữ liệu hoặc tự động hóa trình duyệt quy mô lớn, việc xử lý reCAPTCHA v2 một cách hiệu quả là một thách thức kỹ thuật lặp lại.
Trong bài viết này, chúng tôi hướng dẫn một triển khai thực tế bằng Node.js để giải reCAPTCHA v2 sử dụng API của CapSolver. Bạn sẽ học cách cấu hình môi trường, cài đặt các phụ thuộc cần thiết và triển khai các giải pháp cả với và không dùng proxy. Các ví dụ được cung cấp được thiết kế theo hướng sản xuất và dễ dàng thích ứng với các trường hợp sử dụng thực tế.
Thực hiện các lệnh sau để cài đặt các gói cần thiết:
npm install axios
Dưới đây là một đoạn mã mẫu bằng Node.JS để thực hiện nhiệm vụ:
const axios = require('axios');
const PAGE_URL = ""; // Thay thế bằng trang web của bạn
const SITE_KEY = ""; // Thay thế bằng trang web
const CLIENT_KEY = ""; // Thay thế bằng khóa API CAPSOLVER của bạn
async function createTask(payload) {
try {
const res = await axios.post('https://api.capsolver.com/createTask', {
clientKey: CLIENT_KEY,
task: payload
});
return res.data;
} catch (error) {
console.error(error);
}
}
async function getTaskResult(taskId) {
try {
success = false;
while(success == false){
await sleep(1000);
console.log("Đang lấy kết quả nhiệm vụ cho ID nhiệm vụ: " + taskId);
const res = await axios.post('https://api.capsolver.com/getTaskResult', {
clientKey: CLIENT_KEY,
taskId: taskId
});
if( res.data.status == "ready") {
success = true;
console.log(res.data)
return res.data;
}
}
} catch (error) {
console.error(error);
return null;
}
}
async function solveReCaptcha(pageURL, sitekey) {
const taskPayload = {
type: "ReCaptchaV2TaskProxyless",
websiteURL: pageURL,
websiteKey: sitekey,
};
const taskData = await createTask(taskPayload);
return await getTaskResult(taskData.taskId);
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function main() {
try {
const response = await solveReCaptcha(PAGE_URL, SITE_KEY );
console.log(`Nhận được token: ${response.solution.gReCaptcharesponse}`);
}
catch (error) {
console.error(`Lỗi: ${error}`);
}
}
main();
Dưới đây là một đoạn mã mẫu bằng Node.JS để thực hiện nhiệm vụ:
const axios = require('axios');
const PAGE_URL = ""; // Thay thế bằng trang web của bạn
const SITE_KEY = ""; // Thay thế bằng trang web
const CLIENT_KEY = ""; // Thay thế bằng khóa API CAPSOLVER của bạn
const PROXY = "https://username:password@host:port";
async function createTask(payload) {
try {
const res = await axios.post('https://api.capsolver.com/createTask', {
clientKey: CLIENT_KEY,
task: payload
});
return res.data;
} catch (error) {
console.error(error);
}
}
async function getTaskResult(taskId) {
try {
success = false;
while(success == false){
await sleep(1000);
console.log("Đang lấy kết quả nhiệm vụ cho ID nhiệm vụ: " + taskId);
const res = await axios.post('https://api.capsolver.com/getTaskResult', {
clientKey: CLIENT_KEY,
taskId: taskId
});
if( res.data.status == "ready") {
success = true;
console.log(res.data)
return res.data;
}
}
} catch (error) {
console.error(error);
return null;
}
}
async function solveReCaptcha(pageURL, sitekey) {
const taskPayload = {
type: "ReCaptchaV2Task",
websiteURL: pageURL,
websiteKey: sitekey,
proxy: PROXY
};
const taskData = await createTask(taskPayload);
return await getTaskResult(taskData.taskId);
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function main() {
try {
const response = await solveReCaptcha(PAGE_URL, SITE_KEY );
console.log(`Nhận được token: ${response.solution.gRecaptchaResponse}`);
}
catch (error) {
console.error(`Lỗi: ${error}`);
}
}
main();
Giải reCAPTCHA v2 trong Node.js không cần phải phức tạp. Bằng cách tận dụng API của CapSolver, các nhà phát triển có thể triển khai giải pháp sạch sẽ, mở rộng được và hoạt động đáng tin cậy trên các cấu hình trang web khác nhau. Dù bạn chọn cài đặt không dùng proxy để đơn giản hay phương pháp dùng proxy để kiểm soát tốt hơn, các ví dụ trong hướng dẫn này cung cấp nền tảng vững chắc cho mục đích sản xuất.
Nhiệm vụ không dùng proxy dựa vào cơ sở hạ tầng nội bộ của CapSolver và dễ triển khai hơn, trong khi nhiệm vụ dùng proxy cho phép bạn kiểm soát danh tính IP và vị trí địa lý để đạt tỷ lệ thành công cao hơn trên các trang web nghiêm ngặt.
Sử dụng ReCaptchaV2Task khi trang web đích yêu cầu tính nhất quán của IP hoặc áp dụng các hạn chế khu vực yêu cầu cấu hình proxy cụ thể.
Hầu hết các nhiệm vụ được hoàn thành trong vài giây. Thời gian thực tế phụ thuộc vào độ phức tạp của trang, mức độ khó của thử thách và việc có sử dụng proxy hay không.
Có. Các hàm được cung cấp là mô-đun và có thể tích hợp vào các trình thu thập dữ liệu, quy trình tự động hóa hoặc các luồng làm việc dựa trên trình duyệt.
Đang gặp phải lỗi "reCAPTCHA Invalid Site Key" hoặc "token reCAPTCHA không hợp lệ"? Khám phá các nguyên nhân phổ biến, các giải pháp từng bước và mẹo khắc phục sự cố để giải quyết các vấn đề xác minh reCAPTCHA thất bại. Học cách sửa lỗi xác minh reCAPTCHA, vui lòng thử lại.

Học cách giải reCAPTCHA v2 bằng Python và API. Hướng dẫn toàn diện này bao gồm các phương pháp Proxy và không dùng Proxy cùng với mã nguồn có thể triển khai cho tự động hóa.
