2024 年使用 Playwright 解决 Cloudflare 问题

Ethan Collins
Pattern Recognition Specialist
10-Sep-2024

你知道,战胜障碍,尤其是那些像 Cloudflare 这样的数字守门人,总会带来一种特殊的快感。如果你曾经在尝试自动化网页任务时发现自己面对 Cloudflare 挑战,那你并不孤单。我曾经也无数次遇到过这种情况。但到了 2024 年,游戏规则发生了变化,工具也随之改变。让我带你了解一下我是如何用 Playwright 来应对 Cloudflare 的,当然,我们也会聊聊这个新出现的家伙——Cloudflare Turnstile。
Cloudflare 是什么,为什么重要
在我们深入探讨解决 Cloudflare 挑战的具体方法之前,让我们花点时间来了解一下我们所面临的挑战。Cloudflare 是一种强大的安全服务,被数百万个网站用来抵御恶意流量、DDoS 攻击和其他各种威胁。当它检测到异常行为时——比如自动脚本试图访问页面——它会抛出一个挑战,通常以 CAPTCHA 的形式出现,以验证你是人类而不是机器人。
但关键是:Cloudflare 已经不再仅仅抛出简单的 CAPTCHA 了。在 2024 年,他们推出了一种名为 Cloudflare Turnstile 的东西,这是一个更复杂、更适应性的挑战系统,旨在对自动化更加稳固。这是一个难以攻克的难题,但只要采用正确的方法,你仍然可以占上风。

難以克服反複出現的無法完全解決惱人的驗證碼問題?
使用 Capsolver AI 驱动的自动网页解锁技术,发现无缝自动验证码解决的乐趣!
領取你的 獎勵代碼,以獲得頂級的驗證碼解決方案;CapSolver: WEBS。兑换后,每次充值后你将獲得额外的 5% 奖励,无限次
为什么 Playwright 是 2024 年的最佳选择
你可能会想,“为什么选择 Playwright?为什么不坚持使用传统的 Selenium 或 Puppeteer?”这是一个合理的疑问。答案是 Playwright 已成为网页自动化的强大工具,它提供了一些功能,使它在应对 Cloudflare 提出的现代挑战(如 Turnstile CAPTCHA)方面尤其有效。
Playwright 支持多个浏览器上下文,这意味着你可以更有效地模拟不同的用户。它还提供了对浏览器行为的更多控制,使模拟真实用户交互变得更容易——这在处理 Cloudflare 的高级安全措施时至关重要。
入门:设置 Playwright
首先,如果你还没有安装 Playwright,你需要安装它。设置过程很简单:
bash
npm install playwright
安装完成后,你就可以开始自动化你的网页任务了。但如果你想绕过 Cloudflare 挑战,尤其是他们的新 Turnstile CAPTCHA,我们需要采取一些额外的步骤。我们将利用 CapSolver,一个专为解决 Turnstile 等 CAPTCHA 而设计的第三方 API,并将其与 Playwright 集成,以访问受 Cloudflare 保护的网站。
第一步:获取 SiteKey
使用 Turnstile CAPTCHA 时,你将遇到的第一个障碍是从网页获取 siteKey
。这个密钥对于 CapSolver 处理 CAPTCHA 并为你提供有效令牌至关重要。
你可以通過檢查網頁的源代碼來提取 siteKey
,或者,爲了簡化操作,你可以使用 CapSolver 扩展程序。它会自动检测页面上的 CAPTCHA 参数。有关如何设置它的详细指南,请查看我们的博客文章:识别 Cloudflare Turnstile 参数。
獲得 siteKey
後,就可以進行下一步了。
第二步:调用 CapSolver API 来解决 CAPTCHA
有了 siteKey
,就可以使用 CapSolver 的 API 来解决 Turnstile CAPTCHA 并获取有效令牌了。这个令牌将允许我们绕过挑战,并继续进行我们的网页抓取或自动化任务。
以下是一個使用 axios 和 Playwright 与 CapSolver 交互的代码示例:
javascript
const axios = require('axios');
const playwright = require("playwright");
const api_key = "YOUR_API_KEY"; // 你的 CapSolver API 密钥
const site_key = "0xxxxxx"; // 你获取的 siteKey
const site_url = "https://xxx.xxx.xxx/xxx"; // 目标网站 URL
const proxy = "http://xxx:[email protected]:x"; // 可选:如果需要,使用你的代理
async function solveCaptcha() {
const payload = {
clientKey: api_key,
task: {
type: 'AntiTurnstileTaskProxyLess',
websiteKey: site_key,
websiteURL: site_url,
metadata: {
action: '', // 可选,如果需要,请指定
type: "turnstile"
}
}
};
try {
const res = await axios.post("https://api.capsolver.com/createTask", payload);
const task_id = res.data.taskId;
if (!task_id) {
console.log("无法创建任务:", res.data);
return;
}
console.log("任务已创建,等待令牌...");
while (true) {
await new Promise(resolve => setTimeout(resolve, 1000)); // 等待 1 秒后再检查
const getResultPayload = {clientKey: api_key, taskId: task_id};
const resp = await axios.post("https://api.capsolver.com/getTaskResult", getResultPayload);
if (resp.data.status === "ready") {
console.log("CAPTCHA 已解决,令牌已收到:", resp.data.solution.token);
return resp.data.solution.token;
}
if (resp.data.status === "failed" || resp.data.errorId) {
console.log("CAPTCHA 解决失败!响应:", resp.data);
return;
}
}
} catch (error) {
console.error("解决 CAPTCHA 时出错:", error);
}
}
在这段代码中,我们通过向 CapSolver 的 API 发送 POST 请求来创建任务,并将 siteKey
和我们想要访问的网站的 URL 传递过去。任务创建完成后,我们将持续检查狀態,直到 CapSolver 返回一个解决方案令牌。这个令牌将用于向 Cloudflare 证明我们是人类。
第三步:使用 Playwright 注入 CAPTCHA 令牌
现在我们已经有了 CAPTCHA 令牌,需要将其作为 cookie 注入到会话中,使用 Playwright。这将允许我们在不被 Cloudflare 的保护阻止的情况下浏览网站。以下是操作方法:
javascript
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
async function accessSiteWithToken(){
let clearanceCookie;
// 解决 CAPTCHA 并获取令牌
await solveCaptcha().then(token => {
clearanceCookie = token;
});
const browser = await playwright.chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await wait(500);
// 将令牌作为 cookie 注入
await page.setCookie({
name: "cf_clearance",
value: clearanceCookie,
url: site_url, // 确保与目标 URL 相匹配
domain: "xx.xx.xx" // 根据实际网站调整域
});
await wait(500);
// 设置 cookie 后,导航到网站
await page.goto(site_url);
// 现在你可以自由地抓取内容或与页面交互
console.log("成功访问网站!");
await browser.close();
}
// 运行脚本以访问网站
accessSiteWithToken().then();
最後的想法
Cloudflare 无疑使在 2024 年抓取网站或自动化任务变得更加困难,但借助 Playwright 和 CapSolver 等工具,这个挑战并非不可能克服。Playwright 模拟真实用户交互的能力,加上 CapSolver 的 CAPTCHA 解决 API,提供了一种强大方法来绕过这些障碍,而且毫不费力。
當然,始終要注意確保你遵守合法和合乎道德的抓取實踐。一些網站對自動訪問有嚴格的政策,因此在進行操作之前,請確保了解這些政策。
在不断发展的网页自动化世界中,关键是要保持领先地位——而 Playwright 和 CapSolver 可以帮助你做到这一点。
合規聲明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合規的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隱私政策。
更多

