【问题标题】:Right usage of second argument in proxy代理中第二个参数的正确使用
【发布时间】:2019-05-10 10:33:22
【问题描述】:

当我向https 站点发出请求时,在代理的第二个参数中使用htt(p|ps) 的正确方法是什么?我在下面使用的代理只是一个占位符。

当我这样尝试时(它有效):

proxies = {
  'https': 'http://79.170.192.143:34394',
}

当我这样尝试时(它也可以):

proxies = {
  'https': 'https://79.170.192.143:34394',
}

代理中的第二个htt(p|ps) 只是一个占位符吗?如果我向http 站点发出请求怎么办?

【问题讨论】:

标签: python python-3.x web-scraping proxy


【解决方案1】:

在这种情况下,两个设置都有效。就个人而言,我宁愿使用适当的协议,因为它并不模棱两可,但两种设置都会导致相同的连接。即使没有设置协议,

proxies = {'https': '79.170.192.143:34394'}

所有 HTTPS 请求都将使用此代理。

对于 HTTP 和 HTTPS 代理,不需要包含协议(可以由请求 URL 方案确定)。但是,对于 SOCKS 代理,我们必须使用正确的协议,例如:

proxies = {'https': 'socks5://79.170.192.143:34394'}

否则连接将失败。

代理字典中的“https”键指定连接到目标主机的协议。如果有“https”键,则所有 HTTPS 连接都将使用代理。除非代理中有“http”键,否则不会代理 HTTP 请求。

代理 URL 字符串中的“https”指定与代理服务器通信的协议。通常,使用正确的协议(即https://79.170.192.143:34394)很重要,但在这种情况下没有区别。创建 HTTPS 连接 (source code) 时仅使用代理主机和端口,并忽略协议。

虽然此特定配置有效,但最好使用正确的协议。例如,以下代理设置将无法建立连接。

proxies = {'http': 'https://79.170.192.143:34394'}
proxies = {'https': 'socks5://79.170.192.143:34394'}
proxies = {'https': 'invalid-scheme://79.170.192.143:34394'}

【讨论】:

  • 非常感谢@t.m.adam。我知道你一定会引导我找到解决方案。
  • 看看我在我的赏金问题@t.m.adam 中得到的答案。你的解决方案总是优雅的,这就是我不时小心打扰你的原因。谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2013-12-19
  • 2017-02-27
  • 2019-12-09
  • 2017-12-12
相关资源
最近更新 更多