概述

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 方法

方式三:使用 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 系列

Edge 系列

Safari 系列

Firefox 系列

获取支持的浏览器列表

python
import cfspider

# 获取所有支持的浏览器指纹
browsers = cfspider.get_supported_browsers()
print(browsers)

# 查看常量
print(cfspider.SUPPORTED_BROWSERS)

注意事项

http2 和 impersonate 不能同时使用

这两个参数使用不同的后端(httpx/curl_cffi),不能同时启用。

性能考虑

TLS 指纹模拟使用 curl_cffi,性能略低于普通 requests,但提供了更强的反检测能力。