我正在尝试确定高匿名代理。也称为私人/精英代理。我从一个论坛上看到了这个:
高匿名服务器不发送HTTP_X_FORWARDED_FOR, HTTP_VIA和HTTP_PROXY_CONNECTION变量。主人甚至不知道你在用代理服务器,当然它不知道你的IP地址。
高度匿名的代理将显示以下信息:
REMOTE_ADDR =代理的IP地址
HTTP_VIA = blank
HTTP_X_FORWARDED_FOR = blank
那么,我如何在Python中检查这个头,将它们作为HA代理丢弃?我试图使用requests
包检索20-30个代理的标头,也使用urllib,内置http。客户端,使用urllib2。但我没有看到这些头球,从来没有。所以我应该做错了什么…
这是我用来测试requests
的代码:
proxies = {'http': 'http://176.100.108.214:3128'}
header = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.360',}
s = requests.session()
s.proxies = proxies
r = s.get('http://www.python.org', headers=header)
print(r.status_code)
print(r.request.headers)
print(r.headers)
这听起来像你所指的论坛帖子是在谈论由服务器在代理请求上看到的头,而不是由客户端在代理响应上看到的头。
因为你测试与www.python.org
作为服务器,唯一的方法来看到它收到的头将有访问他们的日志。而你没有。
但是有一个简单的解决方案:运行你自己的HTTP服务器,对它发出请求,然后你就可以看到它收到了什么。(如果你在防火墙或NAT后面,你测试的代理无法连接,你可能需要在某个地方获得一个免费的托管服务器;如果没有,你可以直接在你的机器上运行。
如果你不知道如何设置和配置web服务器,Python提供了它自己的一个。只需使用Python 3.2+运行此脚本(在您自己的机器上,或Amazon EC2免费实例上,或其他):
from http.server import HTTPServer, SimpleHTTPRequestHandler
class HeaderDumper(SimpleHTTPRequestHandler):
def do_GET(self):
try:
return super().do_GET()
finally:
print(self.headers)
server = HTTPServer(("", 8123), HeaderDumper)
server.serve_forever()
然后在shell中使用python3
运行脚本。
然后运行您的客户端脚本,使用http://my.host.ip
而不是http://www.python.org
,并查看脚本转储到服务器shell的内容。