轻松升级 Requests 的 urllib3 版本?

Easily upgrade Requests's vendored version of urllib3?

Python 的请求库 bundles the chardet and urllib3 packages.

这可能意味着捆绑版本会有错误。我想知道是否有一种干净或简单的方法来让请求使用不同版本的 urllib3。例如,我可以 pip install requests urllib3 然后让请求自动使用该版本吗?

我知道如果安装了 certifi,Requests automatically uses certifi 而不是它的捆绑证书,但是我找不到 urllib3.

这样的文档

否则我看到的选项是:

  1. 获取合并最新版本 urllib3 的请求,
  2. 分叉我自己的请求版本并使用它。

截至今天,您概述的选项都是正确的。

有人说要有一个使用 urllib3 系统版本的 Requests 设置,但我认为它没有实现。一些 Linux 发行版的包装实际上修补了使用 urllib3 的系统版本的请求(并相应地固定它),所以这不是一个不常见的请求。

关于将 certifi 与 urllib3 一起使用,it's outlined in the Security section 文档。这是主要部分:

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.
    ...