Dil*_*lli 4 python ssl python-requests http2
我正在尝试通过 python-requests 复制以下客户端请求。
在客户端连接下,我看到 HTTP 版本为 2.0,TLS 版本为 1.3,据我所知,我知道请求使用 TLS 1.3。到目前为止,我的请求失败了。
我想知道我是否需要通过证书。我想了解此请求与常规请求有何不同
r = requests.get('someurl')
Run Code Online (Sandbox Code Playgroud)
如何使用请求来使用请求中显示的确切客户端连接?我不完全理解每个指针,我将如何使用具有特定密码名称的 h2 ALPN/?我不期望对这个问题有一个可靠的答案,而解释会更有帮助!
python-requests不支持HTTP 2请求。您可以使用httpx包。
HTTPX 是 Python 3 的全功能 HTTP 客户端,它提供同步和异步 API,并支持HTTP/1.1和HTTP/2。
例子
import ssl
import httpx
# create an ssl context
ssl_context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS)
# ssl.PROTOCOL_TLS - Selects the highest protocol version that both the client and server support.
# Despite the name, this option can select both "SSL" and "TLS" protocols.
# set protocol to use
ssl_context.set_alpn_protocols(["h2"])
CIPHERS = 'ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:!aNULL:!eNULL:!MD5:!3DES'
# set ciphers
ssl_context.set_ciphers(CIPHERS)
# httpx verify param lets you pass a standard library ssl.SSLContext
response = httpx.get('https://example.com', verify=ssl_context)
print(response.http_version)
# outputs HTTP/2
Run Code Online (Sandbox Code Playgroud)
除了使用
ssl.SSLContext,您还可以使用httpx.create_ssl_context()来设置 ssl 上下文。
据我所知python-requests是一个库,目前1 不支持HTTP/2.0. 这个问题已经在这里得到解答。
然而,有像Python httpx这样的 Python 库支持HTTP/2.0!
亲切的问候,
1二月 16, 2021
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |