如何使用CapSolver API解决BrowserCloud中的CAPTCHA

Ethan Collins
Pattern Recognition Specialist
11-Sep-2025
BrowserCloud是一个高性能的、基于云的浏览器自动化平台,专为可扩展和分布式Web自动化而设计。它使开发人员能够并行运行数百个无头Chrome浏览器,用于Web抓取、自动化测试、SEO监控、数据提取和内容生成等用例。BrowserCloud内置支持Puppeteer、Selenium和Playwright,通过提供代理轮换、会话管理和实时监控来简化复杂的自动化工作流程。
然而,验证码、机器人检测系统和高级反自动化措施通常会通过要求类似人类的交互来验证真实性,从而扰乱这些浏览器自动化任务。此类障碍可能会阻止抓取脚本、减慢测试流程并破坏自动表单提交,从而导致时间浪费和效率降低。
CapSolver是一款基于AI的验证码解决和机器人检测绕过服务,提供可靠的解决方案。它可以通过编程方式检测和解决各种类型的验证码——包括reCAPTCHA v2/v3、Cloudflare Turnstile和基于图像的谜题——确保浏览器自动化工作流程不中断。
在本文中,我们将提供一个分步集成指南,用于使用Puppeteer将CapSolver连接到BrowserCloud,以及一个完全可运行的代码示例。通过遵循本指南,您将能够无缝绕过验证码挑战,击败反机器人措施,并最大限度地提高自动化脚本的效率。
BrowserCloud概述及用例
BrowserCloud是一个多功能平台,它在一个高性能的基础架构上管理一系列功能齐全的Chrome浏览器,无需处理本地浏览器依赖项、内存泄漏或基础架构维护。其主要功能包括:
- 可扩展性: 并行处理时最多可同时运行100个无头浏览器。
- 框架支持: 与Puppeteer、Selenium和Playwright兼容,实现灵活的自动化。
- 代理管理: 提供智能代理轮换和高级代理,以避免检测和IP封禁。
- 内容生成: 通过API从网页或自定义HTML生成PDF、屏幕截图和图像。
- 实时监控: 提供会话管理和调试工具。
用例
BrowserCloud支持各种自动化任务,包括:
- Web抓取: 从网站提取数据,用于市场研究、价格监控或内容聚合,利用代理支持避免封锁。
- 自动化测试: 在多个浏览器和配置中进行端到端测试,以确保应用程序的可靠性。
- 内容渲染: 为报告或营销目的,从URL创建数千份PDF报告、发票或自动化屏幕截图。
- 任务自动化: 自动化重复性任务,例如表单提交、帐户登录或链接验证。
这些用例经常遇到验证码,因此CapSolver的集成对于不间断的自动化至关重要。
为什么需要验证码解决
网站部署验证码和反机器人防御措施,以防止自动化访问、垃圾邮件和恶意活动,这对Web抓取等自动化任务构成重大挑战。验证码需要诸如单击复选框或解决图像谜题之类的交互,如果不解决,可能会阻止BrowserCloud脚本。常见的验证码类型包括:
| 验证码类型 | 描述 |
|---|---|
| reCAPTCHA v2 | 需要用户选中一个复选框或根据提示选择图像。 |
| reCAPTCHA v3 | 使用评分系统来评估用户行为,通常对用户不可见。 |
| Cloudflare Turnstile | 一种注重隐私的验证码替代方案,最大限度地减少用户交互。 |
对于Web抓取和其他自动化任务,验证码可能会阻止访问关键数据,需要手动干预,这会破坏自动化的目的。虽然BrowserCloud的代理轮换有助于减少验证码触发,但它可能无法完全消除它们。CapSolver的API通过以编程方式解决验证码提供可靠的解决方案,允许BrowserCloud脚本绕过这些障碍并继续无缝提取数据或执行任务。
如何使用CapSolver处理验证码
CapSolver的API可以与Puppeteer/Playwright/Selenium脚本中的BrowserCloud集成,以有效地处理验证码。此过程包括:
- 检测验证码: 识别页面上验证码的存在,例如reCAPTCHA元素。
- 提取信息: 检索解决验证码所需的必要详细信息,例如站点密钥和页面URL。
- 调用CapSolver的API: 向CapSolver发送请求以创建任务并获取解决方案令牌。
- 注入解决方案: 将令牌插入页面以绕过验证码。
- 继续自动化: 继续执行表单提交或数据抓取等任务。
此集成利用BrowserCloud的可扩展浏览器基础架构和CapSolver的AI驱动的验证码解决功能,以确保强大的自动化工作流程。
完整的代码示例+分步说明
以下是完整的代码示例,演示如何将CapSolver与BrowserCloud集成以解决演示页面上的reCAPTCHA v2。该代码基于提供的脚本,并进行了少量改进以提高清晰度和可靠性。
先决条件
安装所需的依赖项:
bash
npm install puppeteer node-fetch@2 dotenv
创建一个包含您的API密钥的.env文件:
env
BROWSER_CLOUD_TOKEN=your_browsercloud_token
CAPSOLVER_API_KEY=your_capsolver_api_key
代码示例
javascript
import puppeteer from 'puppeteer';
import fetch from 'node-fetch';
import dotenv from 'dotenv';
dotenv.config();
const BROWSER_CLOUD_TOKEN = process.env.BROWSER_CLOUD_TOKEN;
const CAPSOLVER_API_KEY = process.env.CAPSOLVER_API_KEY;
async function solveCaptcha(sitekey, pageUrl) {
const createTaskRes = await fetch('https://api.capsolver.com/createTask', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientKey: CAPSOLVER_API_KEY,
task: {
type: 'ReCaptchaV2TaskProxyless',
websiteURL: pageUrl,
websiteKey: sitekey
}
})
});
const createTask = await createTaskRes.json();
if (!createTask.taskId) throw new Error(`CapSolver: Failed to create task: ${JSON.stringify(createTask)}`);
let solution = null;
while (true) {
await new Promise(resolve => setTimeout(resolve, 2000));
const resultRes = await fetch('https://api.capsolver.com/getTaskResult', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientKey: CAPSOLVER_API_KEY,
taskId: createTask.taskId
})
});
const result = await resultRes.json();
if (result.status === 'ready') {
solution = result.solution.gRecaptchaResponse;
break;
}
if (result.status === 'failed') throw new Error(`CapSolver: Failed to solve: ${JSON.stringify(result)}`);
}
if (!solution) throw new Error('CapSolver: Timeout waiting for solution');
return solution;
}
(async () => {
try {
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://chrome-v2.browsercloud.io?token=${BROWSER_CLOUD_TOKEN}`
});
const page = await browser.newPage();
await page.goto('https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php', { waitUntil: 'networkidle2' });
const sitekey = await page.$eval('.g-recaptcha', el => el.getAttribute('data-sitekey'));
console.log('Sitekey:', sitekey);
const solution = await solveCaptcha(sitekey, page.url());
console.log('CAPTCHA solution:', solution);
await page.evaluate(token => {
const textarea = document.getElementById('g-recaptcha-response');
if (textarea) {
textarea.value = token;
textarea.innerHTML = token;
textarea.style.display = '';
textarea.dispatchEvent(new Event('input', { bubbles: true }));
}
}, solution);
const submitBtn = await page.$('body > main > form > fieldset > button');
if (submitBtn) {
await Promise.all([
page.waitForNavigation({ waitUntil: 'networkidle2' }),
submitBtn.click()
]);
console.log('Submit button clicked!');
} else {
console.log('Submit button not found!');
}
console.log('Page content after submission:', await page.content());
await browser.close();
} catch (error) {
console.error('Error:', error);
}
})();
分步说明
| 步骤 | 描述 |
|---|---|
| 1. 设置环境 | 使用npm安装puppeteer、node-fetch@2和dotenv。创建一个包含您的BrowserCloud和CapSolver API密钥的.env文件。 |
| 2. 定义solveCaptcha函数 | 该函数接受站点密钥和页面URL,为reCAPTCHA v2创建一个CapSolver任务,轮询解决方案(最多30次尝试,每次间隔2秒),并返回解决方案令牌。 |
| 3. 连接到BrowserCloud | 使用包含您的API令牌的BrowserCloud WebSocket端点使用puppeteer.connect。请注意,BrowserCloud的远程模式不支持createIncognitoBrowserContext,因此直接使用browser.newPage()。 |
| 4. 导航到目标页面 | 打开一个新页面并导航到带有reCAPTCHA v2的演示页面,等待网络空闲。 |
| 5. 提取站点密钥 | 使用page.$eval从.g-recaptcha元素检索data-sitekey属性。 |
| 6. 解决验证码 | 使用站点密钥和页面URL调用solveCaptcha以从CapSolver获取解决方案令牌。 |
| 7. 注入解决方案 | 将解决方案令牌注入g-recaptcha-response文本区域并分派输入事件以模拟用户交互。 |
| 8. 提交表单 | 定位提交按钮,单击它并等待导航以确保表单提交已处理。 |
| 9. 验证结果 | 打印页面内容以确认成功提交。 |
| 10. 关闭浏览器 | 关闭浏览器连接以释放资源。 |
注意: 原始代码在单击提交按钮后使用了page.waitForTimeout(3000),这可能无法可靠地等待导航。此示例通过使用page.waitForNavigation()来改进它,以确保页面在提交后已完全加载。
演示过程
本节描述脚本在带有reCAPTCHA v2复选框的演示页面上的执行情况:
- 连接到BrowserCloud: 脚本使用Puppeteer建立到BrowserCloud浏览器实例的连接。
- 导航到演示页面: 它加载reCAPTCHA v2演示页面(https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php)。
- 检测和提取站点密钥: 脚本识别reCAPTCHA元素并提取其站点密钥。
- 解决验证码: 它将站点密钥和页面URL发送到CapSolver,轮询后接收解决方案令牌。
- 注入令牌: 令牌被注入到
g-recaptcha-response文本区域,模拟成功的验证码验证。 - 提交表单: 脚本单击提交按钮,触发表单提交。
- 验证成功: 导航后,页面内容将被记录,显示成功提交(例如,确认消息)。
在实践中,您将观察浏览器导航到演示页面,reCAPTCHA复选框将自动被选中,并且表单将成功提交,所有这些都无需手动干预。
常见问题解答
| 问题 | 答案 |
|---|---|
| CapSolver支持哪些类型的验证码? | CapSolver支持reCAPTCHA v2/v3、Cloudflare Turnstile等等。有关详细信息,请参阅CapSolver文档。 |
| 如何获取BrowserCloud和CapSolver的API密钥? | 在BrowserCloud和CapSolver注册以在注册后获取您的API密钥。 |
| 我可以将此集成与Selenium或Playwright一起使用吗? | 是的,您可以通过修改浏览器控制和页面操作逻辑以匹配这些框架的API来调整Selenium或Playwright的集成。 |
| 如果CapSolver未能解决验证码会怎样? | 在您的脚本中实现重试逻辑或检查您的CapSolver帐户是否存在余额不足等问题。记录错误以进行调试。 |
| 我是否需要CapSolver的代理? | 此示例使用ReCaptchaV2TaskProxyless,但特定区域的验证码可能需要代理。BrowserCloud内置的代理轮换可以补充这一点。 |
结论
将CapSolver与BrowserCloud集成创建了一个强大的组合,用于自动化遇到验证码的Web任务。CapSolver的AI驱动的验证码解决确保您的BrowserCloud上的Puppeteer脚本可以绕过反机器人措施,而BrowserCloud的可扩展基础架构和代理支持增强了自动化的可靠性。这对于Web抓取、自动化测试和内容生成尤其有价值,因为验证码是常见的障碍。
要开始使用,请注册BrowserCloud和CapSolver,获取您的API密钥并实现提供的代码示例。浏览CapSolver文档和BrowserCloud文档以了解高级功能和其他任务类型。在您的下一个自动化项目中尝试此集成,并体验无缝、不间断的工作流程!
Browser用户奖励:充值CapSolver帐户时使用促销代码BROWSERCLOUD,即可获得独家6%的额外积分——无限制,无期限。
支持的浏览器和工具
- BrowserCloud: 支持Puppeteer、Selenium和Playwright,运行Chrome浏览器。
CapSolver:兼容任何支持 HTTP 的客户端,包括 Chrome 和 Firefox 的浏览器扩展程序。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

