from curl_cffi import requests
# Notice the impersonate parameter
r = requests.get("https://tls.browserleaks.com/json", impersonate="chrome101")
print(r.json())
# output: {'ja3_hash': '53ff64ddf993ca882b70e1c82af5da49'
# the fingerprint should be the same as target browser
1条答案
按热度按时间kwvwclae1#
原因是网站使用TLS hello包对您的请求进行指纹识别。存在
JA3
这样的库,可以为每个请求生成指纹。它们会故意阻止requests
或urllib
这样的http客户端。如果您使用MITM代理,因为代理服务器与服务器创建了新的TLS连接,服务器只能看到代理服务器的指纹。所以他们不会阻止它。如果服务器只阻止某些流行的http库,您可以简单地更改TLS版本,那么您将拥有与默认指纹不同的指纹。
如果服务器只允许流行的现实世界的浏览器,并且只接受它们作为有效的请求,你将需要能够模拟浏览器指纹的库,其中之一就是curl-impersonate和它的python绑定curl_cffi。