新闻详情

新闻详情

首页 / 资讯中心 / 详情

PulseProxy:基于MITM 代理实现的Web 版 HTTP(S) 抓包工具

发布时间:2026/9/27 21:31:39来源:尧图网络
PulseProxy:基于MITM 代理实现的Web 版 HTTP(S) 抓包工具
文章目录项目背景项目简介运行效果技术栈核心功能1. MITM 代理抓包2. 逐域解密策略3. 系统代理一键接管Windows4. 会话列表5. InspectorsHeaders / TextView / JSON / XML / Raw6. 分段计时7. QuickExec8. 其它项目结构环境与依赖安装/使用教程安装与构建快速上手四步配置REST API脚本化集成能力边界写在最后三种抓包的实现PulseProxy基于MITM 代理实现的Web 版 HTTP(S) 抓包工具–(通过系统代理HTTP(S)抓包)PulseHttp零侵入的被动 HTTP 抓包 Web 工具–(通过监控网卡HTTP抓包)PulseHttps零侵入的被动HTTPS抓包Web工具–(通过ebpf hook TLS库HTTPS抓包)项目背景这个项目的需求来自Web的监控和分析需求于是参考Fiddler、Charles我使用Claude Code GLM-5.3写了PulseProxy——实现HTTP和HTTPS抓包功能最终开发了一个Web版本的Fiddler、Charles工具。以下文档和项目代码均使用Claude Code 火山引擎的GLM-5.3编写。项目简介PulseProxy 是一个MITM中间人调试代理 Web UI的一体化工具一个程序两个角色默认在:8888提供 HTTP(S) 抓包代理同时在:3000提供 Web 管理界面两个端口被占用时都会自动 1 重试单文件部署前端资源通过go:embed打进二进制拷一个文件到任何机器就能跑没有安装向导、没有运行时依赖零配置起步不写任何配置文件也能直接运行所有字段都有内置默认值需要调整时再放一份configs/pulseproxy.yaml即可退出不留痕一键接管系统代理后程序退出时自动还原你原来的代理配置被强杀的残留也会在下次启动时自愈。它对标的场景是日常 Web 调试排查接口请求、检查响应头与 body、分析接口耗时、验证缓存/压缩行为——也就是 Fiddler Classic 的核心工作流运行效果技术栈层选型语言Go 1.25Web 框架ginTLS / 证书标准库crypto/tlsECDSA P-256 自签 CA按 SNI 动态签发叶子证书WebSocketgorilla/websocket配置yaml.v3强类型结构体支持热更新写回解压标准库 gzip/flate andybalholm/brotli日志logrus前端Bootstrap 4.6 jQuery 3.5 highlight.jsCDN 引入原生 ES Modules无构建工具两个值得一提的选型决策CGO_ENABLED0 纯静态编译。整个项目不依赖任何 C 库一条命令即可交叉编译出 Windows / Linux (amd64/arm64) 全平台产物Linux 服务器上解压即用。前端零构建。没有 Node、没有 webpack前端就是手写的 ES Modules框架走 CDN静态资源go:embed进二进制。仓库里没有node_modulesgit clone之后go run立刻能看到界面。核心功能1. MITM 代理抓包工作方式与 Fiddler 一致客户端把代理指向 PulseProxy 后——明文 HTTP直接解析转发HTTPS走CONNECT隧道程序劫持hijack连接后先回200 Connection Established再以自签 CA 动态签发该域名的叶子证书与客户端完成 TLS 握手内层复用标准http.Server解析 HTTP——请求响应全部可见不希望解密的域名如网银可配置为仅隧通连接照常双向转发会话列表里仍能看到一条 CONNECT 记录但不解密内容。MITM 侧 ALPN 只回应http/1.1浏览器会自动降级避开了 HTTP/2 解析的复杂度。2. 逐域解密策略HTTPS 解密支持三级控制全局开关逐域 allow/deny 通配符列表*.bank.example这类写法allow 优先于 deny都不匹配时回落全局开关。策略和开关都可以在 Web UI 设置页热更新改完立即对新建连接生效并写回配置文件。3. 系统代理一键接管Windows工具栏一个按钮搞定「接管 → 调试 → 退出」全流程接管时写 HKCU 注册表 调用 wininetInternetSetOption广播Chrome/Edge/Firefox无需重启即时生效接管前的原配置快照落盘程序退出包括 CtrlC 优雅退出自动还原进程被强杀来不及还原下次启动检测到残留快照会自动自愈接管期间你手动改过系统代理程序识别到快照已过期不覆盖你的修改只弃用快照。手机等局域网设备把代理指向运行 PulseProxy 的机器 IP默认监听0.0.0.0即可抓包无需装任何 App。4. 会话列表WebSocket 实时推送session_created立即上屏session_updated以 50ms 窗口按 ID 合并长连接下的高亮更新不闪烁也不丢事件排序、多条件过滤URL 文本 / Host / 状态码 / body 大小、暂停抓包暂停期间流量照常转发只是不记录不会打断业务、多选删除、一键清空会话可打标记注释、颜色、加粗标记为protected的会话不会被容量淘汰。5. InspectorsHeaders / TextView / JSON / XML / RawJSON 自动格式化 语法高亮XML 同理保留上游真实的Content-EncodingFiddler 语义gzip / deflate / brotli 在展示层按需解码你始终能看到原始编码头超大 body 只保存前 N KB默认 2MB可配界面明确标注「已截断 真实大小」不会悄悄骗你说 body 就这么大。6. 分段计时基于httptrace记录每个请求的DNS / TCP 连接 / TLS 握手 / TTFB / 内容传输耗时在 Headers 视图底部一览定位「慢在握手还是慢在服务端」一眼可判。7. QuickExec列表底部一条命令行CtrlQ 聚焦Fiddler 老用户会心一笑命令作用?keywordURL 包含 keyword304/2xx按状态码过滤5000/500响应 body 大于/小于 N 字节example.comHost 包含指定域名reset/clear清空过滤条件help帮助8. 其它链式上游代理配置proxy.upstream后流量可再经一层代理如公司网关转发HTTPS 隧道同样支持链式 CONNECTWebSocket 等 101 协议升级自动识别并双向隧通自身流量过滤Web UI 自己产生的请求不会进列表避免噪音。项目结构cmd/pulseproxy/ 入口配置加载 → 组件装配 → 双服务启动 → 优雅退出 internal/ model/ Session/Timing/BodyRef 等纯数据契约所有层共用 config/ YAML 强类型配置 默认值 写回 逐域通配符匹配 events/ 进程内事件总线seq 单调、非阻塞发布、订阅扇出 store/ 内存会话存储ring 双上限条数 body 字节联动淘汰、 tee 截断保存、保护标记、SHA256 certs/ CA 生成/持久化 按 SNI 动态签发叶子证书缓存、IP/DNS SAN quad/ 上游连接四元组注册表TTL 延迟注销 sysproxy/ Windows 系统代理接管/恢复 非 Windows stub proxy/ MITM 核心CONNECT hijack、动态签发、httptrace 计时、 101 隧通、上游代理链式、暂停 api/ gin REST WebSocket hub 静态资源托管 version/ 版本常量 web/ 前端 SPA原生 ES Modulesgo:embed 内嵌两条贯穿全局的工程约定比较能体现这个项目的分层思路proxy与api互不 import。API 层通过一个三方法的小接口SetPaused/SetHTTPSConfig/Port控制代理两包各自可独立测试存储只暴露闭包修改。会话加入 store 后只能通过Update/AppendBody闭包改字段杜绝散落的直接写并发安全由存储层统一保证。关键数据流proxy 捕获 → store.Add/Update发事件→ WS hub 推送50ms 合并→ 前端 store 状态机 → grid/inspector 渲染。过滤、排序、QuickExec 全部在前端本地完成后端零查询压力。环境与依赖构建Go 1.25无 CGO、无任何系统库依赖git clone后即可构建运行Windows全功能含系统代理一键接管、CA 一键导入Linux / macOS代理抓包与 Web UI 完全可用系统代理接管与 CA 自动导入不支持手动配置系统代理、手动导入根证书即可网络前端框架走 CDNjsdelivr首次打开 Web UI 需联网加载 Bootstrap/jQuery/highlight.js代理转发本身不受影响安装/使用教程安装与构建最简单的方式源码直接跑gitclone仓库地址cdpulseproxy go run ./cmd/pulseproxy构建单文件可执行前端已内嵌go build-opulseproxy.exe ./cmd/pulseproxy全平台发行构建用自带的build.cmdWindows 上一条命令交叉编译三个平台build.cmd# windows-amd64 linux-amd64 linux-arm64build.cmd windows# 仅 windows-amd64build.cmd linux# linux-amd64 linux-arm64产物在dist/目录每个平台一份裸二进制 一份发行压缩包zip / tar.gz内含二进制、配置样例、READMECGO_ENABLED0静态编译Linux 产物解压即可部署。快速上手四步启动后打开 Web UIhttp://127.0.0.1:3000信任根证书仅需一次解密 HTTPS 必需Web UI →「证书」→ 下载并一键导入。PulseProxy 的 CA 存放在data/ca/只在本机私钥闭环一键接管系统代理点工具栏「系统代理」按钮浏览器流量立即进入列表也可手动把系统/浏览器代理指向127.0.0.1:8888局域网设备指向本机 IP:8888开始调试流量实时滚动点击任意会话查看 Headers / TextView / JSON / XML / Raw 与分段计时。命令行快速验证代理工作是否正常curl-x127.0.0.1:8888 http://example.com# 明文会话应入列表curl-x127.0.0.1:8888-khttps://example.com# MITM 解密CONNECT 内层会话配置全部字段有默认值以下是一份带注释的最小样例configs/pulseproxy.yamlserver:# Web UI / REST / WebSocketbind:127.0.0.1port:3000proxy:# 抓包代理bind:0.0.0.0# 监听所有网卡手机可连port:8888upstream:# 链式上游代理如 http://127.0.0.1:7890https:decrypt:true# HTTPS 解密总开关domain_policy:# 逐域控制allow 优先于 denyallow:[]deny:[*.bank.example]# 网银类域名不解密sessions:max_count:10000# 会话条数上限超出淘汰最旧max_body_kb:2048# 单 body 保存上限仅保存截断转发不受影响ring_max_mb:512# body 总内存上限log:level:infoHTTPS 开关与逐域策略在 Web UI 设置页修改后热更新生效并自动写回此文件。REST API脚本化集成Web UI 之外所有数据都有 REST 端点方便脚本/CI 消费方法路径说明GET/api/sessions、/api/sessions/:id会话列表 / 详情GET/api/sessions/:id/{request,response}/raw原始报文GET/api/sessions/:id/{request,response}/bodybody?decodeauto|identity|gzip|deflate|brPATCH/api/sessions/:id打标记comment/color/marked/protectedDELETE/api/sessions/:idPOST/api/sessions/clear删除 / 清空PUT/api/capture暂停/恢复抓包{paused: true}GET / PUT/api/settings设置读取 / HTTPS 热更新GET/api/cert/ca?formatpem|crt下载根证书GET / POST/api/system-proxy、/api/system-proxy/enable、/api/system-proxy/restore系统代理状态/接管/恢复GET/api/wsWebSocket 事件流能力边界仅支持HTTP/1.1MITM 侧 ALPN 只回应 http/1.1浏览器自动降级HTTP/2 / QUIC 不支持个别站点走 QUIC 绕过代理时可在chrome://flags/#enable-quic禁用做了**证书固定certificate pinning**的 App 无法解密属所有 MITM 工具的共性限制本机单用户设计Web UI 仅监听 127.0.0.1、无认证不适合直接暴露到公网。写在最后PulseProxy 的目标不是替代 Fiddler 的全部而是把「日常 90% 的抓包调试」做成一个单文件、开浏览器就能用的工具而回到它的起点——内容合规分析——它是流水线最前端的采集层流量进得来、数据出得去、证据留得住。如果你也受够了桌面抓包工具的安装与迁移成本欢迎试试仓库地址https://gitee.com/penngo/ai_projects/tree/master/go/PulseProxy觉得有用请点个 Star遇到问题欢迎提 Issue代码结构如上文所示模块边界清晰也欢迎 PR。抓包愉快
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

