如何查看Tampermonkey中GM_xmlhttpRequest的XHR请求日志
GM_xmlhttpRequest请求日志查看与排查方法
GM_xmlhttpRequest的请求由Tampermonkey扩展沙箱上下文发起,不属于当前页面的上下文流量,因此默认不会展示在页面自带的开发者工具控制台、网络面板中,可通过以下方式获取完整请求日志:
方法1:脚本内埋点打印全链路日志
无需调整浏览器配置,直接在GM_xmlhttpRequest的全生命周期回调中添加日志打印逻辑,即可捕获每一次请求的完整状态,参考代码:
GM_xmlhttpRequest({ method: "请求方法,如GET/POST", url: "目标HTTP接口地址", // 保留原有请求配置,比如headers、data、timeout等 onloadstart: function() { console.log("[GMXHR 发起请求]", { url: this.url, method: this.method, requestHeaders: this.headers, requestData: this.data, timestamp: new Date().toISOString() }); }, onload: function(response) { console.log("[GMXHR 请求成功]", { status: response.status, statusText: response.statusText, responseHeaders: response.responseHeaders, responseBody: response.response, timestamp: new Date().toISOString() }); }, onerror: function(error) { console.error("[GMXHR 请求失败]", { error: error, url: this.url, timestamp: new Date().toISOString() }); }, ontimeout: function() { console.error("[GMXHR 请求超时]", { url: this.url, timeoutThreshold: this.timeout, timestamp: new Date().toISOString() }); }, onabort: function() { console.warn("[GMXHR 请求被中断]", { url: this.url, timestamp: new Date().toISOString() }); } });
如果上述日志在当前页面控制台看不到,点击控制台顶部的上下文下拉菜单(默认显示top),选择带有Tampermonkey标识的对应脚本上下文,即可看到输出内容。
方法2:查看扩展层原生网络日志(无需修改脚本)
该方法可以获取和普通页面XHR完全一致的原生请求记录,包括被浏览器策略拦截的请求详情,数据最准确:
- 打开浏览器扩展管理页:Chrome/Edge系列在地址栏输入
chrome://extensions/,Firefox在地址栏输入about:addons - 找到Tampermonkey扩展,进入详情页:Chrome/Edge点击扩展卡片的「详情」按钮,Firefox点击扩展条目旁的「调试」按钮
- 找到「检查视图」板块,点击其中的背景页/Service Worker入口,会弹出独立的开发者工具窗口
- 该窗口的「网络」面板会记录所有
GM_xmlhttpRequest发起的完整请求,包含请求头、响应体、状态码、耗时、错误原因;「控制台」面板会输出扩展运行的所有底层日志 - 可额外开启Tampermonkey自带调试日志增强输出:打开Tampermonkey设置页,将顶部的配置模式从「新手」切换为「高级」,勾选「通用」分类下的「调试模式」选项,所有GM接口的运行细节日志会直接输出到对应上下文的控制台。
HTTPS调用HTTP场景的补充排查提示
偶发成功/失败的情况,优先排查浏览器混合内容拦截、HTTPS升级策略影响:如果浏览器开启了HTTPS-Only模式、HTTPS优先模式,可能偶发将HTTP请求强制升级为HTTPS导致连接失败,这类拦截记录只会出现在上述扩展层开发者工具的网络/控制台面板中,页面上下文无法捕获。
内容的提问来源于stack exchange,提问作者capoaira
相关产品推荐
相关产品推荐

