Python 请求指纹识别?

Zan*_*nga 1 python captcha fiddler python-requests

我正在编写一个 Amazon API,当仅使用 Python 请求而不使用代理时,它会提示输入验证码。当通过 fiddler 路由这个 python 请求流量时,它似乎没有问题地通过。亚马逊是否有可能对 Python 请求进行指纹识别,而 fiddler 由于它是代理而更改了指纹?

我查看了从 fiddler 和 Python 请求发送的标头,它们是相同的。

在 fiddler 上没有设置额外的代理/fiddler 规则/过滤器来创建更改。

需要明确的是,所有提到的代理仅在本地完成,因此不会更改公共 IP 地址。

osp*_*der 5

原因是网站正在使用 TLS hello 包对您的请求进行指纹识别。存在类似JA3为每个请求生成指纹的库。他们会故意阻止 http 客户端,例如requestsurllib。如果您使用 MITM 代理,因为代理服务器会与服务器创建新的 TLS 连接,所以服务器只能看到代理服务器的指纹,因此不会阻止它。

如果服务器只阻止某些流行的http库,您只需更改TLS版本,那么您将拥有与默认指纹不同的指纹。

如果服务器只允许流行的现实世界浏览器,并且只接受它们作为有效请求,那么您将需要可以模拟浏览器指纹的库,其中之一是curl-impersonate及其python绑定curl_cffi

pip install curl_cffi
Run Code Online (Sandbox Code Playgroud)
pip install curl_cffi
Run Code Online (Sandbox Code Playgroud)