版本比较

密钥

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

属性

类型

必须

说明

type

string

CloudFlareTaskS2

状态
colourGreen
title15 POINTS

websiteURL

string

网页地址,需要识别的地址。

userAgent

string

自定义Ua值 仅CloudFlareTaskS2类型支持

waitLoad

Bool

是否必须等待页面加载完成(如果你需要完整内容)

requiredCookies

List

可以要求获取指定Cookies名称,默认为["cf_clearance"]

可以指定多个,但不是一定能获取到

blockImage

Bool

是否关闭图片加载,用于节省流量

proxy

String

代理地址,支持以下格式:

  • 有密码http/https代理:http://user:pass@45.91.239.47:62930

  • 没有密码http/https代理:http://45.91.239.47:62930

  • 没有密码的socks5代理: socks5://5.252.190.52:64585

  • !不支持带密码的socks5代理!

注意:如果需要权限,请将

注意:如果需要权限,请将以下地址加入白名单:

  • 43.159.44.148

  • 43.

154
  • 156.

193
  • 224.

54加入白名单
  • 214

注意:CF盾对代理要求较高,请使用国际代理,如果报ERROR_CAPTCHA_UNSOLVABLE错误,请更换代理再试一下,也可以联系我们测试是否能过(绝大部份情况都能过)

注意:不要使用本地代理(127.0.0.1、localhost、192.168.x.x、172.0.x.x),本地代理只有你自己电脑才能访问,服务器访问不了!

postData

Dict

如果添加此字段,请求将会以Post的方式发送,如:

代码块
{
  "name": "hi"
}

请求示例

代码块
languagejson
{
    "clientKey": "cc9c18d3e263515c2c072b36a7125eecc078618f",
    "task": {
      "type": "CloudFlareTaskS2",
      "websiteURL": "https://nowsecure.nlin",
      "proxy": "http://JN3wWChA:Dsg7ckfv@45.91.239.47:62930", //请用你自己的代理,这个只是演示
      "waitLoad": false, // 是否需要等待加载完成(如果你需要完整内容就写true,会增加识别时间)
      "requiredCookies": ["cf_clearance"] // 可以要求获取指定Cookies名称,可不填,不一定能获取到
    }
}

响应示例

代码块
{
    "errorId": 0,
    "errorCode": "",
    "errorDescription": "",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" // 请记录此ID
}

...

请求节点:

状态
colourGreen
title国际节点
https://api.yescaptcha.com
状态
colourGreen
title国内节点
https://chinacn.yescaptcha.com

请求地址: https://api.yescaptcha.com/getTaskResult

...

参数

类型

说明

errorId

Integer

错误提示: 0 - 没有错误,1 - 有错误

errorCode

string

错误代码,点这里查看全部错误列表

errorDescription

string

错误详细描述

status

String

processing - 正在识别中,请3秒后重试
ready - 识别完成,在solution参数中找到结果

solution

Object

识别结果,不同类型的任务结果会有所区别。

user_agent

string

使用的ua值,请使用返回的值进行后续请求

cookies

Object

返回的cookies值,请使用返回的值进行后续请求,

一般cloudflare5s盾的cookies包含cf_clearance

这个cookie值有一定的有效期,有的网站长达1小时

所以1小时内不需要重复请求,但是也需要注意请求的频率

request_headers

Object

请求时的headers,建议你在使用时带上这个值

放到你的请求的headers中放到你的请求的headers中!

headers

Object

请求成功后响应的headers

content

string

返回的网页内容源码

...

代码块
languagepy
from curl_cffi import requests

proxies = {
    'http': "http://127.0.0.1:10911", 
    'https': "http://127.0.0.1:10911",
}

# 正常情况是这样的
response = requests.get("https://apkpure.com/", proxies=proxies)
print("请求响应:", response.status_code)
print("网页标题:", response.text[:63])

# 返回:
# 请求响应: 403
# 网页标题: <!DOCTYPE html><html lang="en-US"><head><title>Just a moment...

# 使用 curl_cffi.requests请求
# impersonate参数指定了模拟Chrome浏览器的指纹
response = requests.get(
    "https://apkpure.com/", proxies=proxies, impersonate="chrome110")
print("请求响应:", response.status_code)
print("网页标题:", response.text[:63])
# 返回:
# 请求响应: 200
# 网页标题: <!DOCTYPE html><html lang="en"><head><title>Download APK on And

测试DEMO

View file
namecloudflare5s_demodemo_openai.com_opt.py

代码块
fromimport curl_cffirequests
import requeststime
import timere


