4

我是一个新开发者,所以请原谅我的无知。

我正在尝试使用代理访问 Python 中的一些网页。我已经尝试将 urllib2 和 requests 模块与我认为可以工作的各种代理一起使用。但是,当我去一个站点验证我的 ip 是否显示为代理时,它仍然显示我的实际 ip 地址而不是代理!

这使我得出结论,有四种可能的事情发生:

  1. 这些模块坏了。这似乎不太可能,但有可能。
  2. 我的代码不正确。很有可能,但是我无法具体确定任何错误。
  3. 有一些方法可以检测根 IP,即使它们是通过代理路由的。
  4. 我没有想到的东西。

任何帮助表示赞赏!

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)
4

2 回答 2

1

您的代码似乎很正确。我怀疑这些站点实际上是在使用 X_FORWARDED_FOR 或其他类似的 HTTP 标头值,这使得您的选项 3 最有可能。

您的所有示例肯定都使用我的原始 IP 地址而不是我的代理地址,但当我通过 VPN 跳转时除外,这表明它们实际上正在使用此标头。

于 2013-09-23T02:33:01.337 回答
0

我遇到了类似的问题,结果证明它是一个透明代理,并且正在传递根 IP。所以选项3。

您可以通过http://www.lagado.com/proxy-test运行请求来进一步测试

这会向您显示您的请求已通过的任何透明代理,因此您可以测试代理是否实际工作。

于 2015-09-13T15:57:17.787 回答