穿云 Python SDK 开发者指南

官方文档详见穿云 Python SDK 参考手册

穿云 Python SDK 是一款基于 psf/requests 高度封装的库,专为绕过 Cloudflare 防护而设计。它内置了自动化的会话管理与指纹模拟逻辑,支持自动处理 Cookie 和 JA3/HTTP2 指纹,无需手动配置复杂的底层参数。


1. 环境准备与安装

  • 版本要求:Python 3.6 及以上。
  • 安装命令
# 使用官方 PyPI 源安装
python3 -m pip install cloudbypass -i https://pypi.org/simple

2. 同步请求示例(Session)

Session 类继承自 requests.Session,支持所有原生方法。初始化时可传入 apikeyproxy(用于通过 API 通道的代理地址)。

from cloudbypass import Session

if __name__ == '__main__':
    # 初始化会话:传入服务密钥与代理地址
    with Session(apikey="您的APIKEY", proxy="http://proxy:port") as session:
        # 发起请求,SDK 会自动处理 Cloudflare 5秒盾
        resp = session.get("https://opensea.io/category/memberships")

        # 查看响应状态及穿云状态码 (x-cb-status)
        print(f"HTTP 状态码: {resp.status_code}")
        print(f"穿云服务状态: {resp.headers.get('x-cb-status')}")
        print(resp.text)

3. 异步请求示例(AsyncSession)

AsyncSession 类继承自 aiohttp.ClientSession,适用于高并发采集场景。

import asyncio
from cloudbypass import AsyncSession

async def main():
    async with AsyncSession(apikey="您的APIKEY", proxy="http://proxy:port") as session:
        resp = await session.get("https://opensea.io/category/memberships")
        print(f"Status: {resp.status}")
        html = await resp.text()
        print("Body Content:", html[:50], "...")

if __name__ == '__main__':
    asyncio.run(main())

4. 调用 V2 接口(处理 JS 质询/Turnstile)

针对安全等级极高的网站,建议在请求中明确指定 V2 逻辑。

from cloudbypass import Session

if __name__ == '__main__':
    with Session(apikey="您的APIKEY", proxy="http://proxy:port") as session:
        # 使用 V2 逻辑访问高强度防护页面
        resp = session.get("https://etherscan.io/accounts/label/lido", part="0")
        print(f"V2 请求状态: {resp.status_code}")
        print(resp.text)

5. 穿云动态/时效代理提取

通过 Proxy 类,您可以灵活管理全球 200+ 国家和地区的 3.5 亿个动态 IP 资源。

from cloudbypass import Proxy

if __name__ == '__main__':
    # 初始化代理对象 (格式:用户名-res:密码)
    proxy = Proxy("username-res:password")

    # 1. 提取动态住宅代理并指定地区(如美国 US)
    dynamic_proxy = str(proxy.set_dynamic().set_region('US'))
    print(f"动态代理: {dynamic_proxy}")

    # 2. 提取时效代理(如 30 分钟有效期)
    expire_proxy = str(proxy.copy().set_expire(1800).set_region('US'))
    print(f"时效代理: {expire_proxy}")

    # 3. 批量提取 5 个 10 分钟有效期的代理
    pool = proxy.copy().set_expire(600).set_region('US').limit(5)
    for p in pool:
        print(f"批量提取: {p}")

6. 核心注意事项

  • 重定向处理:SDK 会自动处理所有重定向操作。请注意,每一次重定向响应均会正常消耗 API 积分
  • 环境变量配置:为了安全和便捷,您可以使用以下环境变量预设参数:
    • CB_APIKEY: 您的服务密钥
    • CB_PROXY: 代理服务地址
    • CB_APIHOST: 针对定制用户的自定义服务地址
  • 查询余额
from cloudbypass import get_balance
# 获取账户当前剩余积分
print(f"当前余额: {get_balance('您的APIKEY')}")

获取密钥穿云控制台
更多详情:请参考 穿云 API 官方文档