You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Requests库时,如何查询请求所采用的TLS版本?

嘿,这个问题我刚好在日常调试中碰到过好几次,其实有几种靠谱的方式能查到Requests发起请求时实际使用的TLS版本,我给你拆解一下具体做法:

方法1:启用Requests调试日志快速查看

这是最快捷的方式,不需要改太多代码,只要开启Requests的底层日志,就能在输出里找到TLS握手的细节。

你只需要先配置日志级别,然后发起请求,日志里会明确打印出使用的TLS版本:

import requests
import logging

# 开启urllib3的调试日志,Requests底层依赖它
logging.basicConfig(level=logging.DEBUG)
requests.get('https://example.com')

运行后,你会在日志输出里找到类似这样的内容:

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): example.com:443
DEBUG:urllib3.connectionpool:https://example.com:443 "GET / HTTP/1.1" 200 648
DEBUG:urllib3.util.ssl_:Secure connection established: TLSv1.3

最后一行里的TLSv1.3就是实际使用的版本。

方法2:自定义适配器在代码中直接获取版本号

如果需要在代码逻辑里拿到TLS版本(比如做版本校验、日志记录),可以自定义一个HTTP适配器,通过访问底层的SSL套接字来获取版本:

import requests
from requests.adapters import HTTPAdapter
import ssl

class TLSInfoAdapter(HTTPAdapter):
    def init_poolmanager(self, *args, **kwargs):
        # 创建默认的SSL上下文,也可以自定义允许的TLS版本范围
        ssl_context = ssl.create_default_context()
        kwargs['ssl_context'] = ssl_context
        return super().init_poolmanager(*args, **kwargs)

# 创建Session并挂载自定义适配器
session = requests.Session()
session.mount('https://', TLSInfoAdapter())

# 发起请求
response = session.get('https://example.com')

# 从连接对象中获取SSL套接字,进而拿到TLS版本
connection = response.connection
tls_version = connection.sock.version()
print(f"当前请求使用的TLS版本:{tls_version}")

运行这段代码会直接输出类似当前请求使用的TLS版本:TLSv1.3的结果。

方法3:利用SSL上下文回调追踪握手过程

还有一种更灵活的方式,通过SSL上下文的握手后回调函数,在握手完成时自动获取TLS版本:

import requests
import ssl
from requests.adapters import HTTPAdapter

# 定义握手完成后的回调函数
def log_tls_version(ssl_socket):
    tls_version = ssl_socket.version()
    print(f"TLS握手完成,使用版本:{tls_version}")

# 创建Session和自定义SSL上下文
session = requests.Session()
ssl_context = ssl.create_default_context()
# 设置握手后回调
ssl_context.cb_after_handshake = log_tls_version

# 挂载适配器
adapter = HTTPAdapter()
adapter.init_poolmanager(ssl_context=ssl_context)
session.mount('https://', adapter)

# 发起请求,回调会自动触发
session.get('https://example.com')

补充说明

要注意,Requests支持的TLS版本其实依赖于你的Python版本和系统底层的OpenSSL版本:

  • Python 3.7及以上版本默认支持TLS 1.2和1.3
  • 如果系统OpenSSL版本过低,可能无法使用高版本的TLS

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:30:04