3个免费工具搞定wordpress花钱吗难题 2026/9/27 22:26:49

3个免费工具搞定wordpress花钱吗难题

3个免费工具搞定wordpress花钱吗难题 自己不会代码想做网站,是不是觉得必须得花大价钱找外包?其实,WordPress 本身是开源免费的,真正的成本往往藏在那些你没注意到的角落。很多创业团队负责人一听到“建站”就想到预算,生怕被坑。…

阅读更多 →
Python 数据库查询:fetchone() 与 fetchall() 的区别与 TaoToken 配置实践 2026/9/27 22:26:43

Python 数据库查询:fetchone() 与 fetchall() 的区别与 TaoToken 配置实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
IIR 拖尾(ring‑down)效应解析 2026/9/27 22:26:43

IIR 拖尾(ring‑down)效应解析

测试对象:H3A‑HFV 通路单级 5 阶 IIR;11 个 S12Q6 系数 前馈: 反馈:差分方程输入 20 个同一行水平像素(已减去直流偏移,对应现实图像一条竖直竖线边缘)n: 0 1 2 3 4 5 6 7 8 9 10 11 …

阅读更多 →
网站空间到期时间查询新手入门 2026/9/27 22:26:43

网站空间到期时间查询新手入门

3步查清网站空间到期时间,告别源码下载盲区 网站突然打不开,浏览器提示“连接被拒绝”,或者页面瞬间变成一堆乱码甚至出现博彩广告,这时候你慌不慌?很多老板第一反应是网站被黑挂马了,急着找技术人员修。但十有八九,根本原因不是黑客,而是你的…

阅读更多 →
dashi-ppt-skill 配 TaoToken:浏览器内就地编辑与本地化导出 PPTX 的 AI Agent 技能配置指南 2026/9/27 22:26:43

dashi-ppt-skill 配 TaoToken:浏览器内就地编辑与本地化导出 PPTX 的 AI Agent 技能配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SkyWalking+若依上云与 Qwen3 本地 RAG 系统搭建实验报告 2026/9/27 22:26:43

SkyWalking+若依上云与 Qwen3 本地 RAG 系统搭建实验报告

作业内容 - 31 - 微服务链路追踪 SkyWalking 和微服务 JAVA 项目若依上云 - 32 - 大模型部署与实践(01):按照课程完成大模型部署和相关实战 - 33 - 大模型部署与实践(续):高性能推理与简单应用实战 总要求…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