概述
CFspider 提供 Session 管理功能,可以在多个请求之间保持相同的代理配置、请求头和 Cookie,适合需要登录状态或连续请求的场景。
cfspider.Session
同步会话类,在多个请求之间保持代理配置、请求头和 Cookie。
类定义
python
class Session:
def __init__(
self,
cf_proxies: str,
token: str = None
)
def request(method, url, **kwargs) -> CFSpiderResponse
def get(url, **kwargs) -> CFSpiderResponse
def post(url, **kwargs) -> CFSpiderResponse
def put(url, **kwargs) -> CFSpiderResponse
def delete(url, **kwargs) -> CFSpiderResponse
def head(url, **kwargs) -> CFSpiderResponse
def options(url, **kwargs) -> CFSpiderResponse
def patch(url, **kwargs) -> CFSpiderResponse
def close()
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
cf_proxies |
str |
必填 | Workers 代理地址,例如 "https://your-workers.dev" |
token |
str |
None |
Workers API 鉴权 token。当 Workers 配置了 TOKEN 环境变量时必填 |
属性
| 属性 | 类型 | 说明 |
|---|---|---|
cf_proxies |
str |
Workers 代理地址 |
token |
str |
Workers API 鉴权 token |
headers |
dict |
会话级别的默认请求头字典,所有请求都会自动添加这些请求头 |
cookies |
dict |
会话级别的 Cookie 字典,所有请求都会自动添加这些 Cookie |
方法
Session 提供所有 HTTP 方法:get(), post(), put(), delete(), head(), options(), patch(),以及通用的 request() 方法。
使用示例
基本用法
python
import cfspider
# 创建会话
with cfspider.Session(cf_proxies="https://your-workers.dev", token="your-token") as session:
# 设置会话级别的请求头
session.headers['Authorization'] = 'Bearer token'
session.headers['X-Custom-Header'] = 'value'
# 所有请求都会使用相同的代理和请求头
response1 = session.get("https://api.example.com/user")
response2 = session.post("https://api.example.com/data", json={"key": "value"})
# Cookie 会自动保持
print(session.cookies)
登录场景
python
session = cfspider.Session(cf_proxies="https://your-workers.dev")
# 登录
login_response = session.post(
"https://example.com/login",
json={"username": "user", "password": "pass"}
)
# Cookie 自动保存
print(session.cookies) # 包含登录后的 Cookie
# 后续请求自动携带 Cookie
profile = session.get("https://example.com/profile")
data = session.get("https://example.com/api/data")
session.close()
请求头优先级
python
session = cfspider.Session(cf_proxies="https://your-workers.dev")
session.headers['User-Agent'] = 'Session-Level-UA'
# 请求级别的请求头优先级更高
response = session.get(
"https://example.com",
headers={'User-Agent': 'Request-Level-UA'} # 会覆盖会话级别的
)
cfspider.AsyncSession
异步会话类,用法与同步 Session 相同,但所有方法都是异步的。
使用示例
python
import asyncio
import cfspider
async def main():
async with cfspider.AsyncSession(cf_proxies="https://your-workers.dev") as session:
session.headers['Authorization'] = 'Bearer token'
response1 = await session.get("https://api.example.com/user")
response2 = await session.post("https://api.example.com/data", json={})
asyncio.run(main())
与 StealthSession 的区别
Session vs StealthSession
- Session:仅保持代理配置和基本请求头,适合简单的会话管理
- StealthSession:完整的隐身模式,包括浏览器指纹、Cookie 管理、自动 Referer、随机延迟、Sec-Fetch-* 更新,适合需要绕过反爬虫的场景
如果需要隐身模式的会话一致性,请使用 StealthSession。