代理中第二个参数的正确用法

时间:2018-12-09 07:12:06

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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'}