无法使用 urllib3 连接到付费代理服务器

问题描述 投票:0回答:0

我是 urllib3 的新手。我正在尝试使用 urllib3 从网站获取信息。连接是通过付费代理服务完成的。花了一段时间,但我想我了解如何设置授权信息。我尝试了 3 种不同的方法(代码集)来建立连接。

这是所有 3 次连接尝试共有的一些 python。

import urllib3
url = 'https://httpbin.org/ip'
httpProxy = "http://proxy.packetstream.io:31112"
httpsProxy = "https://proxy.packetstream.io:31112"
authString = "myusername:mypassword" # I won't expose my username & password here

以下是我的第一次连接尝试。它使用超时和标头来定义授权凭据。

timeout = urllib3.util.Timeout(connect=3.0, read=4.0)
defaultHeaders = urllib3.util.make_headers(proxy_basic_auth=authString)
proxy = urllib3.ProxyManager(httpsProxy, headers=defaultHeaders)
response = proxy.request('GET', url, timeout=timeout)

此连接尝试得到回溯,其中一行显示“TimeoutError: _ssl.c:980: The handshake operation timed out”

下面是我的第二次连接尝试。它使用更长的超时时间和标头来定义授权凭据。

timeout = urllib3.util.Timeout(connect=5.0, read=9.0)
defaultHeaders = urllib3.util.make_headers(proxy_basic_auth=authString)
proxy = urllib3.ProxyManager(httpsProxy, headers=defaultHeaders)
response = proxy.request('GET', url, timeout=timeout)

此尝试得到回溯,其中一行显示“TimeoutError: _ssl.c:980: The handshake operation timed out”

下面是我的第三次连接尝试。它不使用任何超时,并且有一个标头来定义授权凭据。

defaultHeaders = urllib3.util.make_headers(proxy_basic_auth=authString)
proxy = urllib3.ProxyManager(httpsProxy, headers=defaultHeaders)
response = proxy.request('GET', url)

此尝试得到回溯,其中一行显示“ssl.SSLZeroReturnError:TLS/SSL 连接已关闭 (EOF) (_ssl.c:997)”

因为我是 urllib3 的新手,并且通常使用代理我不知道我遇到的问题是我的代码(对 urllib3 的不正确理解),还是我偶然发现了 urllib3 中的错误,或者如果代理服务器有问题。我问过代理服务器提供商他们的服务器是否有配置问题,但他们没有回复。

顺便说一句,我已经能够使用不需要带有授权凭据的标头的免费代理编写并成功连接到如上所示的同一网站。

我期待从 urllib3 返回的有效响应,我可以通过做这样的事情来处理:

jsonResp = json.loads(response.data.decode('utf-8'))
ip = jsonResp['origin'] 
print('The ip address was', ip)

因为我得到了回溯,这个代码块永远不会执行。当我将 urllib3 与免费代理一起使用时,我确实得到了有效的回复。

任何帮助将不胜感激。

itman53

urllib3
© www.soinside.com 2019 - 2024. All rights reserved.