如何自动解决 Cloudflare Turnstile 以进行网页抓取

Lucas Mitchell
Automation Engineer
27-Sep-2024

Cloudflare 的 Turnstile CAPTCHA 对网页爬虫和自动化工具来说是一个重大的障碍。作为一项安全功能,它确保对网站发出的请求是合法的,防止恶意机器人访问受保护的内容。然而,对于合法的自动化和网页抓取任务,解决 Cloudflare Turnstile CAPTCHA 对维护工作流程的顺利进行至关重要。
在本指南中,我们将探讨在网页爬虫中处理 Cloudflare Turnstile CAPTCHA 的策略,并讨论使用 Puppeteer 和 CapSolver 在 Python 中自动解决它的技术。
什么是 Cloudflare Turnstile CAPTCHA?
Cloudflare Turnstile CAPTCHA 是一种复杂的反机器人机制。与需要用户解决谜题或点击图像的传统 CAPTCHA 挑战不同,Turnstile 采用不可见的安全检查来识别请求来自机器人还是真实用户,而不会中断用户体验。
此 CAPTCHA 使用以下因素的组合:
- 用户行为:表明类似机器人的或类似人类的活动的模式。
- IP 信誉:IP 地址的历史记录,包括是否被标记为可疑活动。
- 浏览器指纹:有关用于访问网站的浏览器和系统的信息。
对于网页爬虫和抓取工具,Turnstile CAPTCHA 会阻止您的脚本完成其任务。要继续有效地爬取,您需要自动解决此 CAPTCHA。
附加代码
领取您的 附加代码 以获取顶级验证码解决方案;CapSolver: WEBS。兑换后,您每次充值后将获得额外 5% 的奖励,无限使用
网页爬虫的挑战
Cloudflare Turnstile CAPTCHA 被设计为对大多数常见的自动化尝试具有弹性。网页抓取工具在尝试访问受保护的内容时经常会遇到此 CAPTCHA,导致访问被拒绝或数据收集不完整。手动解决此挑战对于大规模抓取来说是不可行的,因此自动化至关重要。
解决 Cloudflare Turnstile CAPTCHA 的典型方法包括:
- 模拟类似人类的交互,以避免触发 CAPTCHA。
- 通过住宅代理或数据中心代理轮换 IP 地址。
- 使用第三方 CAPTCHA 解决服务在出现挑战时解决它们。
让我们探索您可以用来实现此目的的工具。
用于自动化 Cloudflare Turnstile CAPTCHA 的工具和库
要在您的网页爬虫中解决 Cloudflare Turnstile CAPTCHA,您需要将抓取工具、代理和 CAPTCHA 解决服务结合使用。以下是一个细分:
-
网页抓取库:
- 像 Selenium、Puppeteer 或 Playwright 这样的工具通常用于自动化浏览器并与网页进行交互。它们允许您处理 JavaScript 密集型网站并通过基本的机器人检测措施。
- 特别是 Puppeteer 是一个 Node.js 库,它提供高级 API 来控制 Chrome 或 Chromium 浏览器。它非常适合在抓取任务中管理浏览器会话,尤其是在处理 CAPTCHA 时。
-
代理:
- 住宅代理或轮换代理对于模拟不同的用户并防止 IP 被封禁或限制至关重要。代理通过多个 IP 分发请求,以避免触发像 Turnstile 这样的反机器人措施。
- 轮换代理动态地为每个请求分配不同的 IP,使 Cloudflare 更难识别抓取行为中的模式。
-
CAPTCHA 解决服务:
- 像 CapSolver 这样的服务旨在自动解决 CAPTCHA 挑战。这些服务与网页抓取工具集成,可以通过提供绕过 CAPTCHA 所需的令牌来实时解决 Cloudflare Turnstile CAPTCHA,无需人工干预。
如何使用 Puppeteer 和 CapSolver 解决 Cloudflare Turnstile CAPTCHA
在本例中,我们将演示如何使用 Puppeteer 和 CapSolver 解决 Cloudflare Turnstile CAPTCHA。
先决条件
确保您已安装以下内容:
- Puppeteer:
npm install puppeteer
- Axios:
npm install axios
(用于发出 API 请求)
分步指南
javascript
const puppeteer = require('puppeteer');
const axios = require('axios');
const clientKey = 'your-client-key-here'; // 替换为您的 CapSolver 客户端密钥
const websiteURL = 'https://example.com'; // 替换为您的目标网站 URL
const websiteKey = 'your-site-key-here'; // 替换为目标网站的站点密钥
// 用于创建解决 Turnstile CAPTCHA 任务的函数
async function createTask() {
const response = await axios.post('https://api.capsolver.com/createTask', {
clientKey: clientKey,
task: {
type: "AntiTurnstileTaskProxyLess",
websiteURL: websiteURL,
websiteKey: websiteKey
}
}, {
headers: {
'Content-Type': 'application/json',
'Pragma': 'no-cache'
}
});
return response.data.taskId;
}
// 用于检索任务结果的函数
async function getTaskResult(taskId) {
let response;
while (true) {
response = await axios.post('https://api.capsolver.com/getTaskResult', {
clientKey: clientKey,
taskId: taskId
}, {
headers: {
'Content-Type': 'application/json'
}
});
if (response.data.status === 'ready') {
return response.data.solution;
}
console.log('解决方案尚未准备好,将在 5 秒后再次检查...');
await new Promise(resolve => setTimeout(resolve, 5000));
}
}
// 用于自动浏览和解决 CAPTCHA 的主 Puppeteer 脚本
(async () => {
const taskId = await createTask();
const result = await getTaskResult(taskId);
let solution = result.token;
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto(websiteURL);
await page.waitForSelector('input[name="cf-turnstile-response"]');
// 将 CAPTCHA 解决方案令牌插入表单
await page.evaluate(solution => {
document.querySelector('input[name="cf-turnstile-response"]').value = solution;
}, solution);
// 为验证目的截取页面的屏幕截图
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
为 Turnstile 设置网页抓取环境
为了确保抓取顺利进行而不会被打断,拥有一个配置良好的环境很重要:
-
无头浏览器:使用像 Puppeteer 或 Playwright 这样的无头浏览器来模拟人类行为,同时保持轻量级。这些工具可以处理 JavaScript 渲染、表单提交和动态内容。
-
代理轮换:实施 代理轮换 避免被封禁。住宅代理比数据中心代理不太可能被标记。您还可以集成像 IPRoyal 这样的代理提供商以获得可靠的代理服务。
-
会话管理:尽可能维护和重用浏览器会话,以避免通过反复登录或触发安全机制而引起怀疑。
-
CAPTCHA 解决程序:利用像 CapSolver 这样的 CAPTCHA 解决服务来解决复杂的 CAPTCHA 挑战。这些服务提供处理幕后 CAPTCHA 解决的 API,允许您的抓取工具继续其工作流程。
结论
解决 Cloudflare Turnstile CAPTCHA 对于需要不间断访问数据的合法网页爬取任务至关重要。将像 Puppeteer 这样的网页自动化库、代理和像 CapSolver 这样的第三方 CAPTCHA 解决程序结合起来,可以帮助您有效地克服这一挑战。有了合适的工具和策略,您的抓取工具可以继续有效地收集数据,无需人工干预。
关于合规性的说明
**重要:**在进行网页抓取时,务必遵守法律和道德准则。始终确保您有权抓取目标网站,并尊重网站的
robots.txt
文件和服务条款。CapSolver 强烈反对将其服务滥用于任何不合规的活动。未经授权使用自动化工具绕过 CAPTCHA 会导致法律后果。确保您的抓取活动符合所有适用的法律法规,以避免潜在的问题。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

2025 年使用 Python 和 Go 解决 Cloudflare 问题
将分享关于 Cloudflare Turnstile 的见解,使用 Python 和 Go 完成这些任务,包括 Turnstile 是否能检测 Python 爬虫以及如何使用 CapSolver 等解决方案有效地绕过它。

Ethan Collins
05-Nov-2024

如何使用 Selenium 解决 Cloudflare Turnstile 验证码
在本博客中,我们将讨论几种使用 Selenium 克服 Cloudflare Turnstile Captcha 的有效技术。

Ethan Collins
11-Oct-2024

使用 Java 进行网页自动化时,解决 Cloudflare Turnstile 验证码的指南
学习如何在Java中自动化网页交互,并使用实际工具和编码技巧绕过Cloudflare Turnstile CAPTCHA。

Ethan Collins
08-Oct-2024

如何自动解决 Cloudflare Turnstile 以进行网页抓取
我们将探索在网页抓取中处理 Cloudflare Turnstile CAPTCHA 的策略,并讨论使用 Puppeteer 和 CapSolver 在 Python 中自动化解决它的技术。

Lucas Mitchell
27-Sep-2024

如何使用 C# 解决 Cloudflare Turnstile CAPTCHA 挑战
您将了解如何使用 C#轻松解决 Cloudflare Turnstile 的 CAPTCHA 挑战,并想知道具体细节?开始吧!

Emma Foster
17-Sep-2024

如何解决 Cloudflare | 使用 Puppeteer 和 Node.JS
我们将探讨如何使用 Puppeteer 和 Node.js,以及借助验证码解决工具,有效地解决类似 Cloudflare Turnstile 的挑战。

Nikolai Smirnov
22-Aug-2024