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

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

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

18-Nov-2025

什么是 Cloudflare Turnstile

Cloudflare Turnstile 是一个免费工具,旨在替代传统的 CAPTCHA。Turnstile 只需一段简单的代码片段,就能为访问者提供无烦恼、无 CAPTCHA 的网页体验。与传统的 CAPTCHA 不同,它在不损害用户隐私或用户体验的情况下保护网站免受机器人流量的侵害。

Turnstile 的主要优势:

  • 用户友好:不再需要烦人的拼图或图片选择。
  • 隐私优先:不追踪个人数据。
  • 反机器人保护:确保访问者是真实用户并减少滥用。
  • 轻量级且易于实现,只需少量代码。

如何识别 Cloudflare Turnstile CAPTCHA

根据上下文和风险评估,Turnstile 可以以不同的形式出现:

  1. 非交互式挑战

  2. 非侵入式交互式挑战

    • 如果访问者被怀疑是机器人,可能需要简单的点击。
      交互示例
      示例链接
  3. 不可见挑战

    • CAPTCHA 被加载到 HTML 中,但页面上不可见。
      不可见示例
      示例链接

🛠️ 使用 Python 解决 Cloudflare Turnstile CAPTCHA

⚙️ 先决条件

🤖 第1步:安装所需包

bash 复制代码
pip install requests

👨‍💻 第2步:Python 脚本解决 Turnstile

python 复制代码
import time
import requests

CAPSOLVER_API_KEY = "api key"
PAGE_URL = "url"
WEBSITE_KEY = "site key"

def solvecf(metadata_action=None, metadata_cdata=None):
    url = "https://api.capsolver.com/createTask"
    task = {
        "type": "AntiTurnstileTaskProxyLess",
        "websiteURL": PAGE_URL,
        "websiteKey": WEBSITE_KEY,
    }
    if metadata_action or metadata_cdata:
        task["metadata"] = {}
        if metadata_action:
            task["metadata"]["action"] = metadata_action
        if metadata_cdata:
            task["metadata"]["cdata"] = metadata_cdata
    data = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": task
    }
    response_data = requests.post(url, json=data).json()
    print(response_data)
    return response_data['taskId']


def solutionGet(taskId):
    url = "https://api.capsolver.com/getTaskResult"
    status = ""
    while status != "ready":
        data = {"clientKey": CAPSOLVER_API_KEY, "taskId": taskId}
        response_data = requests.post(url, json=data).json()
        print(response_data)
        status = response_data.get('status', '')
        print(status)
        if status == "ready":
            return response_data['solution']

        time.sleep(2)


def main():
    
    taskId = solvecf()
    solution = solutionGet(taskId)
    if solution:
        user_agent = solution['userAgent']
        token = solution['token']

    print("User_Agent:", user_agent)
    print("已解决 Cloudflare Turnstile CAPTCHA,token:", token)

  
if __name__ == "__main__":
    main()

⚠️ 需要更新的变量

  • CAPSOLVER_API_KEY:从 Capsolver 仪表板 获取您的 API 密钥。
  • PAGE_URL:替换为您想要解决 Turnstile 的网站 URL。
  • WEBSITE_KEY:替换为网站的 Turnstile 网站密钥。

✅ 结论

通过使用 CapSolver,开发人员可以安全、自动化地绕过 Cloudflare Turnstile CAPTCHA。凭借高准确性、无代理支持和最小的设置,这种解决方案非常适合需要与受 Turnstile 保护的网站交互的网络爬虫、自动化和测试工作流程。

Capsolver 的 Python API 使得将其集成到现有脚本或自动化流程中变得简单,使您可以节省时间并减少人工干预。


❓ 常见问题解答

Q1:使用 Capsolver 解决 Turnstile 是否需要代理?
A:不需要,Capsolver 提供无代理解决,不过如果您需要额外的安全性,也可以使用自己的代理。

Q2:解决一个 Turnstile CAPTCHA 需要多长时间?
A:通常需要几秒钟,具体取决于挑战类型和网络条件。

Q3:这个解决方案能否同时处理多个 Turnstile 挑战?
A:可以,您可以同时创建多个任务来并发解决挑战。

Q4:在生产环境中使用是否安全?
A:是的,Capsolver 设计用于高可靠性,可以处理实时自动化工作流而不会对您的账户造成风险。

Q5:不可见的 Turnstile 挑战是否有任何限制?
A:不可见挑战与可见挑战的工作方式相同;Capsolver 会自动检测并解决它们。

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

更多