如何解决任何版本的reCAPTCHA Enterprise v2、v2不可见、v3、v3企业版0.9分
掌握使用CapSolver解决任何reCaptcha版本的技巧:本指南提供逐步教程,有效解决reCaptcha,确保每次都能獲得准确的结果。

Ethan Collins
11-Oct-2025

如何解決圖片驗證碼
这篇博客文章提供了一个全面的指南,介绍如何使用CapSolver工具来解决图片验证码,该工具旨在自动化这一流程。文章首先解释了什么是图片验证码,然后详细分步介绍了如何使用CapSolver的API来解决这些验证码。指南中包含了涉及该过程的请求和响应示例。文章最后指出使用CapSolver解决图片验证码的效率和便利性,使其成为那些希望自动化涉及验证码解决任务的不可或缺的資源。

Ethan Collins
11-Oct-2025

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

Ethan Collins
11-Oct-2025

解决 reCaptcha v3
学习使用CapSolver解决reCaptcha V3:多种任务类型、简单的API集成以及自动化和测试的有效解决方案

Ethan Collins
10-Oct-2025

2025年进行网页爬取时最佳的AWS WAF解决方案是什么?
学习如何在2025年使用CapSolver高效解决AWS WAF CAPTCHA。分步指南,Python集成,AI驱动的求解器,提升您的自动化工作流程。轻松应对动态令牌、行为分析和复杂的CAPTCHA挑战。

Lucas Mitchell
26-Sep-2025

如何在Crawl4AI中通過CapSolver集成解決驗證碼
与Crawl4AI & CapSolver的无缝网络爬取:自动化验证码解决方案、提升的效率以及强大的AI数据提取。

Ethan Collins
26-Sep-2025