如何在进行网络爬虫时处理验证码
CAPTCHA挑战经常干扰网络爬虫流程。CapSolver提供API和浏览器扩展程序以解决多种CAPTCHA类型,帮助保持数据提取的流畅性并提高自动化效率。

Nikolai Smirnov
15-Dec-2025

最佳验证码破解扩展程序,适用于Chrome和Mozilla
CapSolver浏览器扩展程序可自动检测并解决Chrome和Firefox中的CAPTCHA挑战。它由先进的AI算法驱动,在后台无缝运行,无需任何编程技能。通过消除手动解决CAPTCHA,CapSolver帮助用户节省时间,提高生产力,并享受更流畅的浏览和自动化体验。

Nikolai Smirnov
15-Dec-2025

什么是reCAPTCHA?哪里有reCAPTCHA 示例?
本文全面概述了reCAPTCHA及其常见类型,并提供了一个实时演示,帮助您了解其工作原理。它还展示了如何使用CapSolver高效解决reCAPTCHA v2,从而提升自动化和开发流程,同时保持网站安全。

Rajinder Singh
15-Dec-2025

如何使用Botasaurus和CapSolver在Python中解决CAPTCHA(完整指南)
学习如何将Botasaurus(Python网络爬虫框架)与CapSolver API集成,以自动解决reCAPTCHA v2/v3和Turnstile。

Ethan Collins
15-Dec-2025

AdsPower:通过AdsPower浏览器解锁你的盈利潜力
在本文中,我们将向您展示什么是AdsPower以及他们提供的服务。

Rajinder Singh
15-Dec-2025

解决CAPTCHA 2026的最佳扩展是什么?
在日新月异的在线安全领域,CAPTCHA 挑战已成为互联网用户常见的障碍...

Nikolai Smirnov
12-Dec-2025

