Cloudflare: 解决挑战
提示
使用 createTask 方法创建任务,并使用 getTaskResult 方法获取结果。
注意
- 代理是必需的,请使用静态代理(Static proxy)或粘性代理(Sticky proxy),而不是轮换代理(Rotating proxy)。
- 支持自定义 userAgent,请保持与您正在使用的 userAgent 一致。
- 如果您未能获得解决方案,您的 IP 可能已被阻止,请尝试更换您的代理。
- 您必须使用 TLS 请求库来请求目标网站。
任务类型 type
如下所示
AntiCloudflareTask
创建任务
使用 createTask 方法创建任务。
任务对象结构
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
type | String | 是否必需 | AntiCloudflareTask |
websiteURL | String | 是否必需 | 目标页面的地址。 |
proxy | String | 是否必需 | 您的静态代理或粘性代理。了解 如何使用代理 |
userAgent | String | 可选 | 您用于请求目标网站的 user-agent 。仅支持 Chrome 浏览器的 userAgent |
请求示例
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiCloudflareTask",
"websiteURL": "https://www.yourwebsite.com",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36",
"proxy": "ip:port:user:pass"
}
}
响应示例
{
"errorId": 0,
"status": "idle",
"taskId": "df944101-64ac-468d-bc9f-41baecc3b8ca"
}
获取结果
使用 getTaskResult 方法获取识别结果
根据网站和代理的不同,您将在 2s
到 20s
的时间内获得结果
请求示例
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "df944101-64ac-468d-bc9f-41baecc3b8ca"
}
响应示例
{
"errorId": 0,
"taskId": "df944101-64ac-468d-bc9f-41baecc3b8ca",
"status": "ready",
"errorCode": "",
"errorDescription": "",
"solution": {
"cookies": {
"cf_clearance": "Bcg6jNLzTVaa3IsFhtDI.e4_LX8p7q7zFYHF7wiHPo...uya1bbdfwBEi3tNNQpc"
},
"token": "Bcg6jNLzTVaa3IsFhtDI.e4_LX8p7q7zFYHF7wiHPo...uya1bbdfwBEi3tNNQpc",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36"
}
}
使用 SDK 请求
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
"type": "AntiCloudflareTask",
"websiteURL": "https://www.yourwebsite.com",
"proxy": "ip:port:user:pass"
})
代码示例
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # 你的 Capsolver API 密钥
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": "AntiCloudflareTask",
"websiteURL": "https://www.yourwebsite.com",
"proxy": "ip:port:user:pass"
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
while True:
time.sleep(1) # delay
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {})
if status == "failed" or resp.get("errorId"):
print("Solve failed! response:", res.text)
return
token = capsolver()
print(token)