python 巨蟒要求采集指纹?

waxmsbnn  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(389)

我正在破解一个amazon api,当只使用python请求而不使用代理时,它会提示验证码,当通过fiddler路由python请求时,它似乎没有问题地通过了,有没有可能amazon给python请求打了指纹,fiddler因为是代理而更改了指纹?
我查看了fiddler和python请求发送的头,它们是相同的。
fiddler上没有exra代理/fiddler规则/过滤器设置来创建更改。
需要说明的是,所有提到的代理都只在本地完成,所以它不会改变公共ip地址。
谢谢大家!

kwvwclae

kwvwclae1#

原因是网站使用TLS hello包对您的请求进行指纹识别。存在JA3这样的库,可以为每个请求生成指纹。它们会故意阻止requestsurllib这样的http客户端。如果您使用MITM代理,因为代理服务器与服务器创建了新的TLS连接,服务器只能看到代理服务器的指纹。所以他们不会阻止它。
如果服务器只阻止某些流行的http库,您可以简单地更改TLS版本,那么您将拥有与默认指纹不同的指纹。
如果服务器只允许流行的现实世界的浏览器,并且只接受它们作为有效的请求,你将需要能够模拟浏览器指纹的库,其中之一就是curl-impersonate和它的python绑定curl_cffi

pip install curl_cffi
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

相关问题