无法在python中的requests.get()或requests.post()上连接到代理错误

时间:2019-01-10 15:20:55

标签: python proxy request python-requests http-proxy

我有两个URL可以从中获取数据。使用我的代码,第一个URL在起作用,而第二个URL在给ProxyError

我正在Python 3中使用requests库,并尝试在Google和此处搜索问题,但没有成功。

我的代码段是:

    import requests

    proxies = {
      'http': 'http://user:pass@xxx.xxx.xxx.xxx:xxxx',
      'https': 'http://user:pass@xxx.xxx.xxx.xxx:xxxx',
    }

    url1 = 'https://en.oxforddictionaries.com/definition/act'
    url2 = 'https://dictionary.cambridge.org/dictionary/english/act'

    r1 = requests.get(url1, proxies=proxies)
    r2 = requests.get(url2, proxies=proxies)

url1可以正常工作,但是url2给出以下错误:

    ProxyError: HTTPSConnectionPool(host='dictionary.cambridge.org', port=443): Max retries exceeded with url: /dictionary/english/act (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response',)))

使用request.post()

时也会发生
  1. 请解释一下为什么会发生这种情况,并且两个URL的握手之间是否有区别?

  2. urllib.request.urlopen工作正常,所以我明确地使用requests

  3. 寻找答案

1 个答案:

答案 0 :(得分:2)

使用标头关键字参数并将url2字符串设置为User-Agent时,我可以对Chrome进行有效的响应。

r2 = requests.get(url2, proxies=proxies, headers={'User-Agent': 'Chrome'})

要回答您的第一个问题,发生这种情况的可能原因与服务器端设置有关。可能已将其配置为不接受来自未知代理的请求或缺少User-Agent头的请求。