最佳方案处理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)
两种方法都能解决问题, 根据你的需求和喜好选择适合你的方法。