///
JavaScript ReCaptcha v.2
January 15, 2025

如何使用 Selenium&CapMonster Cloud 在 JavaScript 中解决 ReCaptcha v2

我们将通过 Node.js 运行代码,请提前下载。js 运行代码,因此请提前下载并安装到您的计算机上。

 

  • 接下来,为新项目创建一个文件夹,命名为 BypassRecaptchav2Js,启动 VS Code 并打开创建的文件夹。

 

  • 创建一个".env "文件,并在其中添加所有需要的参数:
CAPMONSTER_API_KEY=YOUR_API_KEY
WEBSITE_KEY=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
WEBSITE_URL=https://www.google.com/recaptcha/api2/demo

 

  • 加载软件包.我们需要这个文件来查看所有已安装模块和依赖项的列表。打开终端,使用命令 "npm i @zennolab_com/capmonstercloud-client dotenv selenium selenium-webdriver"。 

 

  • 创建文件 "main.js "文件并开始编写代码。首先,导入所有组件并加载数据:
require('dotenv').config();
const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const { CapMonsterCloudClientFactory、ClientOptions、RecaptchaV2ProxylessRequest } = require('@zennolium.com/chrome')= require('@zennolab_com/capmonstercloud-client');

const CAPMONSTER_API_KEY = process.env.CAPMONSTER_API_KEY;
const WEBSITE_KEY = process.env.WEBSITE_KEY;
const WEBSITE_URL = process.env.WEBSITE_URL;

 

  • 现在我们需要启动浏览器,找到验证码元素,并在 CapMonster Cloud 中创建一个求解请求:
async函数 solveRecaptcha() {
    const options = new chrome.Options();
    const driver = await new Builder().forBrowser('chrome').setChromeOptions(options).build();

    try {
       await driver.get(WEBSITE_URL);
       console.log('Page open, reCAPTCHA solving...');

 

  • 现在,让我们用创建的任务向服务器发送请求,以解决 reCAPTCHA: 
// 初始化 CapMonster 客户端
       const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CAPMONSTER_API_KEY }));

       // 创建一个 reCAPTCHA solving V2 Proxyless 类型的请求
       const recaptchaV2ProxylessRequest = new RecaptchaV2ProxylessRequest({
         websiteURL:WEBSITE_URL、
         websiteKey:WEBSITE_KEY、
       });

       // 使用 CapMonster 解决重验证码问题
       const solution = await cmcClient.Solve(recaptchaV2ProxylessRequest);
       console.log('Solution from CapMonster:', solution);

       // 从解决方案对象读取令牌
       const token = solution.solution.gRecaptchaResponse.gRecaptchaResponse;

 

  • 我们将在页面上实施解决方案,并在成功解决验证码问题后创建后续表单提交: 
// 将结果插入表单中
       await driver.executeScript((result) => {
         document.getElementById('g-recaptcha-response').value = result;
         console.log('Token in the console:', result); // 向控制台输出令牌
       }, token);

       console.log('The token is inserted into the form!');

       await driver.findElement(By.id('recaptcha-demo-submit')).click();
       console.log('Form submitted!'); // 可选步骤

       // 暂停 10 秒
       await new Promise(resolve => setTimeout(resolve, 10000));

    } catch (error) {
       console.error('Error:', error);
    } finally {
       await driver.quit();
     }
}

solveRecaptcha();

 

 

完整代码: 

require('dotenv').config();
const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const { CapMonsterCloudClientFactory、ClientOptions、RecaptchaV2ProxylessRequest } = require('@zennolium.com.cn)= require('@zennolab_com/capmonstercloud-client');

const CAPMONSTER_API_KEY = process.env.CAPMONSTER_API_KEY;
const WEBSITE_KEY = process.env.WEBSITE_KEY;
const WEBSITE_URL = process.env.WEBSITE_URL;

async function solveRecaptcha() {
    const options = new chrome.Options();
    const driver = await new Builder().forBrowser('chrome').setChromeOptions(options).build();

    try {
       await driver.get(WEBSITE_URL);
       console.log('Page open, reCAPTCHA solving...');

       // 初始化 CapMonster 客户端
       const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CAPMONSTER_API_KEY }));

       // 创建一个 reCAPTCHA solving V2 Proxyless 类型的请求
       const recaptchaV2ProxylessRequest = new RecaptchaV2ProxylessRequest({
         websiteURL:WEBSITE_URL、
         websiteKey:WEBSITE_KEY、
       });

       // 使用 CapMonster 的重验证码解决方案
       const solution = await cmcClient.Solve(recaptchaV2ProxylessRequest);
       console.log('Solution from CapMonster:', solution);

       // 从解决方案对象读取令牌
       const token = solution.solution.gRecaptchaResponse;

      // 将结果插入表单中
       await driver.executeScript((result) => {
         document.getElementById('g-recaptcha-response').value = result;
         console.log('Token in the console:', result); // 向控制台输出令牌
       }, token);

       console.log('The token is inserted into the form!');

       await driver.findElement(By.id('recaptcha-demo-submit')).click();
       console.log('Form submitted!'); // 可选步骤

       // 暂停 10 秒
       await new Promise(resolve => setTimeout(resolve, 10000));

    } catch (error) {
       console.error('Error:', error);
    } finally {
       await driver.quit();
     }
}

solveRecaptcha();

 

 

代码说明:

 

导入图书馆: 

dotenv  用于从 .env 文件加载环境变量。

selenium-webdriver is 使用 WebDriver 自动运行浏览器。

selenium-webdriver/chrome 提供了自定义 Chrome 浏览器的选项。

@zennolab_com/capmonstercloud-client 提供与 CapMonster Cloud 协同工作的工具。

 

加载环境变量:dotenv 用于从 .env 文件中加载环境变量,例如env 文件中加载环境变量,例如 CAPMONSTER_API_KEYWEBSITE_KEY 和 WEBSITE_URL

 

solveRecaptcha function: 使用 Selenium WebDriver 创建 Chrome 驱动程序的实例。

使用加载的 CAPMONSTER_API_KEY 初始化 CapMonster 客户端。

转到带有 reCAPTCHA 的网站。

创建 reCAPTCHA V2 Proxyless 类型解决方案的请求。

使用 CapMonster 解决 reCAPTCHA 并获得解决方案。

使用 JavaScript 将生成的标记(解决方案)插入网页的表单中。

可选择点击 id 为 "recaptcha-demo-submit "的按钮提交表单。

解决问题后等待 10 秒。

终止驱动程序。

 

try-catch-finally block: 

Try 块包含主要的自动化执行代码。

catch 块处理任何异常并打印错误信息。

即使发生错误,finally 块也能确保关闭驱动程序。

 

呼叫 solveRecaptcha() 函数:执行脚本时,运行 solveRecaptcha() 函数来解决 reCAPTCHA。

 

 

让我们在终端中使用命令运行代码: node main.js 看看会发生什么: 

none provided

Note:我们在此提醒您,该产品用于在您自己的网站和您拥有合法访问权限的网站上自动进行测试。

ItGuy
geear
面向软件开发者的联盟计划
通过用户识别验证码的消费获取高达 30% 的返佣。
✅ 请求已发送
感谢您对我们的合作伙伴计划感兴趣!我们将在 7 个工作日内与您联系。
请求加入
填写表格以提交申请加入合作伙伴计划。
更多文章