您的位置:

urllib3出现ValueError("Can't specify both 'ssl_version' and either ""'ssl_minimum_version' or 'ssl_maximum_version'")的解决方案

  发布时间:2023-01-29 04:30:02
报错的原因urllib库在使用中会出现的ValueError错误,是因为在同时设置了'ssl_version'和其他或中的任意一个参数。另外一个例子这个例子中使用了和来设置ssl版本为TLS v1.2注意:在这两个例子中,不能同时使用'ssl_version'和其他或参数。

报错的原因

urllib3库在使用中会出现"Can't specify both 'ssl_version' and either ""'ssl_minimum_version' or 'ssl_maximum_version'"的ValueError错误,是因为在同时设置了'ssl_version'和其他'ssl_minimum_version'或'ssl_maximum_version'中的任意一个参数。在这种情况下,应该只使用一个参数来设置ssl版本。

如何解决

解决方法是,只使用一种方式来设置ssl版本,而不是同时使用'ssl_version'和其他'ssl_minimum_version'或'ssl_maximum_version'参数。

例如,如果你想设置ssl版本为TLS v1.2,可以使用以下方式:


import urllib3
http = urllib3.PoolManager(
    cert_reqs='CERT_REQUIRED',
    ssl_version='TLSv1_2')

或者使用


import urllib3
http = urllib3.PoolManager(
    cert_reqs='CERT_REQUIRED',
    ssl_minimum_version='TLSv1_2',
    ssl_maximum_version='TLSv1_2')

两种方式均可,但不能同时使用'ssl_version'和其他'ssl_minimum_version'或'ssl_maximum_version'参数。

使用例子

是的,下面是一个例子:


import urllib3

http = urllib3.PoolManager(
    cert_reqs='CERT_REQUIRED',
    ssl_version='TLSv1_2')

response = http.request('GET', 'https://example.com')

print(response.status)

这个例子中使用了 'ssl_version'来设置ssl版本为TLS v1.2。

另外一个例子


import urllib3
http = urllib3.PoolManager(
    cert_reqs='CERT_REQUIRED',
    ssl_minimum_version='TLSv1_2',
    ssl_maximum_version='TLSv1_2')
response = http.request('GET', 'https://example.com')
print(response.status)

这个例子中使用了'ssl_minimum_version'和'ssl_maximum_version'来设置ssl版本为TLS v1.2

注意:在这两个例子中,不能同时使用'ssl_version'和其他'ssl_minimum_version'或'ssl_maximum_version'参数。