Skip to content
On this page

Cloudflare Challenge (5s) 协议接口

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

ℹ️ 该任务类型必须传入代理proxy信息,暂不支持 ProxyLess

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

Turnstile/Challenge 验证码是替代 reCaptcha/hCaptcha 的另一种尝试。我们自动支持其所有子类型:

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

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

挑战类型说明支持情况
img.pngturnstilestable
img_2.pngchallengestable
img_1.pngchallenge + hcaptchabeta
img_3.pngchallenge + turnstilebeta

任务类型type如下

  • AntiCloudflareTask 必须传入代理

创建任务

通过 createTask 创建任务

当在使用challenge过程中,我们仅需要你传入websiteURLproxy即可,其他参数可选。

参数结构

属性类型Required说明
typeStringRequiredAntiCloudflareTask
websiteURLStringRequired目标网页的地址。可以在网站上的任何地方,甚至在会员区域。
metadataMap<String,String>RequiredChallenge 附加数据
metadata.typeStringRequiredchallenge or turnstile 固定值
htmlStringRequired你可以直接传入challenge的整个html源代码,页面包含 window._cf_chl_opt属性,同时也支持base64数据格式
proxyStringRequired学习如何使用代理

请求示例

text
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "AntiCloudflareTask",
    "websiteURL": "https://cfschl.peet.ws/",
    "metadata": {
      "type": "challenge",
    },
    // base64 string
    "html": "<your challenge html source code>",
    // Proxy必须和获取html的ip完全一致
    "proxy": "socks5:158.120.100.23:334:user:pass"
  }
}

响应示例

json
{
  "errorId": 0,
  "status": "idle",
  // 请记录此ID
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

获取结果

使用 getTaskResult 方法获取识别结果

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

请求示例

text
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,
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    "token": "0.mF74FV8wEufAWOdvOak_xFaVy3lqIDel7SwNhw3GgpICSWwTjYfrQB8mRT1dAJJBEoP7N1sESdp6WH9cTS1T0catWLecG3ayNcjwxVtr3hWfS-dmcBGRTx4xYwI64sAVboYGpIyuDBeMIRC3W8dK35v1nDism9xa595Da5VlXKM7hk7pIXg69lodfiftasIkyD_KUGkxBwxvrmz7dBo10-Y5zvro9hD4QKRjOx7DYj9sumnkyYCDx0m4ImDIIkNswfVTWI2V22wlnpHdvMgdtKYgOIIAU28y9gtdrdDkpkH0GHcDyd15sxQGd9VjwhGZA_mpusUKMsEoGgst2rJ3zA.UWfZupqLlGvlATkPo3wdaw.38d55cd0163610d8ce8c42fcff7b62d8981495cc1afacbb2f14e5a23682a4e13",
    "type": "challenge",
    //我们会返回服务端使用的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"
  },
  "status": "ready"
}

使用 SDK 请求

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

import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
            "type": "AntiCloudflareTask",
            "websiteURL": "https://cfschl.peet.ws/",
            "metadata": {
                "type": "challenge",
            },
          "html": "<your challenge html source code>",
          "proxy": "socks5:158.120.100.23:334:user:pass"
        })
golang
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":       "AntiCloudflareTask",
		"websiteURL": "https://cfschl.peet.ws/",
		"metadata": map[string]any{
			"type": "challenge",
		},
		"html":  "<your challenge html source code>",
		"proxy": "socks5:158.120.100.23:334:user:pass",
	})
	if err != nil {
		log.Fatal(err)
		return
	}
	fmt.Println(solution)
}