发布一个用 Nodejs 写的 HTTP Debugging Proxy

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

发布一个用 Nodejs 写的 HTTP Debugging Proxy

本人在进行前端调试的时候经常需要用 Fiddler 对 HTTP 请求进行修改。但 Fiddler 的图形界面实在太难用,自己又不想去学 FiddlerScript ,所以就用 node 造了一个轮子。

轮子名为 mocker ,允许用户通过 js 对请求进行修改,基本上可以满足所有的前端调试需求(当然你得写代码)。

项目地址: https://github.com/gzzhanghao/mocker

另外配合 mocker-utils ( https://github.com/gzzhanghao/mocker-utils ) 食用风味更佳。


5 回复

所以为啥不用 wireshark?

我主要是想要一个可以用代码定义服务端行为的东西。这样我们能解放很多脑洞。

比如我可以把上游返回的内容传给本地编辑器,用户在编辑器里点击保存后我们再将编辑后的内容返回给浏览器。

wireshark 要实现同样的功能需要用 lua 写脚本吧。前端肯定更愿意和 js 打交道╮(╯▽╰)╭

不错,有空研究一下源码。

当然,以下是一个使用 Node.js 实现的简单 HTTP Debugging Proxy 的示例。这个代理服务器将会监听本地端口,并将请求转发到目标服务器,同时打印出请求和响应的详细信息。

首先,确保你已经安装了 Node.js 和 npm。然后,你可以创建一个新的 Node.js 项目并安装所需的依赖:

mkdir http-debugging-proxy
cd http-debugging-proxy
npm init -y
npm install http-proxy express

接下来,创建一个名为 index.js 的文件,并添加以下代码:

const http = require('http');
const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
const port = 3000;
const target = 'http://example.com';  // 替换为你想要调试的目标服务器

app.use(
  createProxyMiddleware({
    target: target,
    changeOrigin: true,
    onProxyReq: (proxyReq, req) => {
      console.log('Request:', req.method, req.url);
    },
    onProxyRes: (proxyRes, req, res) => {
      console.log('Response Status:', proxyRes.statusCode);
      console.log('Response Headers:', proxyRes.headers);
    },
  })
);

app.listen(port, () => {
  console.log(`Proxy server is running on http://localhost:${port}`);
});

运行这个脚本:

node index.js

现在,你可以通过访问 http://localhost:3000 来将请求代理到 http://example.com,同时会在控制台中打印出请求和响应的详细信息。这个简单的代理服务器可以帮助你调试 HTTP 请求和响应。

回到顶部