如何检查 Proxy headers 以检查匿名性?
How to check Proxy headers to check anonymity?
我正在尝试确定高匿名代理。也称为 private/elite 代理。我从论坛上读到这个:
High anonymity Servers don't send HTTP_X_FORWARDED_FOR, HTTP_VIA and
HTTP_PROXY_CONNECTION variables. Host doesn't even know you are using
proxy server and of course it doesn't know your IP address.
A highly anonymous proxy will display the following information:
REMOTE_ADDR = Proxy's IP address
HTTP_VIA = blank
HTTP_X_FORWARDED_FOR = blank
那么,我如何检查 Python 中的 headers,将它们作为 HA 代理丢弃?我尝试使用 requests
程序包、urllib、build-in http.client 和 urllib2 来检索 20-30 个代理的 headers。但是我没有看到这些 headers,从来没有。所以我应该做错了什么......
这是我用来测试的代码 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)
听起来您所指的论坛 post 是在谈论 服务器 根据您的代理请求看到的 headers,而不是headers 被 客户端 在代理响应上看到。
由于您使用 www.python.org
作为服务器进行测试,因此查看它接收到的 headers 的唯一方法是访问其日志。你不知道。
但有一个简单的解决方案:运行您自己的 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.
我正在尝试确定高匿名代理。也称为 private/elite 代理。我从论坛上读到这个:
High anonymity Servers don't send HTTP_X_FORWARDED_FOR, HTTP_VIA and HTTP_PROXY_CONNECTION variables. Host doesn't even know you are using proxy server and of course it doesn't know your IP address.
A highly anonymous proxy will display the following information:
REMOTE_ADDR = Proxy's IP address
HTTP_VIA = blank
HTTP_X_FORWARDED_FOR = blank
那么,我如何检查 Python 中的 headers,将它们作为 HA 代理丢弃?我尝试使用 requests
程序包、urllib、build-in http.client 和 urllib2 来检索 20-30 个代理的 headers。但是我没有看到这些 headers,从来没有。所以我应该做错了什么......
这是我用来测试的代码 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)
听起来您所指的论坛 post 是在谈论 服务器 根据您的代理请求看到的 headers,而不是headers 被 客户端 在代理响应上看到。
由于您使用 www.python.org
作为服务器进行测试,因此查看它接收到的 headers 的唯一方法是访问其日志。你不知道。
但有一个简单的解决方案:运行您自己的 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.