如何解决 Cloudflare Turnstile 验证码:最佳验证码解决方案

Emma Foster
Machine Learning Engineer
16-Jul-2024

Cloudflare Turnstile 是一种安全功能,旨在通过要求用户在访问网站之前解决一个挑战来保护网站免受自动化滥用。虽然这个工具对于维护网站的完整性和安全性至关重要,但对于那些从事合法网络抓取或自动化任务的人来说,它可能会构成一个显著的障碍。在本文中,我们将探讨解决 Cloudflare Turnstile 的最佳解决方案,确保您的操作保持不中断和高效。
奖励代码
领取您的奖励代码以获取顶级验证码解决方案;CapSolver: WEBS。兑换后,您将在每次充值后获得额外 5% 的奖励,无限制。
了解 Cloudflare Turnstile
在深入研究解决方案之前,了解 Cloudflare Turnstile 是什么以及它如何工作是至关重要的。
首先,让我们看看背景,Turnstile 是 Cloudflare 提供的一项功能,Cloudflare 是一家以其网络性能和在线安全服务而闻名的公司,目前非常主流。而 Turnstile 是一个工具,它因不同原因阻止用户访问,覆盖了所有自动化流量。对于网络抓取活动来说,这是一个巨大的新挑战,因为 Cloudflare 引入了一个先进的网络安全系统,我估计目前有四分之一的网站在使用。
Cloudflare Turnstile 如何工作
Turnstile 是 Cloudflare 的 CDN(内容分发网络)的一部分,充当反向代理。这意味着用户必须通过 Cloudflare 的服务器访问网络内容,这些服务器充当看门人,决定谁可以进入,谁不可以。当 Turnstile 想要限制网络访问时,它会向访客呈现一个验证码形式的挑战。如果挑战成功解决,Turnstile 可能会允许您访问您尝试访问的页面内容。
Cloudflare Turnstile 使用多种技术来检测和缓解自动化工具或机器人。以下是它采用的一些关键方法和技术:
- 行为分析
Turnstile 分析用户与网站的交互,如鼠标移动、按键和触摸事件。人类用户在交互中的模式是独特的,机器人很难准确模仿。
- 浏览器指纹
Turnstile 收集有关浏览器和设备特征的信息,包括用户代理字符串、屏幕分辨率、安装的插件等。这些数据有助于为每个用户创建一个独特的指纹,使识别和阻止机器人变得更容易。
- 异常检测
Turnstile 使用机器学习模型来检测用户行为和请求中的异常。这些模型在大型数据集上进行训练,以根据模式和偏差区分合法用户和机器人。
- 挑战-响应测试
Turnstile 可以部署各种类型的挑战-响应测试,如 CAPTCHA,以验证用户是否为人类。这些测试设计为对人类容易,但对机器人具有挑战性。
- 速率限制
Turnstile 监控来自单个 IP 地址或用户会话的请求速率。高频请求通常表明机器人活动,Turnstile 可以相应地应用速率限制或阻止请求。
- IP 信誉
Turnstile 将传入请求的 IP 地址与已知恶意 IP 地址的数据库进行检查。来自有恶意活动历史的 IP 的请求更有可能被标记为机器人。
- JavaScript 挑战
Turnstile 可以发布需要浏览器执行某些脚本的 JavaScript 挑战。机器人通常无法通过这些挑战,因为它们不会以与人类操作的浏览器相同的方式执行 JavaScript。
- 蜜罐字段
Turnstile 可能包括对人类用户不可见但可以由机器人填写的隐藏表单字段。如果这些字段被填写,这是机器人活动的强烈指示。
- 交叉验证
Turnstile 可以通过第三方服务和数据库交叉验证用户信息和行为,以提高其机器人检测的准确性。
- 机器学习
Turnstile 通过更新其机器学习模型和检测技术,持续学习和适应新的机器人行为。这有助于它保持在不断发展的机器人策略之前。
这些技术共同作用,创建了一个强大的系统,用于检测和缓解自动化工具和机器人,确保只有合法用户才能访问受保护的资源。有关更详细的信息,您可以访问 Cloudflare 的官方文档和关于 Turnstile 的博客文章:
如何解决 Cloudflare Turnstile
1. 如何确定您遇到了 Cloudflare
- 如果使用 GUI 环境访问,您可以看到
- 如果使用其他非 GUI 方法访问,您可以检查请求响应内容
响应状态代码是 403,
响应 HTML 包含window._cf_chl_opt
code_challenge content
2. 获取站点密钥值
- 通过 CapSolver 扩展提取站点的 siteKey,参考博客文章
3. 如何使用 CapSolver 解决 Turnstile 验证
根据官方 CapSolver createTask 和 getTaskResult API,创建一个 AntiTurnstileTaskProxyLess
类型任务以自动解决 Turnstile。完整的代码示例如下:
- 使用 call_capsolver() 方法让 CapSolver 自动解决 Turnstile 并从结果中获取 token 和 userAgent。
- 调用 login() 方法构建请求参数并完成登录。
注意:如果您获得了正确的结果但仍然无法通过,请检查当前的网络环境是否异常并切换 IP 进行测试。
python
import time
import requests
import tls_client
CAPSOLVER_API_KEY = "CAI-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
PAGE_URL = "https://dash.cloudflare.com/login"
SITE_KEY = "0x4AAAAAAAJel0iaAR3mgkjp"
def call_capsolver():
data = {
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": PAGE_URL,
"websiteKey": SITE_KEY,
"metadata": {"action": "login"}
}
}
uri = 'https://api.capsolver.com/createTask'
res = requests.post(uri, json=data)
resp = res.json()
task_id = resp.get('taskId')
if not task_id:
print("no get taskId:", res.text)
return
print('created taskId:', task_id)
while True:
time.sleep(1)
data = {
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
response = requests.post('https://api.capsolver.com/getTaskResult', json=data)
resp = response.json()
status = resp.get('status', '')
if status == "ready":
print("successfully => ", response.text)
return resp.get('solution')
if status == "failed" or resp.get("errorId"):
print("failed! => ", response.text)
return None
def login(token, userAgent):
headers = {
'Cookie': f'cf_clearance={token}',
'Host': 'dash.cloudflare.com',
'User-Agent': userAgent
}
session = tls_client.Session(
client_identifier="chrome_120",
random_tls_extension_order=True
)
response = session.post(
url='https://dash.cloudflare.com/api/v4/login',
headers=headers,
data={
"cf_challenge_response": token,
"email": "[email protected]",
"password": "123456"
}
)
print("Login Resp Status Code:", response.status_code)
if response.status_code != 403:
print('Login Resp', response.text)
def run():
solution = call_capsolver()
token = solution.get("token")
userAgent = solution.get("userAgent")
login(token, userAgent)
if __name__ == "__main__":
run()
结论
Cloudflare Turnstile 是一种复杂的安全措施,旨在保护网站免受自动化滥用,但它可能会给合法的网络抓取和自动化任务带来挑战。通过了解 Turnstile 的工作原理并使用正确的工具和技术,您可以有效地解决这些障碍并保持您的操作。CapSolver 提供了一个可靠的解决方案,通过其 AntiTurnstileTaskProxyLess
任务类型解决 Turnstile 挑战。通过将 CapSolver 集成到您的工作流程中,您可以自动化解决 Turnstile CAPTCHA 的过程,确保顺畅和不中断的体验。请记住监控您的网络环境并根据需要进行调整,以优化您的结果。
合规声明: 本博客提供的信息仅供参考。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