Skip to main content

Cloudbypass SDK for Python.

Project description

Cloudbypass SDK for Python

开始使用

Cloudbypass Python SDK 仅支持 Python 3.7 及以上版本。

psf/requests基础上封装的穿云SDK,支持穿云API服务的调用。通过内置的会话管理器,可以自动处理会话请求,无需手动管理Cookie等信息。

cloudbypass cloudbypass cloudbypass cloudbypass

安装

python3 -m pip install cloudbypass -i https://pypi.org/simple

发起请求

cloudbypass 基于 requests 库,支持所有 requests 的方法。

通过添加初始化参数 apikeyproxy,分别用于设置穿云 API 服务密钥和代理 IP。

定制用户可以通过设置 api_host 参数来指定服务地址。

以上参数也可以通过环境变量 CB_APIKEYCB_PROXYCB_APIHOST 进行配置。

from cloudbypass import Session

if __name__ == '__main__':
    with Session(apikey="<APIKEY>", proxy="http://proxy:port") as session:
        resp = session.get("https://opensea.io/category/memberships")
        print(resp.status_code, resp.headers.get("x-cb-status"))
        print(resp.text)

async

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("Status:", resp.status)
        text = await resp.text()
        print("Body:", text)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

使用V2

穿云API V2适用于需要通过JS质询验证的网站。例如访问https://etherscan.io/accounts/label/lido ,请求示例:

from cloudbypass import SessionV2

if __name__ == '__main__':
    # Cookie模式:服务端返回加密Cookie,下次请求时由客户端发送验证Cookie
    with SessionV2(apikey="<APIKEY>", proxy="http://proxy:port") as session:
        resp = session.get("https://etherscan.io/accounts/label/lido")
        print("Status:", resp.status_code, resp.headers.get("x-cb-status"))
        print("Cookie:", resp.headers.get("set-cookie"))
        print("Body:", resp.text)

    # Part模式:由服务端管理验证Cookie,客户端只需要控制part参数
    with SessionV2(apikey="<APIKEY>", proxy="http://proxy:port", part="0") as session:
        resp = session.get("https://etherscan.io/accounts/label/lido")
        print("Status:", resp.status_code, resp.headers.get("x-cb-status"))
        print("Body:", resp.text)

async

import asyncio
from cloudbypass import AsyncSessionV2


async def main():
    # Cookie模式:服务端返回加密Cookie,下次请求时由客户端发送验证Cookie
    async with AsyncSessionV2(apikey="<APIKEY>", proxy="http://proxy:port") as session:
        resp = await session.get("https://etherscan.io/accounts/label/lido")
        print("Status:", resp.status)
        print("Cookie:", resp.headers.get("set-cookie"))
        text = await resp.text()
        print("Body:", text)

    # Part模式:由服务端管理验证Cookie,客户端只需要控制part参数
    async with AsyncSessionV2(apikey="<APIKEY>", proxy="http://proxy:port", part="0") as session:
        resp = await session.get("https://etherscan.io/accounts/label/lido")
        print("Status:", resp.status)
        text = await resp.text()
        print("Body:", text)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

查询余额

使用get_balance方法可以查询当前账户余额。

from cloudbypass import get_balance

if __name__ == '__main__':
    print(get_balance("<APIKEY>", "<EMAIL>"))

async

import asyncio
from cloudbypass import async_get_balance


async def main():
    print(await async_get_balance("<APIKEY>", "<EMAIL>"))


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

提取代理

通过Proxy类可以提取穿云动态代理IP和时效代理IP。

  • copy() 复制当前对象,使原有的对象不会受到影响。
  • set_dynamic() 设置为动态代理。
  • set_expire(int) 设置为时效代理,参数为IP过期时间,单位为秒。
  • set_region(str) 设置代理IP地区。
  • clear_region() 清除代理的地区。
  • format(str) 格式化代理IP,参数为格式化字符串,例如{username}:{password}@gateway
  • limit(int, str) 返回一个代理IP字符串迭代器,参数为提取数量及代理格式化字符串。
  • loop(int, str) 返回一个代理IP字符串循环迭代器,参数为实际数量及代理格式化字符串。
from cloudbypass import Proxy

if __name__ == '__main__':
    proxy = Proxy("username-res:password")

    # 提取动态代理
    print("Extract dynamic proxy: ")
    print(str(proxy.set_dynamic()))
    print(str(proxy.set_region('US')))

    # 提取时效代理并指定地区
    print("Extract proxy with expire and region: ")
    print(str(proxy.copy().set_expire(60 * 30).set_region('US')))

    # 批量提取
    print("Extract five 10-minute aging proxies: ")
    pool = proxy.copy().set_expire(60 * 10).set_region('US').limit(5)
    for _ in pool:
        print(_)

    # 循环提取
    print("Loop two 10-minute aging proxies: ")
    loop = proxy.copy().set_expire(60 * 10).set_region('US').loop(2)
    for _ in range(10):
        print(loop.__next__())

关于重定向问题

使用SDK发起请求时,重定向操作会自动处理,无需手动处理。且重定向响应也会消耗积分。

关于服务密钥

请访问穿云控制台获取服务密钥。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudbypass-0.2.5.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cloudbypass-0.2.5-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file cloudbypass-0.2.5.tar.gz.

File metadata

  • Download URL: cloudbypass-0.2.5.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.7

File hashes

Hashes for cloudbypass-0.2.5.tar.gz
Algorithm Hash digest
SHA256 171e854377ff533e00cd4e2298bc76be136ff016c51316e376790b7b53a8b275
MD5 e2b1342c8bf50fa3f99508fd5cbb90c9
BLAKE2b-256 aa72b3be2c261d2255be01f413ce921d55d21d32528110bbc8906d3ce4987fe2

See more details on using hashes here.

File details

Details for the file cloudbypass-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: cloudbypass-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.7

File hashes

Hashes for cloudbypass-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9b5098cbc69d86d644fcb71e3136e25f886ede80091010fdaa7a91c8dee178ad
MD5 95726ecd7194d5568c83012f1705be67
BLAKE2b-256 1fb244622f3722384925a607e5559c6aca003d86e9cd9cacabae5ba18d30afcb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page