Python请求模块 - 代理不工作
问题描述:
我试图用python请求连接到网站,但不是用我的真实IP。所以,我发现在互联网上的一些代理,并写了这个代码:Python请求模块 - 代理不工作
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
了解更多关于这个^ h发送EADER在:https://tools.ietf.org/html/rfc7239
如果你想举办自己的Squid代理服务器,并希望禁止设置X-Forwarded-For
标题,写着:http://www.squid-cache.org/Doc/config/forwarded_for/