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

如何通过Puppeteer/Chrome DevTools获取重定向链中所有服务器证书

获取重定向链中所有服务器的证书

实现方案

要捕获重定向链中所有中间服务器的证书,不能仅依赖Network.getCertificate事后查询(因为重定向源站的证书可能未被缓存),而是需要在请求过程中通过CDP事件实时监听每个响应的安全信息。

代码示例

const session = await page.target().createCDPSession();
await session.send('Network.enable');

const collectedCertificates = [];

// 监听每个请求的响应事件,捕获证书信息
session.on('Network.responseReceived', async (event) => {
  const { response } = event;
  if (!response.url.startsWith('https://') || !response.securityDetails) return;

  const origin = new URL(response.url).origin;
  // 获取对应源站的完整证书链
  const certChain = await session.send('Network.getCertificate', { origin });
  
  if (certChain) {
    collectedCertificates.push({
      requestUrl: response.url,
      origin,
      certificateChain: certChain,
      securityInfo: response.securityDetails
    });
  }
});

// 触发导航,包括所有重定向
await page.goto('https://fastlane.ci', { waitUntil: 'networkidle0' });

// 输出所有捕获到的证书
console.log('重定向链证书集合:', collectedCertificates);

关键细节

  • 事件监听时机:必须在page.goto之前注册Network.responseReceived监听器,否则会遗漏中间重定向的请求事件。
  • 证书获取逻辑:每个HTTPS响应的securityDetails字段确认了安全连接的存在,再通过Network.getCertificate提取完整的X.509证书链(包含中间证书和根证书)。
  • 源站提取:用new URL(response.url).origin精准获取请求的源站地址,确保Network.getCertificate参数正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:16:08