
Anh Tuan
Data Science Expert

本指南解释了如何使用 CapSolver 的 API 通过 Node.js 解决 reCAPTCHA v2。它涵盖了无代理和带代理的实现方式,包含逐步设置说明,并提供可以直接使用的 Node.js 代码示例。通过遵循本教程,开发人员可以高效且可靠地将 reCAPTCHA v2 处理集成到他们的自动化或数据收集工作流中。
reCAPTCHA v2 仍然是目前网页上最常部署的人工验证机制之一。对于从事自动化流程、数据提取或大规模浏览器自动化的开发人员来说,高效处理 reCAPTCHA v2 是一个常见的技术挑战。
在本文中,我们将通过 CapSolver API 逐步讲解如何在 Node.js 中实现解决 reCAPTCHA v2 的方法。您将学习如何配置环境、安装所需依赖,并实现无代理和带代理的解决方案。提供的示例面向生产环境,易于适应实际使用场景。
执行以下命令以安装所需包:
npm install axios
以下是一个完成该任务的 Node.JS 示例脚本:
const axios = require('axios');
const PAGE_URL = ""; // 替换为您的网站
const SITE_KEY = ""; // 替换为您的网站
const CLIENT_KEY = ""; // 替换为您的 CAPSOLVER API 密钥
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("Getting task result for task ID: " + 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(`Received token: ${response.solution.gReCaptcharesponse}`);
}
catch (error) {
console.error(`Error: ${error}`);
}
}
main();
以下是一个完成该任务的 Node.JS 示例脚本:
const axios = require('axios');
const PAGE_URL = ""; // 替换为您的网站
const SITE_KEY = ""; // 替换为您的网站
const CLIENT_KEY = ""; // 替换为您的 CAPSOLVER API 密钥
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("Getting task result for task ID: " + 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(`Received token: ${response.solution.gRecaptchaResponse}`);
}
catch (error) {
console.error(`Error: ${error}`);
}
}
main();
在 Node.js 中解决 reCAPTCHA v2 不需要复杂操作。通过利用 CapSolver API,开发人员可以实现一个简洁且可扩展的解决方案,在不同网站配置下都能可靠运行。无论您选择无代理设置以简化流程,还是使用代理方法以获得更高的成功率,本指南中的示例都为生产环境提供了坚实的基础。
代理less 任务依赖于 CapSolver 的内部基础设施,实现起来更简单,而代理-based 任务允许您控制 IP 声誉和地理位置,以在更严格的网站上获得更高的成功率。
当目标网站强制要求 IP 一致性或应用地区限制,需要特定代理配置时,使用 ReCaptchaV2Task。
大多数任务在几秒钟内完成。实际时间取决于网站复杂度、挑战难度以及是否使用代理。
可以。提供的函数是模块化的,可以嵌入到爬虫、自动化流程或基于浏览器的工作流中。