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

如何使用Axios获取服务器支持的所有TLS版本与Cipher套件列表

结论

Axios本身的请求/响应对象未提供任何原生属性或方法,可以直接获取目标服务器支持的完整TLS版本和Cipher套件列表。

你当前使用的request.connection.ssl.getCurrentCipher()确实仅能返回当前连接协商使用的单个Cipher套件,TLS版本信息同理仅能获取到当前连接正在使用的版本,无法拿到服务端完整的支持列表。

原因解释

TLS握手是单次协商机制:客户端和服务端只会在握手时选择一组双方都支持的最高优先级TLS版本+Cipher组合用于当前连接,单次Axios请求只会触发一次TLS协商,因此不可能通过单次请求直接拿到服务端所有支持的组合。

可行的实现方案

要获取目标服务端完整的TLS版本和Cipher支持列表,需要主动发起多轮探测,具体逻辑如下:

  • 遍历所有主流TLS版本(TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3)
  • 对每个指定的TLS版本,遍历所有可能的Cipher套件,逐个尝试建立TLS连接
  • 所有连接成功的TLS版本和Cipher组合,就是该服务端支持的完整列表

你可以基于Node.js原生tls模块实现上述探测逻辑,再封装到Axios的自定义请求逻辑或拦截器中,无需依赖Axios原生能力。

单连接TLS信息获取示例

如果你仅需要当前连接的TLS相关信息,可以从Axios响应对象的底层socket中获取,示例代码如下:

const axios = require('axios').default;
const https = require('https');

axios.head('https://example.com', {
  httpsAgent: new https.Agent({
    // 测试环境可临时关闭证书校验,生产环境请勿开启
    rejectUnauthorized: false
  })
}).then(r => {
  const socket = r.request.socket;
  // 获取当前连接使用的TLS版本
  const usedTlsVersion = socket.getProtocol();
  // 获取当前连接使用的Cipher套件信息
  const usedCipher = socket.getCipher();

  console.log('当前连接TLS版本:', usedTlsVersion);
  console.log('当前连接Cipher套件:', usedCipher);
});

内容的提问来源于stack exchange,提问作者qUEnbcAr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:06:00