Skip to content

使用 curl_cffi 突破网站请求识别

在Python中,使用 curl_cffi 可以简单有效地解决网站通过JA3或其他指纹信息识别请求是由Requests库发起的问题。

安装 curl_cffi

shell
python3 -m pip install curl_cffi

# or use poetry
poetry add curl_cffi

例子

python
from curl_cffi import requests

# 设置请求头
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46',
}

# 在请求中加入 impersonate 参数
response = requests.get('https://tls.browserleaks.com/json', headers=headers, impersonate="chrome110")

print(response.json())

通过这两行代码的修改,使用 curl_cffirequests 模块,添加了 impersonate="chrome110" 参数,网站将无法识别爬虫,将请求视为由 Chrome 110 版本发起的。此外,curl_cffi 不仅兼容Requests的语法,还支持异步写法,示例代码也提供了异步调用的例子。