如何使用 Selenium & CapMonster Cloud 在 JavaScript 中解决 ReCaptcha v3
- To run the code, you need to install Node.js 和所有必要的依赖项(请参阅 JavaScript ReCaptcha v.2).在".env "文件中,我们写入以下值:
CAPMONSTER_API_KEY=YOUR_API_KEY
WEBSITE_KEY=6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob
WEBSITE_URL=https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta
- 在 "main.js "文件中,我们编写了自动解决此类验证码的代码。我们需要事先知道 id,以便搜索验证码元素,从而返回从 CapMonster 云服务器接收到的令牌;
const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const { CapMonsterCloudClientFactory、ClientOptions、RecaptchaV3ProxylessRequest } = 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;
async function solveRecaptcha() {
const options = new chrome.Options();
const driver = await new Builder().forBrowser('chrome').setChromeOptions(options).build();
// 初始化 CapMonster 客户端
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CAPMONSTER_API_KEY }));
try {
await driver.get(WEBSITE_URL);
console.log('Browser initialized!');
const recaptchaV3ProxylessRequest = new RecaptchaV3ProxylessRequest({
websiteURL:WEBSITE_URL、
websiteKey:WEBSITE_KEY、
minScore: 0.7、
pageAction:"verify"、
});
// 从 CapMonster 获取验证码解决方案
const solution = await cmcClient.Solve(recaptchaV3ProxylessRequest);
console.log('Solution CapMonster:', solution);
// 在验证码表单中插入令牌
await driver.executeScript((result) => {
document.getElementById('g-recaptcha-response-100000').style.display = 'block';
document.getElementById('g-recaptcha-response-100000').style.visibility = 'visible';
document.getElementById('g-recaptcha-response-100000').value = result;
}, solution);
console.log('The result is inserted into the text field!');
await Promise.all([)
driver.wait(until.elementIsVisible(driver.findElement(By.id('v3_submit'))))、
driver.findElement(By.id('v3_submit')).click()
]);
console.log('"Check" button pressed!');
} catch (e) {
console.error('An error has occurred:', e);
} finally {
await driver.quit();
}
}
solveRecaptcha();
代码说明:
Loading environment variables: dotenv is used 从 .env 文件中加载环境变量,例如 CAPMONSTER_API_KEY、WEBSITE_KEY and WEBSITE_URL.
solveRecaptcha function:
使用 Selenium WebDriver 创建 Chrome 驱动程序实例。
使用加载的 CAPMONSTER_API_KEY 。
转到一个有 reCAPTCHA 的网站。
创建一个 V3 Proxyless minScore和 pageAction.
使用 CapMonster 解决 reCAPTCHA 并获得解决方案。
使用 JavaScript 将生成的标记(解决方案)插入网页的表单中。
Waits for the element with id 'v3_submit' 元素可见,然后点击它。
显示已完成步骤的信息。
try-catch-finally block:
Try 块包含主要的自动化执行代码。
catch 块处理任何异常并打印错误信息。
finally 块确保即使发生错误,驱动程序也会关闭。
Calling solveRecaptcha() function: 执行脚本时,运行 solveRecaptcha() 函数来解决 reCAPTCHA。
运行代码和结果:
Note:我们在此提醒您,该产品用于在您自己的网站和您拥有合法访问权限的网站上自动进行测试。