【发布时间】:2013-09-27 19:26:55
【问题描述】:
我是一个新开发者,所以请原谅我的无知。
我正在尝试使用代理访问 Python 中的某些网页。我已经尝试将 urllib2 和 requests 模块与我认为可以工作的各种代理一起使用。但是,当我去一个站点验证我的 ip 是否显示为代理时,它仍然显示我的实际 ip 地址而不是代理!
这使我得出结论,有四种可能的情况发生:
- 这些模块已损坏。这似乎不太可能,但有可能。
- 我的代码不正确。很有可能,但我无法明确确定任何错误。
- 有一些方法可以检测根 IP,即使它们通过代理进行路由。
- 我没想到的东西。
感谢任何帮助!
import requests
import urllib2
from bs4 import BeautifulSoup
# Using requests module
proxy_dict = {"http":"http://123.45.172.115:8080"}
url = 'https://check.torproject.org/'
response = requests.get(url, proxies=(proxy_dict))
html = response.content
soup = BeautifulSoup(html)
ip = str(soup.b.text)
# Using urllib2
prox = urllib2.ProxyHandler(proxy_dict)
opener = urllib2.build_opener(prox, urllib2.HTTPHandler(debuglevel=1))
urllib2.install_opener(opener)
response = opener.open(url)
【问题讨论】:
-
您似乎正确地传递了参数。如果代理是透明的 HTTP 代理并添加包含您的真实 IP 的标头,您是否尝试过几个不同的“检查我的 IP”网站?
-
@Anorov,我试过check.torproject.org、whatsmyip.org 和whatsmyip.us。如果您认为代理是带有标头的透明 HTTP 代理的理论,我如何确定是否是这种情况?
-
在您控制的服务器上设置一个小的 PHP 脚本,它只执行
<?php echo $_SERVER['REMOTE_ADDR']; ?>
标签: python proxy python-requests