发布一个用 Nodejs 写的 HTTP Debugging Proxy
发布一个用 Nodejs 写的 HTTP Debugging Proxy
本人在进行前端调试的时候经常需要用 Fiddler 对 HTTP 请求进行修改。但 Fiddler 的图形界面实在太难用,自己又不想去学 FiddlerScript ,所以就用 node 造了一个轮子。
轮子名为 mocker ,允许用户通过 js 对请求进行修改,基本上可以满足所有的前端调试需求(当然你得写代码)。
项目地址: https://github.com/gzzhanghao/mocker
另外配合 mocker-utils ( https://github.com/gzzhanghao/mocker-utils ) 食用风味更佳。
很赞!👍
所以为啥不用 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 请求和响应。