您的位置:

最佳方案处理urllib3 ProxySchemeUnsupported("TLS in TLS requires support for the 'ssl' module")

  发布时间:2023-02-16 11:10:33
报错的原因urllib在使用TLS over TLS时需要'ssl'模块的支持, 但是在这种情况下它没有被找到或者没有被正确配置,这就是urllib抛出错误的原因。确保所使用的python版本支持'ssl'模块, 运行以下代码来确认更新urllib库。如果上面的方法都不能解决问题,你可以尝试使用其他的http客户端库,如 requests 库。

报错的原因

urllib3在使用TLS over TLS时需要'ssl'模块的支持, 但是在这种情况下它没有被找到或者没有被正确配置,这就是urllib3抛出ProxySchemeUnsupported("TLS in TLS requires support for the 'ssl' module")错误的原因。

如何解决

可以使用下面的方式来解决这个问题:

1. 安装'openssl'库,在终端中运行:


pip install pyOpenSSL

2. 配置代理服务器时,使用HTTPS代理,而不是HTTP代理。

3. 确保所使用的python版本支持'ssl'模块, 运行以下代码来确认:


import ssl
print(ssl.OPENSSL_VERSION)

4. 更新urllib3库。

如果上面的方法都不能解决问题,你可以尝试使用其他的http客户端库,如 requests 库。

使用例子

可以使用下面的代码示例来使用代理服务器来发送一个HTTP请求:


import urllib3

# 代理服务器的地址和端口号
proxy_url = "https://proxy.example.com:8080"

# 创建一个 urllib3 的连接池,并设置代理
http = urllib3.PoolManager(proxy_url=proxy_url, proxy_headers=urllib3.make_headers(proxy_basic_auth='username:password'))

# 发送一个 GET 请求
response = http.request('GET', 'http://httpbin.org/get')

# 打印响应内容
print(response.data)

请注意,上面的代理服务器示例使用了基本身份验证,所以你需要提供用户名和密码。

当然你也可以使用 requests 库来发送请求:


import requests

# 代理服务器的地址和端口号
proxy_url = "https://proxy.example.com:8080"

# 代理服务器的用户名和密码
proxy_auth = ("username", "password")

# 使用代理服务器发送请求
response = requests.get("http://httpbin.org/get", proxies={"https": proxy_url}, auth=proxy_auth)

# 打印响应内容
print(response.content)

两种方法都能解决问题, 根据你的需求和喜好选择适合你的方法。