概述
TLS 指纹模拟功能可以模拟真实浏览器的 TLS 握手特征,绕过基于 TLS 指纹的反爬虫检测。基于 curl_cffi 实现,支持 25+ 种浏览器指纹。
依赖安装
使用 TLS 指纹模拟需要安装 curl_cffi:
bash
pip install curl_cffi
方式一:在请求中启用
在普通请求中直接使用 impersonate 参数。
使用示例
python
import cfspider
# 模拟 Chrome 131
response = cfspider.get(
"https://example.com",
impersonate="chrome131"
)
# 模拟 Safari 18
response = cfspider.get(
"https://example.com",
impersonate="safari18_0"
)
方式二:使用专用 API
CFspider 提供专门的 TLS 指纹模拟 API。
cfspider.impersonate_get()
python
response = cfspider.impersonate_get(
"https://example.com",
impersonate="chrome131"
)
其他 HTTP 方法
cfspider.impersonate_post()cfspider.impersonate_put()cfspider.impersonate_delete()cfspider.impersonate_head()cfspider.impersonate_options()cfspider.impersonate_patch()cfspider.impersonate_request()- 通用方法
方式三:使用 ImpersonateSession
使用会话类保持 TLS 指纹一致性。
类定义
python
class ImpersonateSession:
def __init__(
self,
impersonate: str = "chrome131",
cf_proxies: str = None,
cf_workers: bool = True,
token: str = None,
**kwargs
)
使用示例
python
import cfspider
with cfspider.ImpersonateSession(impersonate="chrome131") as session:
response1 = session.get("https://example.com")
response2 = session.post("https://api.example.com", json={})
支持的浏览器指纹
使用 cfspider.get_supported_browsers() 获取完整列表。
Chrome 系列
- chrome99, chrome100, chrome101, chrome104, chrome107
- chrome110, chrome116, chrome119, chrome120, chrome123
- chrome124, chrome131(推荐)
- chrome99_android, chrome131_android
Edge 系列
- edge99, edge101
Safari 系列
- safari15_3, safari15_5, safari17_0, safari17_2_ios
- safari18_0, safari18_0_ios
Firefox 系列
- firefox102, firefox109, firefox133
获取支持的浏览器列表
python
import cfspider
# 获取所有支持的浏览器指纹
browsers = cfspider.get_supported_browsers()
print(browsers)
# 查看常量
print(cfspider.SUPPORTED_BROWSERS)
注意事项
http2 和 impersonate 不能同时使用
这两个参数使用不同的后端(httpx/curl_cffi),不能同时启用。
性能考虑
TLS 指纹模拟使用 curl_cffi,性能略低于普通 requests,但提供了更强的反检测能力。