【问题标题】:Cant seem to get https and socks proxies to work using python requests似乎无法让 https 和 socks 代理使用 python 请求工作
【发布时间】:2013-08-28 21:53:34
【问题描述】:

所以我正在使用wireshark 查看流量并比较多种情况的输出。我只关注我和 google.co.za 之间的流量。

情况一:不使用代理访问google.co.za

requests.get('www.google.co.za')

这会返回状态=200 的响应,wireshark 会显示有关我的电脑和谷歌服务器之间的流量传递的信息。到目前为止,这很棒。

情况 2:使用有效的 http 代理访问 google.co.za

requests.get("http://google.co.za",proxies={'http':proxy})

这会返回一个 status=200 的响应,wireshark 会显示no关于我的电脑和 google 的服务器之间传递的流量的数据。这真是太棒了,令人期待。

情况 3:使用有效的 socks 代理访问 google.co.za

requests.get("http://google.co.za",proxies={'socks':proxy})

根据情况1的结果。嗯

情况4:同样处理https

requests.get("http://google.co.za",proxies={'https':proxy})

结果与情况 1 相同。

问题

所以当我尝试使用 https 和 socks 代理请求时,看起来代理参数是空的。现在我需要通过各种代理传递流量,并且我不想要任何静默失败。

我的问题是:为什么事情会默默地失败,我能做些什么来解决它?

【问题讨论】:

    标签: python proxy python-requests


    【解决方案1】:

    Requests 还不支持 SOCKS 或 HTTPS 代理。

    不过,他们正在努力。见这里:https://github.com/kennethreitz/requests/pull/1515

    对 HTTPS 代理的支持已经合并到 requests 2.0 分支中,所以如果你喜欢你可以试试那个版本;不过要小心,因为它目前是一个不稳定的分支。

    另一方面,SOCKS 代理支持仍在底层库中进行开发,urllib3:https://github.com/shazow/urllib3/pull/68

    此外,无论如何,您都错误地使用了proxies 参数。它应该是 {protocol_of_sites_you_visit: proxy} 的形式,所以一旦支持完成,使用 SOCKS5 代理实际上会更符合 {"http": "socks5://127.0.0.1:9050"} 的路线。

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 2022-12-23
      • 2021-12-05
      • 2011-11-30
      • 2015-09-20
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多