【问题标题】:Python requests.get proxy not working?Python requests.get 代理不起作用?
【发布时间】:2013-09-27 19:26:55
【问题描述】:

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

我正在尝试使用代理访问 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)

【问题讨论】:

  • 您似乎正确地传递了参数。如果代理是透明的 HTTP 代理并添加包含您的真实 IP 的标头,您是否尝试过几个不同的“检查我的 IP”网站?
  • @Anorov,我试过check.torproject.org、whatsmyip.org 和whatsmyip.us。如果您认为代理是带有标头的透明 HTTP 代理的理论,我如何确定是否是这种情况?
  • 在您控制的服务器上设置一个小的 PHP 脚本,它只执行 <?php echo $_SERVER['REMOTE_ADDR']; ?>

标签: python proxy python-requests


【解决方案1】:

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

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

【讨论】:

  • 我知道这是不久前发布的,但我遇到了完全相同的问题,想知道是否有人可以提出解决方法/解决方案?
  • 我也想要一个解决方法,如果有人有的话。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多