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

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% 奖励,无限次
实现步骤:
- 注册一个 CapSolver 帐户。
- 将 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 会修改浏览器的指纹和行为,以最大限度地减少检测机会。
实现步骤:
- 下载一个未检测到的 ChromeDriver 包,例如 undetected-chromedriver。
- 将 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 的一个扩展,它增强了网页爬取的功能和易用性。 它简化了网页交互的管理并更有效地自动化复杂的任务。
实现步骤:
-
通过 pip 安装 SeleniumBase:
bashpip install seleniumbase
-
使用 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% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

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