我有两个URL可从中获取数据。使用我的代码,第一个URL有效,而第二个URL给出ProxyError
。
我在Python 3中使用requests
库,并尝试在Google和此处搜索问题,但未成功。
我的代码段是:
import requests
proxies = {
'http': 'http://user:[email protected]:xxxx',
'https': 'http://user:[email protected]: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()
时也会发生同样的情况请向我解释为什么会这样,并且两个URL的握手之间有什么区别吗?
urllib.request.urlopen
工作正常,所以我明确地使用requests
寻找答案 最佳答案
当将headers关键字参数与url2
字符串设置为User-Agent
时,我能够对Chrome
提出有效的响应。
r2 = requests.get(url2, proxies=proxies, headers={'User-Agent': 'Chrome'})
要回答您的第一个问题,发生这种情况的可能原因与服务器端设置有关。它可能配置为不接受来自未知代理的请求或缺少
User-Agent
标头的请求。