urllib3 HTTPS请求示例

urllib3 通过 SSL/TLS 建立 HTTPS 连接,流程:

DNS解析
 ↓
TCP连接
 ↓
TLS握手(证书校验)
 ↓
HTTP请求

兼容http/https

1
2
3
4
5
6
7
8
9
10
11
import urllib3

http = urllib3.PoolManager()

r = http.request(
"GET",
"https://example.com"
)

print(r.status)
print(r.data)

忽略证书校验(测试环境)

1
2
3
4
5
6
import urllib3

http = urllib3.PoolManager(
cert_reqs="CERT_NONE"
)
r = http.request("GET", "https://example.com")

关键对象

PoolManager
    |
    └── HTTPSConnectionPool
            |
            └── HTTPSConnection
                    |
                    └── ssl.SSLContext

作用:

  • PoolManager:连接池管理
  • HTTPSConnection:建立 HTTPS 连接
  • SSLContext:控制 TLS、证书、加密算法