Python请求模块-代理不工作



我试图连接到网站与python请求,但不是我的真实IP。因此,我在互联网上找到了一些代理,并编写了以下代码:

import requests
proksi = {
    'http': 'http://5.45.64.97:3128'
}
x = requests.get('http://www.whatsmybrowser.org/', proxies = proksi)
print(x.text)

当我得到输出,代理简单不工作。站点返回我的真实IP地址。我做错了什么?谢谢。

答案很简单。虽然它是一个代理服务,但它不能保证100%匿名。当您通过代理服务器发送HTTP GET请求时,您的程序向代理服务器发送的请求是:

GET http://www.whatsmybrowser.org/ HTTP/1.1
Host: www.whatsmybrowser.org
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.10.0

现在,当代理服务器向实际目的地发送此请求时,它发送:

GET http://www.whatsmybrowser.org/ HTTP/1.1
Host: www.whatsmybrowser.org
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.10.0
Via: 1.1 naxserver (squid/3.1.8)
X-Forwarded-For: 122.126.64.43
Cache-Control: max-age=18000
Connection: keep-alive

你可以看到,它抛出你的IP(在我的情况下,122.126.64.43)在HTTP头:X-Forwarded-For,因此网站知道请求是代表122.126.64.43发送的

阅读更多关于这个标题:https://www.rfc-editor.org/rfc/rfc7239

如果您想要托管自己的squid代理服务器并想要禁用设置X-Forwarded-For头,请阅读:http://www.squid-cache.org/Doc/config/forwarded_for/

最新更新