CAPSOLVER
博客
如何使用 Selenium 解决 Cloudflare Turnstile 验证码

如何使用 Selenium 解决 Cloudflare Turnstile 验证码

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

11-Oct-2024

您的网页爬虫是否因 Cloudflare 阻止请求而苦苦挣扎? Cloudflare 的 Turnstile 验证码旨在识别和阻止自动化流量,这为网页爬取和自动化带来了巨大的挑战。 但是,通过利用 Selenium 之类的无头浏览器,您可以有效地克服这些障碍。 也就是说,标准 Selenium 设置仍然可能会触发 Cloudflare 的复杂反机器人防御机制。

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

了解 Cloudflare Turnstile 验证码

Cloudflare Turnstile 验证码是旨在区分人类用户和自动化机器人的高级挑战。 与传统的 CAPTCHA 不同,Turnstile 利用各种基于行为和交互的评估,例如分析鼠标移动、点击模式和其他交互指标,以确定用户的合法性。

为什么选择 Selenium?

Selenium 是一个强大的网页浏览器自动化工具,它允许您模拟用户操作,例如点击、表单提交和导航。 但是,由于其自动化的性质,传统的 Selenium 设置仍然可能被 Cloudflare 的安全系统标记。 为了有效地管理 Turnstile 验证码,将 Selenium 与其他工具和技术集成可以显着提高您的网页爬取成功率。

使用 Selenium 解决 Cloudflare Turnstile 验证码的有效技术

1. 实现 CapSolver

解决 CAPTCHA 的最有效方法之一是利用像 CapSolver 这样的 CAPTCHA 解决服务。 该服务利用先进的算法和人工解算器来快速准确地解决各种 CAPTCHA 类型,包括 Cloudflare Turnstile。

奖励代码

难以完全解决令人讨厌的验证码的重复失败?

使用 Capsolver 人工智能驱动的自动网页解锁技术发现无缝自动验证码解决!

领取您的奖励代码,以获取顶级的验证码解决方案;CapSolver: WEBS。 兑换后,每次充值后您将获得额外的 5% 奖励,无限次

实现步骤:

  1. 注册一个 CapSolver 帐户
  2. 将 CapSolver 的 API 集成到您的 Selenium 脚本中。

示例代码:

python 复制代码
# pip install requests
import requests
import time
 
api_key = "YOUR_API_KEY"  # 您的 capsolver api 密钥
site_key = "0x4XXXXXXXXXXXXXXXXX"  # 您目标网站的站点密钥
site_url = "https://www.yourwebsite.com"  # 您目标网站的页面网址
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'AntiTurnstileTaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url,
            "metadata": {
                "action": ""  # 可选
            }
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")
 
    while True:
        time.sleep(1)  # 延迟
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('token')
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
token = capsolver()
print(token)

在此代码中,将 YOUR_API_KEY、0x4XXXXXXXXXXXXXXXXX 和 https://www.yourwebsite.com 分别替换为您的实际 CapSolver API 密钥、目标网站的站点密钥以及您要定位的页面的 URL。 此脚本将创建一个任务来解决 Turnstile 验证码并返回解决方案令牌。

2. 使用未检测到的 ChromeDriver

为了避免被 Cloudflare 检测到,使用 ChromeDriver 的未检测版本至关重要。 Cloudflare 的反机器人系统可以轻松识别标准 ChromeDriver 实例,从而导致 CAPTCHA 挑战。 未检测到的 ChromeDriver 会修改浏览器的指纹和行为,以最大限度地减少检测机会。

实现步骤:

  1. 下载一个未检测到的 ChromeDriver 包,例如 undetected-chromedriver
  2. 将 Selenium 配置为使用此修改后的版本。

示例代码:

python 复制代码
from undetected_chromedriver.v2 import Chrome, ChromeOptions

options = ChromeOptions()
options.add_argument('--headless')  # 如果需要,使用无头模式
driver = Chrome(options=options)

driver.get('https://example.com')
# 执行必要的操作并处理 CAPTCHA

3. 利用 SeleniumBase

SeleniumBase 是 Selenium 的一个扩展,它增强了网页爬取的功能和易用性。 它简化了网页交互的管理并更有效地自动化复杂的任务。

实现步骤:

  1. 通过 pip 安装 SeleniumBase:

    bash 复制代码
    pip install seleniumbase
  2. 使用 SeleniumBase 的功能来管理网页交互并处理 CAPTCHA。

示例代码:

python 复制代码
from seleniumbase import BaseCase

class MyTestClass(BaseCase):
    def test_example(self):
        self.open('https://example.com')
        # 执行必要的操作并处理 CAPTCHA

4. 使用 Selenium Stealth 插件

Selenium Stealth 插件有助于掩盖您的自动化工作,使 Cloudflare 更难检测到机器人使用情况。 此插件会修改浏览器行为以模拟真实的用

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

更多