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

Chrome DevTools扩展无法获取响应体,iCloud流量监控仅获URL无数据

问题分析与解决方案

核心问题定位

你的代码存在几个关键问题导致无法获取响应数据:

  1. 请求方法判断错误:FETCH不是标准HTTP请求方法,Fetch API发起的请求实际还是用GET/POST这类方法,这个错误判断会漏处理请求或误判。
  2. 响应内容获取方式错了:request.getContent()的回调参数body才是响应内容,request.response.content.text不一定存在,尤其在响应未完全解析或类型不匹配时。
  3. 无域名过滤:当前会监听所有请求,没限定只处理icloud.com域名,产生冗余数据。
  4. no-cors模式限制:这个模式会禁用请求的很多功能,甚至导致请求发送失败,本地服务器完全不需要它。

修改后的devtools.js代码

chrome.devtools.network.onRequestFinished.addListener(request => {
  // 只处理icloud.com域名的请求
  if (!request.request.url.includes('icloud.com')) return;

  // 获取响应内容
  request.getContent((body, encoding) => {
    // 只处理需要的请求方法,按需调整
    const allowedMethods = ['POST', 'GET'];
    if (!allowedMethods.includes(request.request.method)) return;

    // 组装发送数据,body就是响应内容
    const data = new URLSearchParams();
    data.set('ig', JSON.stringify({
      url: request.request.url,
      method: request.request.method,
      responseData: body || '无响应内容'
    }));

    // 发送到PHP脚本,移除no-cors模式
    fetch("http://localhost:1609/icl.php", {
      method: 'POST',
      cache: 'no-cache',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
      body: data
    }).then(response => {
      if (!response.ok) {
        console.error('发送数据失败:', response.status);
      }
    }).catch(err => {
      console.error('请求错误:', err);
    });
  });
});

关键修改说明

  • 域名过滤:通过includes('icloud.com')只处理目标域名请求,减少无效处理。
  • 正确拿响应内容:用request.getContent()回调的body参数,这是DevTools API规定的获取响应内容的方式。
  • 修正请求方法判断:去掉错误的FETCH,改用实际的HTTP方法列表,按需添加。
  • 移除no-cors:该模式会限制请求功能,本地服务器不需要,移除后可正常处理请求并查看状态。
  • 增加错误处理:添加catch和响应状态判断,方便调试发送失败的情况。

PHP脚本优化(可选)

可以加数据校验,避免空数据或无效JSON写入:

<?php
if (isset($_POST['ig'])) {
    $aj = $_POST['ig'];
    $data = json_decode($aj, true);
    if ($data) {
        $logLine = date("Y-m-d H:i:s") . ": " . json_encode($data, JSON_UNESCAPED_SLASHES) . "\n";
        file_put_contents('icl.txt', $logLine, FILE_APPEND);
    }
}
?>

额外注意事项

  • 必须打开Chrome DevTools,DevTools扩展只有在DevTools启动时才会生效。
  • 调试时可以看DevTools的Console面板,里面会显示请求错误信息,方便排查问题。
  • 如果响应是二进制类型(比如图片),body会是Base64字符串,可以通过encoding参数判断类型再处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:27:49