如何使用 Puppeteer 解决 reCAPTCHA 并提高成功率

Emma Foster
Machine Learning Engineer
16-Aug-2024
CAPTCHAs,尤其是 reCAPTCHAs,是网站常用的安全措施,用于区分真人用户和自动化机器人。尽管 CAPTCHAs 在防止滥用方面至关重要,但对于从事网络爬虫或自动化测试的开发者来说,它们可能会成为一大障碍。幸运的是,Puppeteer 等工具结合 CAPTCHA 解决服务,可以有效地绕过这些挑战。今天我们将探讨如何使用 Puppeteer 作为 reCAPTCHA 解决方案,并将其集成到您的工作流程中。
什么是 Puppeteer?
Puppeteer 是一个 Node.js 庫,它提供了一个高级 API 用于控制 Chrome 或 Chromium 浏览器。Puppeteer 主要用于自动化测试、抓取网页以及从网页生成 PDF 等任务。Puppeteer 非常适合用于浏览网站、点击按钮,甚至处理复杂的 JavaScript 应用程序。
reCAPTCHA 的挑战
reCAPTCHA 是一种更加复杂的 CAPTCHA,旨在阻止机器人访问网络服务。它通常要求用户识别图像中的对象,或者仅仅点击一个复选框。对于机器人而言,这些任务在没有合适工具的情况下是非常具有挑战性的。
当使用 Puppeteer 进行网络爬虫或自动化时,遇到 reCAPTCHA 可能会阻止整个过程的进行。为继续操作,您需要一种能够以编程方式解决 reCAPTCHA 的方法。
使用 Puppeteer 解决 reCAPTCHA
要使用 Puppeteer 解决 reCAPTCHA,您可以采用多种方法。以下是最有效的几种方法概述:
- 手動繞過:
这种方法涉及使用 Puppeteer 的交互模式手动解决 CAPTCHA。这种方法适合测试,但对于大规模自动化并不实用。
- 第三方 CAPTCHA 解决方案:
最有效的以编程方式处理 reCAPTCHA 的方法是使用第三方 CAPTCHA 解决服务,例如 CapSolver。这些服务提供 API,可以为您解决 reCAPTCHA,并返回您可以提交给网站的响应令牌。
- 自定義解決方案:
对于高级用户,可以使用机器学习模型创建自定义的 reCAPTCHA 解决系统。然而,这需要大量資源和专业知识。
使用第三方 CAPTCHA 解决方案与 Puppeteer 集成
让我们重点介绍如何将第三方 CAPTCHA 解决方案与 Puppeteer 集成。以下是使用 CapSolver 解决 reCAPTCHA的分步指南。
1. 安装所需依赖项:
首先,确保已安装 Puppeteer 和 axios
庫,axios
将用于向 CAPTCHA 解决服务发出 HTTP 请求。
bash
npm install puppeteer axios
2. 设置 Puppeteer:
启动 Puppeteer 并导航到需要解决 reCAPTCHA 的目标网站。
javascript
const puppeteer = require('puppeteer');
async function solveRecaptcha(url) {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto(url);
// 其他 Puppeteer 逻辑代码
}
solveRecaptcha('https://example.com');
3. 请求 reCAPTCHA 解决方案:
使用 axios
向 CapSolver 的 API 发送请求以解决 reCAPTCHA。
javascript
const axios = require('axios');
async function getCaptchaSolution(siteKey, pageUrl, apiKey) {
const response = await axios.post('https://api.capsolver.com/createTask', {
clientKey: apiKey,
task: {
type: 'ReCaptchaV2Task',
websiteURL: pageUrl,
websiteKey: siteKey,
},
});
const taskId = response.data.taskId;
let solution = '';
// 轮询以获取解决方案
while (!solution) {
const result = await axios.post('https://api.capsolver.com/getTaskResult', {
clientKey: apiKey,
taskId: taskId,
});
if (result.data.status === 'ready') {
solution = result.data.solution.gRecaptchaResponse;
} else {
await new Promise((resolve) => setTimeout(resolve, 5000)); // 等待5秒钟后重试
}
}
return solution;
}
4. 注入 CAPTCHA 解决方案:
獲取解決方案後,將其注入頁面並提交表單。
javascript
const siteKey = 'SITE_KEY';
const pageUrl = 'https://example.com';
const apiKey = 'YOUR_CAPSOLVER_API_KEY';
const captchaSolution = await getCaptchaSolution(siteKey, pageUrl, apiKey);
await page.evaluate((captchaSolution) => {
document.querySelector('#g-recaptcha-response').innerHTML = captchaSolution;
document.querySelector('form').submit();
}, captchaSolution);
5. 完成流程:
關閉浏覽器或繼續進行下一個自動化步驟。
javascript
await browser.close();
高級技術
对于更高级的用例,可以考虑将 Puppeteer 与 undetected-chromedriver
工具结合使用以避免检测,或者使用 Playwright 库作为替代方案。Playwright 提供了与 Puppeteer 类似的功能,但提供了更高级的浏览器自动化功能,包括对多浏览器的支持以及更好地处理动态内容和 CAPTCHA 等网络抓取挑战。
結論
通过 Puppeteer 解决 reCAPTCHA 可以显著简化您的自动化和网络爬虫任务。通过利用 CapSolver 等第三方 CAPTCHA 解决服务,您可以有效绕过这些安全措施。无论您是进行数据抓取还是自动化交互,本指南为您集成 reCAPTCHA 解决方案到您的 Puppeteer 项目中提供了必要的基础。
請記住,務必負責任地使用這些工具,並確保您的活動符合您所交互網站的法律和道德標准。
合規聲明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合規的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隱私政策。
更多

如何解决隐形reCAPTCHA v2
本博客是关于如何使用Capsolver解决reCaptcha v2隐形版的全面指南。它提供了从向Capsolver提交必要信息到验证结果的分步教程。本博客设计得易于理解和遵循,使在您的网站上实施和解决reCaptcha v2隐形版的流程变得快速且高效。这是一份独特且详尽的指南,确保读者能够深入理解整个过程,杜绝抄袭。

Ethan Collins
11-Oct-2025

如何解决reCaptcha v3企业版
使用Capsolver轻松解决reCAPTCHA v3 Enterprise:这是您应对复杂验证码,进行高级风险分析和无缝集成的关键。

Ethan Collins
24-Sep-2025

如何找到reCaptcha的回調函數
查找 reCAPTCHA 的回调函数需要识别在成功解决 reCAPTCHA 后执行的 JavaScript 函数。以下是您可能采取的步骤的简要预览。

Ethan Collins
23-Sep-2025

如何解决reCaptcha v2
本文将教您什么是reCaptcha以及如何使用CapSolver轻松解决reCaptcha v2。

Ethan Collins
23-Sep-2025

如何解决reCaptcha v3并获得接近人类水平(>0.7–0.9)的分数
使用Capsolver高效解决reCaptcha v3。本指南涵盖从设置到解决验证码的全部内容,确保获得高分和流畅的网页浏览体验。

Ethan Collins
23-Sep-2025

验证码解答器 | 自动解决浏览器中的验证码
本文將向您展示如何在浏覽器上解決reCaptcha。

Ethan Collins
23-Sep-2025