Cloudbypass SDK for Python.
Project description
Cloudbypass SDK for Python
开始使用
Cloudbypass Python SDK 仅支持 Python 3.7 及以上版本。
在psf/requests基础上封装的穿云SDK,支持穿云API服务的调用。通过内置的会话管理器,可以自动处理会话请求,无需手动管理Cookie等信息。
安装
python3 -m pip install cloudbypass -i https://pypi.org/simple
发起请求
cloudbypass 基于 requests 库,支持所有 requests 的方法。
通过添加初始化参数 apikey 和 proxy,分别用于设置穿云 API 服务密钥和代理 IP。
定制用户可以通过设置 api_host 参数来指定服务地址。
以上参数也可以通过环境变量
CB_APIKEY、CB_PROXY和CB_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 通过控制台接口 POST https://console.cloudbypass.com/api/v1/balance 查询账户用量,请求体为 JSON(原查询参数已改为 JSON 字段)。
通过关键字参数 type 指定查询类型(写入请求 JSON 的 type 字段)。可使用包内常量 BALANCE_TYPE_POINTS、BALANCE_TYPE_RES、BALANCE_TYPE_DAT 代替字面量。
常量 / type |
含义 | 响应 JSON |
|---|---|---|
BALANCE_TYPE_POINTS(默认) |
积分 | {"balance": 0} |
BALANCE_TYPE_RES |
住宅代理流量 | {"total": 0, "balance": 0} |
BALANCE_TYPE_DAT |
机房代理流量 | {"total": 0, "balance": 0} |
from cloudbypass import (
BALANCE_TYPE_DAT,
BALANCE_TYPE_POINTS,
BALANCE_TYPE_RES,
get_balance,
)
if __name__ == '__main__':
# 积分
print(get_balance("<APIKEY>", "<EMAIL>"))
print(get_balance("<APIKEY>", "<EMAIL>", type=BALANCE_TYPE_POINTS))
# 住宅流量 / 机房流量
print(get_balance("<APIKEY>", "<EMAIL>", type=BALANCE_TYPE_RES))
print(get_balance("<APIKEY>", "<EMAIL>", type=BALANCE_TYPE_DAT))
async
import asyncio
from cloudbypass import BALANCE_TYPE_RES, async_get_balance
async def main():
print(await async_get_balance("<APIKEY>", "<EMAIL>"))
print(await async_get_balance("<APIKEY>", "<EMAIL>", type=BALANCE_TYPE_RES))
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
convert_bytes 可将流量查询结果中的字节数格式化为可读字符串。例如 convert_bytes(data["balance"])。
提取代理
通过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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cloudbypass-0.2.6.tar.gz.
File metadata
- Download URL: cloudbypass-0.2.6.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5a7c34e7df24b3fbe7c0036f795e101c40e51a57081681857941f71e60ddfbb
|
|
| MD5 |
9739361354a8e5ac3da58eb7df4a0cd1
|
|
| BLAKE2b-256 |
3e5b49f975f65cbfdd1c724c3070a7a8179bfbb78c057aab790352d5e9ad08cb
|
File details
Details for the file cloudbypass-0.2.6-py3-none-any.whl.
File metadata
- Download URL: cloudbypass-0.2.6-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
603ec9074b3139f68c9b7fc761492674631dea9690bc57151b72949b7dea1883
|
|
| MD5 |
fe6d2ba1e96ab5ee045ef6d1983b0bc9
|
|
| BLAKE2b-256 |
057f74ac72291409c82180d57c7ab94171da5e3de2d2655bcd871f9db6ce57b7
|