CAPSOLVER
博客
如何使用 Node.JS 解决 reCaptcha v2 验证码

如何使用 Node.JS 解决 reCaptcha v2

Logo of CapSolver

Anh Tuan

Data Science Expert

17-Dec-2025

TL;DR

本指南解释了如何使用 CapSolver 的 API 通过 Node.js 解决 reCAPTCHA v2。它涵盖了无代理和带代理的实现方式,包含逐步设置说明,并提供可以直接使用的 Node.js 代码示例。通过遵循本教程,开发人员可以高效且可靠地将 reCAPTCHA v2 处理集成到他们的自动化或数据收集工作流中。

简介

reCAPTCHA v2 仍然是目前网页上最常部署的人工验证机制之一。对于从事自动化流程、数据提取或大规模浏览器自动化的开发人员来说,高效处理 reCAPTCHA v2 是一个常见的技术挑战。

在本文中,我们将通过 CapSolver API 逐步讲解如何在 Node.js 中实现解决 reCAPTCHA v2 的方法。您将学习如何配置环境、安装所需依赖,并实现无代理和带代理的解决方案。提供的示例面向生产环境,易于适应实际使用场景。

⚙️ 先决条件

  • 代理(可选
  • 安装 Node.JS
  • Capsolver API 密钥

🤖 第1步:安装必要的包

执行以下命令以安装所需包:

python 复制代码
npm install axios

👨‍💻 无代理解决 reCaptcha v2 的 Node.JS 代码

以下是一个完成该任务的 Node.JS 示例脚本:

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();

👨‍💻 使用代理解决 reCaptcha v2 的 Node.JS 代码

以下是一个完成该任务的 Node.JS 示例脚本:

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();

⚠️ 修改这些变量

  • PROXY: 如果使用 ReCaptchaV2Task,请替换为您的代理。
  • CLIENT_KEY: 从 Capsolver 仪表板 获取您的 API 密钥。
  • PAGE_URL: 替换为您的网站 URL。
  • SITE_KEY: 替换为包含验证码的页面的站点密钥。

👀 更多信息

结论

在 Node.js 中解决 reCAPTCHA v2 不需要复杂操作。通过利用 CapSolver API,开发人员可以实现一个简洁且可扩展的解决方案,在不同网站配置下都能可靠运行。无论您选择无代理设置以简化流程,还是使用代理方法以获得更高的成功率,本指南中的示例都为生产环境提供了坚实的基础。

常见问题

1. 代理less 和代理-based 的 reCAPTCHA v2 任务有什么区别?

代理less 任务依赖于 CapSolver 的内部基础设施,实现起来更简单,而代理-based 任务允许您控制 IP 声誉和地理位置,以在更严格的网站上获得更高的成功率。

2. 什么时候应该使用 ReCaptchaV2Task 而不是 ReCaptchaV2TaskProxyless?

当目标网站强制要求 IP 一致性或应用地区限制,需要特定代理配置时,使用 ReCaptchaV2Task。

3. 通常需要多长时间才能收到 reCAPTCHA v2 令牌?

大多数任务在几秒钟内完成。实际时间取决于网站复杂度、挑战难度以及是否使用代理。

4. 这个解决方案可以集成到更大的 Node.js 自动化系统中吗?

可以。提供的函数是模块化的,可以嵌入到爬虫、自动化流程或基于浏览器的工作流中。

合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。

更多