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

如何使用Chrome DevTools拦截所有请求(含未发起的请求)?

拦截未发起的网络请求方案

一、用Chrome DevTools原生拦截规则实现精准拦截

  • 打开Chrome DevTools(快捷键F12/Ctrl+Shift+I),切换到Network面板
  • 勾选顶部的Disable cache避免缓存干扰,然后点击左上角的「拦截请求」按钮(图标为带斜杠的圆圈,hover提示"Enable request blocking")
  • 在右侧弹出的Request blocking面板中,点击Add pattern,输入匹配规则:*://stackoverflow.com/posts/*。这个规则会匹配所有该路径下的Fetch/XHR请求,不管是不是首次发起的请求
  • 确认规则后,所有符合模式的请求在发起阶段就会被拦截,不会发送到服务器

二、重写原生API实现灵活拦截(适合复杂场景)

如果需要更精细的控制(比如只拦截特定触发逻辑的请求),可以在DevTools的Console或Snippets中执行以下代码,重写fetch和XMLHttpRequest方法:

// 拦截Fetch请求
const originalFetch = window.fetch;
window.fetch = function(url, options) {
  if (url.startsWith('https://stackoverflow.com/posts/')) {
    console.log('已拦截Fetch请求:', url);
    // 可根据需求返回模拟响应或错误
    return Promise.reject(new Error('请求已被拦截'));
  }
  return originalFetch.apply(this, arguments);
};

// 拦截XHR请求
const originalXHR = XMLHttpRequest;
window.XMLHttpRequest = function() {
  const xhr = new originalXHR();
  const originalOpen = xhr.open;
  xhr.open = function(method, url) {
    if (url.startsWith('https://stackoverflow.com/posts/')) {
      console.log('已拦截XHR请求:', url);
      this.abort();
      return;
    }
    originalOpen.apply(this, arguments);
  };
  return xhr;
};

这段代码会在请求发起前直接拦截符合条件的请求,哪怕是页面加载后首次出现的目标请求。

三、拦截所有请求的方法

如果需要拦截所有请求,直接在Request blocking面板中添加*作为拦截规则即可;或者在重写API的代码中去掉URL判断逻辑,直接拦截所有fetch和XHR调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:55:16