Python 的 Requests 库捆绑了chardet
和urllib3
包。
这可能意味着捆绑版本会有错误。我想知道是否有一种干净或简单的方法来获取使用不同版本的urllib3的请求。例如,我是否可以pip install requests urllib3
然后让请求自动使用该版本?
我知道如果安装了certifi
,请求会自动使用 certifi
而不是其捆绑的证书,但我找不到这样的文档urllib3
.
否则,我看到的选项是:
- 获取合并最新版本 urllib3 的请求,
- 分叉我自己的请求版本并使用它。
截至今天,您概述的选项是正确的。
有一些关于使用urllib3系统版本的请求设置的讨论,但我认为它还没有实现。一些 Linux 发行版的打包实际上修补了使用 urllib3 系统版本的请求(并相应地固定它),因此这不是一个罕见的请求。
至于将 certifi 与 urllib3 一起使用,在文档的安全部分中进行了概述。这是主要部分:
import urllib3
import certifi
http = urllib3.PoolManager(
cert_reqs='CERT_REQUIRED', # Force certificate check.
ca_certs=certifi.where(), # Path to the Certifi bundle.
)
# You're ready to make verified HTTPS requests.
try:
r = http.request('GET', 'https://example.com/')
except urllib3.exceptions.SSLError as e:
# Handle incorrect certificate error.
...