CAPSOLVER
博客
如何自动解决Cloudflare Turnstile以进行网页爬取

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

Logo of CapSolver

Lucas Mitchell

Automation Engineer

27-Sep-2024

Cloudflare 的 Turnstile CAPTCHA 对网页爬虫和自动化工具来说是一个重大的障碍。作为一项安全功能,它确保对网站发出的请求是合法的,防止恶意机器人访问受保护的内容。然而,对于合法的自动化和网页抓取任务,解决 Cloudflare Turnstile CAPTCHA 对维护工作流程的顺利进行至关重要。

在本指南中,我们将探讨在网页爬虫中处理 Cloudflare Turnstile CAPTCHA 的策略,并讨论使用 PuppeteerCapSolver 在 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 解决服务结合使用。以下是一个细分:

  1. 网页抓取库

    • SeleniumPuppeteerPlaywright 这样的工具通常用于自动化浏览器并与网页进行交互。它们允许您处理 JavaScript 密集型网站并通过基本的机器人检测措施。
    • 特别是 Puppeteer 是一个 Node.js 库,它提供高级 API 来控制 Chrome 或 Chromium 浏览器。它非常适合在抓取任务中管理浏览器会话,尤其是在处理 CAPTCHA 时。
  2. 代理

    • 住宅代理或轮换代理对于模拟不同的用户并防止 IP 被封禁或限制至关重要。代理通过多个 IP 分发请求,以避免触发像 Turnstile 这样的反机器人措施。
    • 轮换代理动态地为每个请求分配不同的 IP,使 Cloudflare 更难识别抓取行为中的模式。
  3. CAPTCHA 解决服务

    • CapSolver 这样的服务旨在自动解决 CAPTCHA 挑战。这些服务与网页抓取工具集成,可以通过提供绕过 CAPTCHA 所需的令牌来实时解决 Cloudflare Turnstile CAPTCHA,无需人工干预。

如何使用 Puppeteer 和 CapSolver 解决 Cloudflare Turnstile CAPTCHA

在本例中,我们将演示如何使用 Puppeteer 和 CapSolver 解决 Cloudflare Turnstile CAPTCHA。

先决条件

确保您已安装以下内容:

  • Puppeteernpm install puppeteer
  • Axiosnpm 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 设置网页抓取环境

为了确保抓取顺利进行而不会被打断,拥有一个配置良好的环境很重要:

  1. 无头浏览器:使用像 PuppeteerPlaywright 这样的无头浏览器来模拟人类行为,同时保持轻量级。这些工具可以处理 JavaScript 渲染、表单提交和动态内容。

  2. 代理轮换:实施 代理轮换 避免被封禁。住宅代理比数据中心代理不太可能被标记。您还可以集成像 IPRoyal 这样的代理提供商以获得可靠的代理服务。

  3. 会话管理:尽可能维护和重用浏览器会话,以避免通过反复登录或触发安全机制而引起怀疑。

  4. CAPTCHA 解决程序:利用像 CapSolver 这样的 CAPTCHA 解决服务来解决复杂的 CAPTCHA 挑战。这些服务提供处理幕后 CAPTCHA 解决的 API,允许您的抓取工具继续其工作流程。

结论

解决 Cloudflare Turnstile CAPTCHA 对于需要不间断访问数据的合法网页爬取任务至关重要。将像 Puppeteer 这样的网页自动化库、代理和像 CapSolver 这样的第三方 CAPTCHA 解决程序结合起来,可以帮助您有效地克服这一挑战。有了合适的工具和策略,您的抓取工具可以继续有效地收集数据,无需人工干预。

关于合规性的说明

**重要:**在进行网页抓取时,务必遵守法律和道德准则。始终确保您有权抓取目标网站,并尊重网站的 robots.txt 文件和服务条款。CapSolver 强烈反对将其服务滥用于任何不合规的活动。未经授权使用自动化工具绕过 CAPTCHA 会导致法律后果。确保您的抓取活动符合所有适用的法律法规,以避免潜在的问题。

合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。

更多