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

如何监控网络请求并针对特定内容触发自定义异常

网络请求监控与异常告警方案

核心需求

监控所有网络请求的URL、参数、请求体及响应数据,当请求/响应中出现特定内容(如示例中的undefined无效值)时,触发通知或自定义异常。

浏览器端拦截实现(适配动态Ajax场景)

针对Web应用的动态Ajax请求,可通过Tampermonkey油猴脚本实现请求拦截与检测,完全支持用户交互场景:

  1. 安装Tampermonkey浏览器插件
  2. 新建用户脚本,写入以下拦截逻辑(适配XMLHttpRequest和fetch请求):
// ==UserScript==
// @name         请求异常监控脚本
// @match        http://localhost:8080/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 拦截XMLHttpRequest
    const originalXHRopen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) {
        // 检测URL中的无效参数
        if (url.includes('undefined=')) {
            alert(`检测到异常请求URL:${url}`);
            // 触发自定义异常
            throw new Error(`无效请求参数:undefined`);
        }
        this.addEventListener('load', function() {
            // 检测响应数据
            try {
                const responseData = JSON.parse(this.responseText);
                if (responseData.hasOwnProperty('undefined')) {
                    console.error(`检测到异常响应:`, responseData);
                    alert(`响应中存在无效值:undefined`);
                }
            } catch(e) {}
        });
        return originalXHRopen.apply(this, arguments);
    };

    // 拦截fetch请求
    const originalFetch = window.fetch;
    window.fetch = function(resource) {
        // 检测请求URL
        if (typeof resource === 'string' && resource.includes('undefined=')) {
            alert(`检测到异常fetch请求:${resource}`);
            throw new Error(`无效请求参数:undefined`);
        }
        return originalFetch.apply(this, arguments).then(response => {
            // 克隆响应以读取内容
            response.clone().json().then(data => {
                if (data.hasOwnProperty('undefined')) {
                    console.error(`检测到异常fetch响应:`, data);
                    alert(`响应中存在无效值:undefined`);
                }
            }).catch(e => {});
            return response;
        });
    };
})();
  1. 脚本会自动在匹配的域名下运行,当请求URL包含undefined=或响应JSON存在undefined字段时,触发弹窗告警并抛出异常。

系统层全局代理实现

如果需要监控整个操作系统的所有网络请求(不限于浏览器),可使用mitmproxy工具:

  1. 安装mitmproxy(支持Windows/macOS/Linux)
  2. 编写Python脚本request_check.py实现检测逻辑:
from mitmproxy import http

def response(flow: http.HTTPFlow) -> None:
    # 检测请求URL参数
    if "undefined=" in flow.request.pretty_url:
        print(f"【异常告警】请求URL包含无效参数:{flow.request.pretty_url}")
        # 可扩展:发送邮件、本地弹窗等告警方式
    # 检测响应数据
    try:
        resp_data = flow.response.json()
        if "undefined" in resp_data:
            print(f"【异常告警】响应包含无效值:{resp_data}")
    except:
        pass
  1. 启动mitmproxy并加载脚本:
mitmproxy -s request_check.py
  1. 将系统/浏览器代理配置为127.0.0.1:8080,所有请求会被mitmproxy拦截检测,控制台会输出异常告警,也可扩展实现邮件、桌面通知等告警方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:54:09