# request-loop-api **Repository Path**: jiangchuanshize/request-loop-api ## Basic Information - **Project Name**: request-loop-api - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-21 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Request Loop API — Chrome 扩展 检测当前页面**定时轮询**的 HTTP 接口,支持在扩展弹窗或 DevTools 面板中**批量暂停 / 恢复**,并可在打开 F12 后**阻止定时接口发出**(从而不在 Network 列表中出现)。 ## 功能 | 功能 | 说明 | |------|------| | 自动检测 | 拦截 `fetch` / `XMLHttpRequest`,对同一 URL 多次请求的间隔做统计分析 | | 识别规则 | 至少 3 次请求,间隔 0.4s~10min,且间隔波动系数 ≤ 0.35 | | 暂停 / 恢复 | 按接口或全部批量操作;暂停后页面内请求被拦截,返回 204 | | DevTools 过滤 | F12 → **Loop API** 面板勾选「隐藏定时接口」,定时轮询不再发起真实网络请求 | | 工具栏弹窗 | 点击扩展图标,查看列表并操作 | ## 安装 1. 生成图标(首次): ```bash node scripts/create-icons.js ``` 2. Chrome 打开 `chrome://extensions/` 3. 开启「开发者模式」 4. 「加载已解压的扩展程序」→ 选择本项目根目录 ## 使用 1. 打开有轮询接口的页面(如每 3 秒请求一次的 `/api/status`) 2. 等待同一接口出现 **≥3 次** 后,扩展会自动标记为「定时接口」 3. 点击扩展图标: - **全部暂停** / **全部恢复** - **筛选**:输入关键字过滤 URL / 请求方法(弹窗与 DevTools 同步记忆) - **复制**:每条接口旁的「复制」按钮,复制完整 URL - **调用次数**:每条接口显示累计调用次数(当前页面内统计) - **↻ 刷新**:移除已停止轮询的接口,仅保留仍在定时请求的;切换页面会自动清空旧列表 - **排序**:按定时间隔升序 / 降序(弹窗与 DevTools 面板同步记忆) - 勾选 **DevTools 中隐藏定时接口** 4. 按 **F12** → 顶部标签 **Loop API**: - 同样可暂停、恢复、勾选隐藏 - 隐藏后:请求在页面层被拦截,**不会出现在 Network 面板** ## 技术说明 - **Manifest V3**,`injector.js` 运行在 `MAIN` world,在页面脚本之前挂钩网络 API - `bridge.js` 运行在隔离环境,负责与 background / popup / devtools 通信 - Chrome **没有**官方 API 从原生 Network 面板删除已有记录;本扩展通过**拦截不发起请求**实现「不显示」效果 - 使用 `axios` 等库、或 WebSocket 长连接轮询,若未走 `fetch`/`XHR` 则无法检测 ## 目录结构 ``` manifest.json background.js content/ injector.js # 检测 + 暂停(页面上下文) bridge.js # 消息桥接 popup/ # 工具栏弹窗 devtools/ # F12 面板 icons/ scripts/create-icons.js ``` ## 常见问题 ### `Extension context invalidated` 在 `chrome://extensions/` 中**重新加载**扩展后,已打开页面里仍是旧版 content script,继续调用 `chrome.runtime` 会报此错。 **处理:** 刷新目标页面(F5),或关闭标签后重新打开。扩展已自动停止失效脚本的消息上报,避免持续报错。 ## 限制 - 仅检测 `fetch` 与 `XMLHttpRequest` - 需在页面加载后、扩展注入之后产生的请求才会被统计 - 不规则间隔的轮询可能无法识别