Skip to content
On this page

Cloudflare Turnstile 协议接口

⚠️ 通过 createTask 创建任务, 然后通过 getTaskResult 获取识别结果

ℹ️ turnstile任务类型不需要传proxy

支持类型 我们支持大部分cloudflare保护的网站,包括5s challenge, turnstile, challenge+turnstile 等具有验证模式网站。但是由于网站模式可定制,如果你的网站不支持请联系我们。

Turnstile/Challenge 验证码是替代 reCaptcha/hCaptcha 的另一种尝试。我们支持这些子类型:

  • turnstile
    • 手动
    • 非交互式
    • 不可见
  • challenge
    • 5s challenge
    • 嵌入式 turnstile

在你调用过程中,无需指定子类型。还没有必要提供您自己的自定义 User-Agent,我们会忽略此参数。

挑战类型说明支持情况
img.pngturnstilestable

任务类型type如下

  • AntiTurnstileTaskProxyLess

创建任务

通过 createTask 创建任务

当在使用 turnstile 过程中,我们必须要传入websiteURLproxywebsiteKey,其他参数可选。

参数结构

属性类型Required说明
typeStringRequiredAntiTurnstileTaskProxyLess
websiteURLStringRequired目标网页的地址。可以在网站上的任何地方,甚至在会员区域。
websiteKeyStringRequiredTurnstile 的秘钥
metadataMap<String,String>RequiredTurnstile 附加数据. Turnstile Documentation
metadata.actonStringOptionalTurnstile元素的 data-action 属性的值(如果存在的话)。
metadata.cdataStringOptionalTurnstile元素的 data-cdata (如果存在的话)。

请求示例

txt
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "AntiTurnstileTaskProxyLess",
    "websiteURL": "https://www.yourwebsite.com",
    "websiteKey": "0x4AAAAAAABS7vwvV6VFfMcD",
    "metadata": {
      "action": "login", //可选参数
      "cdata": "0000-1111-2222-3333-example-cdata" //可选参数
    }
  }
}

响应示例

json
{
  "errorId": 0,
  "status": "idle",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

获取结果

使用 getTaskResult 方法获取识别结果

根据系统负载,您将在 1s20s 的时间间隔内得到结果

请求示例

txt
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
json
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

响应示例

json
{
  "errorId": 0,
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
  "status": "ready",
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    "token": "0.mF74FV8wEufAWOdvOak_xFaVy3lqIDel7SwNhw3GgpICSWwTjYfrQB8mRT1dAJJBEoP7N1sESdp6WH9cTS1T0catWLecG3ayNcjwxVtr3hWfS-dmcBGRTx4xYwI64sAVboYGpIyuDBeMIRC3W8dK35v1nDism9xa595Da5VlXKM7hk7pIXg69lodfiftasIkyD_KUGkxBwxvrmz7dBo10-Y5zvro9hD4QKRjOx7DYj9sumnkyYCDx0m4ImDIIkNswfVTWI2V22wlnpHdvMgdtKYgOIIAU28y9gtdrdDkpkH0GHcDyd15sxQGd9VjwhGZA_mpusUKMsEoGgst2rJ3zA.UWfZupqLlGvlATkPo3wdaw.38d55cd0163610d8ce8c42fcff7b62d8981495cc1afacbb2f14e5a23682a4e13",
    "type": "turnstile",
    //我们会返回服务端使用的userAgent
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
  }
}

使用 SDK 请求

python
#pip install --upgrade capsolver
#export CAPSOLVER_API_KEY='...'

import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
          "type": "AntiTurnstileTaskProxyLess",
          "websiteURL": "https://www.yourwebsite.com",
          "websiteKey": "0x4AAAAAAABS7vwvV6VFfMcD",
          "metadata": {
            "action": "login",  # 可选
            "cdata": "0000-1111-2222-3333-example-cdata"  # 可选
      },
    })
go
package main

import (
	"fmt"
	capsolver_go "github.com/capsolver/capsolver-go"
	"log"
)

func main() {
	// first you need to install sdk
	//go get github.com/capsolver/capsolver-go
	//export CAPSOLVER_API_KEY='...' or
	//capSolver := CapSolver{ApiKey:"..."}

	capSolver := capsolver_go.CapSolver{}
	solution, err := capSolver.Solve(map[string]any{
		"type":       "AntiTurnstileTaskProxyLess",
		"websiteURL": "https://www.yourwebsite.com",
		"websiteKey": "0x4AAAAAAABS7vwvV6VFfMcD",
		"metadata": map[string]any{
			"action": "login",   // 可选
			"cdata":  "0000-1111-2222-3333-example-cdata",  // 可选
		},
	})
	if err != nil {
		log.Fatal(err)
		return
	}
	fmt.Println(solution)
}