产品集成资源文档定价
立即开始

© 2026 CapSolver. All rights reserved.

联系我们

Slack: lola@capsolver.com

产品

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • 浏览器插件
  • 更多验证码类型

集成

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • 合作伙伴
  • 查看所有集成

资源

  • 推荐返佣系统
  • 官方文档
  • API 参考
  • 博客
  • 常见问题 (FAQ)
  • 术语表
  • 系统状态

法律声明

  • 服务条款
  • 隐私政策
  • 退款政策
  • 请勿出售我的信息
博客/Cloudflare/2024 年使用 Playwright 解决 Cloudflare 问题
Sep12, 2024

2024 年使用 Playwright 解决 Cloudflare 问题

Ethan Collins

Ethan Collins

Pattern Recognition Specialist

你知道,战胜障碍,尤其是那些像 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 Copy
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 Copy
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:xxx@x.x.x.x: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 Copy
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 可以帮助你做到这一点。

查看更多

CloudflareMar 26, 2026

解决Cloudflare错误1005:网页抓取指南与解决方案

学习修复Cloudflare错误1005访问被拒绝的网络爬虫问题。发现解决方案如住宅代理、浏览器指纹识别和CapSolver验证码解决方法。优化您的数据提取。

Nikolai Smirnov
Nikolai Smirnov
CloudflareMar 17, 2026

如何在AI工作流中使用Playwright隐身模式处理Cloudflare Turnstile

了解如何通过使用Playwright隐身技术以及CapSolver实现可靠的验证码解决,从而有效处理AI工作流中的Cloudflare Turnstile。学习实用的集成策略和最佳实践,以实现无缝自动化。

Nikolai Smirnov

目录

Nikolai Smirnov
CloudflareFeb 04, 2026

如何在网页爬取时解决Cloudflare防护

学习在网页爬取时如何绕过Cloudflare的防护措施。探索如IP轮换、TLS指纹识别和CapSolver等经过验证的方法,以应对挑战。

Aloísio Vítor
Aloísio Vítor
CloudflareJan 19, 2026

如何通过Cloudflare验证你是人类而不被困

卡在“验证你是人类”或“Cloudflare Challenge”?了解常见原因并发现自动化系统每次都能通过验证的技术解决方案。

Lucas Mitchell
Lucas Mitchell