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

如何在Fiddler中捕获Next.js路由处理器的全部请求流量

Next.js路由处理器外部API请求的Fiddler拦截方案

一、修正全局代理配置(针对Node.js环境)

你之前设置的http_proxy环境变量无法生效,核心原因是Node.js默认的HTTP客户端(比如Next.js内置的undici fetch)不会自动读取这些系统级代理变量。以下是两种全局生效的配置方式:

1. 使用global-agent强制全局代理

这个包能让Node.js环境下所有HTTP/HTTPS请求自动走代理,无需修改单个请求代码:

  • 安装依赖:
    npm install global-agent --save-dev
    
  • 在Next.js项目的入口文件(比如next.config.js或自定义server脚本)添加初始化代码:
    import { bootstrap } from 'global-agent';
    bootstrap();
    
  • 启动项目时使用专用环境变量指定代理:
    cross-env GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8888 GLOBAL_AGENT_HTTPS_PROXY=http://127.0.0.1:8888 NODE_TLS_REJECT_UNAUTHORIZED=0 next dev
    

2. 针对undici fetch的全局配置

如果你的项目用的是Next.js 13+ App Router,路由处理器默认使用undici fetch,可以直接在next.config.js中配置全局代理:

module.exports = {
  serverRuntimeConfig: {
    undici: {
      proxy: 'http://127.0.0.1:8888',
    },
  },
};

启动时仍需关闭HTTPS证书校验:

cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 next dev

二、工具替代方案

如果Fiddler的配置始终达不到预期,可以试试这些更适配Node.js的代理工具:

  • Charles Proxy:对后端服务请求的捕获支持更友好,开启系统全局代理后,大部分Node.js HTTP客户端会自动继承代理设置,无需额外配置代码。
  • Mitmproxy:开源命令行代理工具,启动后通过环境变量指定代理即可捕获所有请求,支持灵活的流量规则自定义。启动命令:
    mitmproxy --listen-port 8888
    
    之后用你原来的环境变量命令启动Next.js即可。

三、关键排查点

  • 确认Fiddler已开启HTTPS解密:在Tools > Options > HTTPS中勾选Decrypt HTTPS traffic,并信任Fiddler的根证书。
  • 检查路由处理器中的API请求是否为绝对路径:如果用相对路径,Next.js可能会将其解析为内部路由,不会触发外部代理请求。
  • 验证Node.js版本:建议使用v18及以上版本,旧版本对代理环境变量的支持存在兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:40:17