0

我正在尝试确定高匿名代理。也称为私人/精英代理。从一个论坛我读过这个:

高匿名服务器不发送 HTTP_X_FORWARDED_FOR、HTTP_VIA 和 HTTP_PROXY_CONNECTION 变量。主机甚至不知道您正在使用代理服务器,当然它也不知道您的 IP 地址。

高度匿名的代理将显示以下信息:

REMOTE_ADDR = 代理的 IP 地址

HTTP_VIA = 空白

HTTP_X_FORWARDED_FOR = 空白

那么,我如何在 Python 中检查此标头,将它们作为 HA 代理丢弃?我尝试使用requests包检索 20-30 个代理的标头,也使用 urllib,使用内置 http.client,使用 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)
4

1 回答 1

0

听起来您所指的论坛帖子是在谈论服务器在您的代理请求中看到的标头,而不是客户端在代理响应中看到的标头。

由于您正在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,并查看脚本转储到服务器外壳的内容。

于 2015-05-18T00:11:29.340 回答