ESC
开源 2 分钟阅读

cloudflare-turnstile-solver:在自有页面处理 Cloudflare Turnstile 的小型 Python 库与 CLI——读取 sitekey、生成 token、验证结果

cloudflare-turnstile-solver 是一个轻量级 Python 库和 CLI 工具,用于在自有页面上处理 Cloudflare Turnstile:自动读取页面 sitekey、通过 Peak API 生成有效 token 并验证结果。该库无浏览器依赖,仅用标准库实现单个文件,适用于 CI 流水线、QA 自动化与集成工程场景,支持代理配置与 CLI 调用。

来源:GitHub

Peak - 约1秒内解决 Cloudflare Turnstile 与5秒挑战

Cloudflare Turnstile Solver — 用 Python 获取 Turnstile Token

Cloudflare Turnstile Solver 包让你能轻松地从 Python 处理 Cloudflare Turnstile:它会在任意页面上找到 Turnstile sitekey,通过 Peak API 创建有效的 Turnstile token,并将 cf-turnstile-response token 交给你,可注入表单或请求中。它是一个小型、无依赖的库外加一个 CLI——专为 CI 流水线、QA 自动化和集成工程而设计。

目录:

  • 本包的功能
  • 快速开始
  • 查找 Turnstile sitekey
  • 创建 Turnstile token
  • Python API 参考
  • CLI 用法
  • 示例
  • 由 Peak 驱动
  • 许可证

本包的功能

Cloudflare Turnstile 通过一个发放 token 的小部件来保护页面。始终需要两件事:找到页面使用的 sitekey,以及为该 sitekey 创建 token。本包两者兼备:

  1. find_sitekey() — 扫描页面以查找其 data-sitekey。
  2. create_token() — 向 Peak API 提交求解任务并获取有效 token。
  3. token_for_page() — 一次调用完成上述两步。

它不依赖浏览器。单个 Python 文件,仅使用标准库,可在无头服务器和 CI 运行器上工作。

快速开始

$ export PEAK_API_KEY=pk_your_api_key
$ python -m cloudflare_turnstile_solver --url https://example.com/
0.AgAAABBqzz...

或者先找到 sitekey,再创建 token:

from cloudflare_turnstile_solver import find_sitekey, create_token

sitekey = find_sitekey("https://example.com/")
token = create_token("pk_...", sitekey, "https://example.com/")
print(token)  # -> "0.AgAAABBqzz..."

查找 Turnstile sitekey

Turnstile 小部件会在页面标记中暴露 sitekey:

<div class="cf-turnstile" data-sitekey="0x4AAAAAAAxxxx"></div>

find_sitekey() 会帮你读取它:

from cloudflare_turnstile_solver import find_sitekey

sitekey = find_sitekey("https://example.com/")
print(sitekey)  # -> "0x4AAAAAAAxxxx"

若存在 data-action,它也会一并找到,确保 token 的作用域正确。

创建 Turnstile token

token 与 sitekey、页面 URL 以及可选的 action 绑定。要通过 Peak API 创建一个:

from cloudflare_turnstile_solver import create_token

result = create_token("pk_...", "0x4AAAAAAAxxxx", "https://example.com/",
                      proxy="http://u:p@1.2.3.4:8080")
print(result.token)

将返回的 token 作为 cf-turnstile-response 提交:

cf-turnstile-response: 0.AgAAABBqzz...

⚠️ 如果 token 被拒绝,请检查基本要素。token 与创建它的页面 URL 和环境绑定。请求时请使用相同的代理和匹配的 user agent。

Python API 参考

函数描述
find_sitekey(url, html=None)扫描页面以查找其 Turnstile sitekey。
find_action(html)查找可选的 data-action 值。
create_token(api_key, sitekey, url, proxy=None, action=None, cdata=None, ...)通过 Peak API 创建有效 token。
token_for_page(api_key, url, proxy=None, html=None)一次调用完成查找 sitekey 并创建 token。

所有函数在失败时都会抛出 TurnstileTokenError。create_token 会自动重试瞬时故障。

CLI 用法

$ python -m cloudflare_turnstile_solver --url https://example.com/ --output json
{
  "sitekey": "0x4AAAAAAAxxxx",
  "token": "0.AgAAABBqzz...",
  "success": true
}

参数:--url(必需)、--sitekey、--proxy、--api-key、--output {text,json}、--retries。

示例

在脚本中配合 requests 使用

import requests
from cloudflare_turnstile_solver import token_for_page

result = token_for_page("pk_...", "https://example.com/")
resp = requests.post("https://example.com/submit",
                     data={"cf-turnstile-response": result.token})
print(resp.status_code)

在 CI / shell 中

TOKEN=$(python -m cloudflare_turnstile_solver --url https://example.com/)
curl -X POST https://example.com/submit \
  -H "cf-turnstile-response: $TOKEN" \
  -d "payload=..."

由 Peak 驱动

本包使用 Peak 来求解 Turnstile。

  • ✅ 注册即赠 1,000 次免费求解——无需信用卡。领取 1,000 次免费求解,只需为成功的求解付费。
  • 成功求解每 1,000 次低至 $0.8。
  • 约 1 秒内解决 Cloudflare Turnstile 与 5 秒挑战。

获取免费 API key • 文档 • 定价

常见问题

它可以在无头/无浏览器环境下运行吗?

可以。整个包是一个仅使用标准库的单个 Python 文件——无需浏览器、无需 webdriver、无需 Node。它在无头 CI 运行器上与本地运行方式完全相同。

如何使用代理?

通过 proxy 参数将其传递给 create_token / token_for_page,或在 CLI 上使用 --proxy:

$ python -m cloudflare_turnstile_solver --url https://example.com/ --proxy http://u:p@1.2.3.4:8080

可以在同一网站的多个页面上使用吗?

可以——为每个页面 URL 分别调用 token_for_page。每个 token 都与其创建时所针对的页面 URL 绑定,因此不要在不同页面之间复用同一个 token。

许可证

MIT