# 创建任务创建任务函数
def create_task(url, proxy, client_key):
    data"""
 = {  创建Cloudflare防护页面的任务

    :param #url: 填您自己的密钥目标网址
    :param proxy: 代理服务器地址
 "clientKey": clientKey,  :param client_key: 客户端密钥
    "task": {:return: 创建任务的响应结果
    """
    data "type": "CloudFlareTaskS2",= {
        "websiteURLclientKey": urlclient_key,
        "proxytask": proxy{
        }     }"type": "CloudFlareTaskS2",
    url = "https://api.yescaptcha.com/createTask"     response  "userAgent": "",  # 指定chrome内核, 可以为空,如:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
            "waitLoad": True,
            "websiteURL": url,
            "proxy": proxy
        }
    }
    api_url = "https://api.yescaptcha.com/createTask"
    response = requests.post(api_url, json=data).json()
    return response

  
# 获取任务结果函数
def get_task(task_id, client_key):
    """
    获取任务的执行结果

    :param task_id: 任务ID
    :param client_key: 客户端密钥
    :return: 任务结果的响应结果
    """
    api_url = "https://api.yescaptcha.com/getTaskResult"
    data = {
        "clientKey": client_key,
        "taskId": task_id
    }
    response = requests.post(api_url, json=data).json()
    return response



# 获取结果完整的请求函数
def get_task(task_idresult(url, proxy, client_key):
  url = "http://api.yescaptcha.com/getTaskResult"""
  data = {完整的创建任务并获取结果的流程

    :param #url: 填您自己的密钥目标网址
      "clientKey":param proxy: clientKey,
 代理服务器地址
    "taskId":param taskclient_id
  }
  response = requests.post(url, json=data).json()key: 客户端密钥
    :return: response任务执行结果
  # 完整的请求 def get_result(*args, **kwargs):"""
    uuidtask_response = create_task(*argsurl, proxy, **kwargs)client_key)
    if not uuidtask_response or not uuidtask_response.get('taskId'):
        return uuidtask_response

    print("TaskID:", uuidtask_response)
    for i_ in range(30):
        time.sleep(3)
        result = get_task(uuidtask_response.get('taskId'), client_key)
        if result.get('status') == 'processing':':
            continue
        elif result.get('status') == 'ready':
            return result
        else:
        print("Fail:", result)
    raise Exception(result)
    return {"status": "timeout"}



if __name__ == '__main__':
    # 客户端密钥, 登陆yescaptcha.com获取
    #client_key 填您的密钥= "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
   clientKey =
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"    # 代理服务器地址,填您自己的代理地址
    # 填您自己的代理,不要填本地的地址不要填本地地址(如:http://127.0.0.1:1080,http://localhost:1080这种,这个只有你自己能用)
    proxy = "http://JN3wWChAuser:Dsg7ckfv@176password@103.222147.59170.86108:6404864484"
    proxies = {
        'http': proxy, 
        'https': proxy,
    }
    
    # 要访问的网址目标网址
    url = "https://nowsecure.nlin/"


    # 正常情况是这样的
使用普通requests请求
   # response = requests.get(url, proxies=proxies)

   # print("请求响应:", response.status_code)
    # print("网页标题:", re.search(r"<title>(.*?)</title>", response.text[:200])
    # 返回:请求响应: 403


    # 使用 curl_cffi.requests请求
    # response = requests.get(url, proxies=proxies, impersonate="chrome110")
    # print("请求响应:)) if response.text else print("网页标题:", response.status_code)
text[:1000])
   # print("网页标题:",是否为CF盾:", "cf_chl" in response.text[:200])

   # 返回:请求响应:
200       # 使用接口返回的值来请求
    task_result = get_result(url, proxy=proxy, client_key)
    if not task_result.get("solution"):
        print("任务失败", task_result)
        exit()
  
    
     solution = task_result.get("solution")
    # 从solution中获取请求头和cookies
    headers = {solution.get("request_headers")
    headers.update(solution.get("headers"))
     'User-Agent':cookies = solution.get("user_agentcookies")
    } print("Headers:", headers)
    print("UaCookies:", headerscookies)
    
    cookies = solution.get("cookies")
 # 使用curl_cffi.requests请求
    # 请先安装curl_cffi库,并且是pre版本:pip install curl_cffi --pre
   print("Cookies:", cookies)
     from curl_cffi import requests as curl_requests
    response = curl_requests.get(url, headers=headers, cookies=cookies, proxies=proxies, impersonate="chrome110chrome120")
    print("请求响应:", response.status_code)
    print("网页标题:", re.search(r"<title>(.*?)</title>", response.text)) if response.text else print("网页标题:", response.text[:2001000])
    print("是否为CF盾:", "cf_chl" in response.text)