ProxyPin 抓包实战:从第一个 HTTPS 请求到跨设备联调的完整路径 ProxyPin 抓包实战从第一个 HTTPS 请求到跨设备联调的完整路径【免费下载链接】network_proxy_flutterOpen source free capture HTTP(S) traffic software ProxyPin, supporting full platform systems项目地址: https://gitcode.com/GitHub_Trending/ne/network_proxy_flutter周五下午三点预发环境的订单接口突然开始返回 502生产环境却一切正常。你用浏览器直连接口没问题用 Postman 也复现不出来。问题只发生在客户端 App 上而客户端的每次重试都要走一遍发版流程——这时候你需要的是一套能实时看到原始报文、还能顺手改写请求的 ProxyPin 抓包方案。项目速览ProxyPin 是一款开源免费的 HTTP(S) 抓包工具基于 Flutter 开发一套代码覆盖 Windows、macOS、Linux、Android、iOS 五个平台。它的代理核心和应用界面跑在同一个进程里桌面端和手机端共享同一套协议解析引擎而不是各写各的再拼壳子。它抓 HTTPS 的方式是中间人解密App 内置一张自签 CA 证书装好并信任之后加密流量在本地解密成明文你能看到完整的请求头和报文体而不只是一堆十六进制字节。和同类工具最核心的差异在移动端手机上装 ProxyPin 后对着桌面端生成的二维码扫一下Wi-Fi 代理会自动配置好过滤规则等设置也一并同步全程不用手动改网络配置。所有流量改动映射、重写、JS 脚本、屏蔽都以拦截器Interceptor即串在请求链路上的钩子形式实现定义在 拦截器基类按优先级依次执行。快速上手从零到第一条请求记录先跑通桌面端。打开终端执行git clone https://gitcode.com/GitHub_Trending/ne/network_proxy_flutter cd network_proxy_flutter flutter pub get再运行应用以 macOS 为例flutter run -d macos启动后你会看到请求列表页和侧边菜单右上角有开始/停止抓包的开关。点下开始抓包应用会监听本地端口并提示配置系统代理——允许它接管本机流量。接下来用浏览器随便访问一个网站列表里就会出现请求条目域名、方法、状态码、耗时一目了然。点开一条 HTTPS 请求你会看到完整的请求头、响应头和报文体。如果看到的是乱码说明证书没装好先去证书设置里把 ProxyPin 的 CA 证书安装并信任再刷新。移动端接入更省事在桌面端工具栏点开手机连接会弹出一个二维码实现见 扫码连接组件。手机上安装 ProxyPin 后扫一下Wi-Fi 代理自动配好手机上的请求直接出现在电脑端列表里两台设备看到的是同一份数据。核心能力拆解按工作流串联按捕获 → 分析 → 改写 → 回放 → 协作的顺序走一遍你会发现每个环节都有对应的位置。HTTPS 解密配置与域名过滤捕获场景列表里塞满了系统升级和埋点请求你要的接口被淹没了。操作在过滤设置里填上目标域名支持通配符只对匹配的流量做解密拦截其余流量直接放行。效果列表只剩你关心的请求后台应用不受干扰。按条件搜索与历史回溯分析场景请求太多想找所有 4xx 的 JSON 响应。操作搜索框输入关键词或按状态码、响应类型筛选抓过的数据自动落盘重启后还能翻旧账。效果不用守着屏幕等复现历史记录支持 HAR 格式导出也能导回来继续看。JS 脚本改写请求与响应改写场景想临时换个鉴权头或者把响应里的某个字段改成固定值。操作打开 脚本管理界面新建脚本并勾选匹配的 URL 规则引擎自带模板核心就两个钩子async function onRequest(context, request) { request.headers[X-Debug-Token] test; // 改请求 return request; }效果改完即生效不用碰客户端代码。请求映射不发到服务器回放场景接口还没部署好但前端等着联调。操作在请求映射里加一条规则左边写 URL 匹配模式右边填本地配置好的状态码和报文。效果命中规则的请求在本地被直接回包根本不离开你的机器。请求屏蔽与多设备协作协作场景调试 A 接口时B 接口的轮询噪音太大。操作在请求屏蔽里把 B 的 URL 规则加进去请求到不了服务器。而手机扫码连上桌面端之后Web、iOS、Android 的请求按时间顺序混在同一列表里按设备类型即可筛选——一台电脑盯三台终端就是这个流程的终点。实战演练一次 502 的排查复盘接着开头那个故事预发环境订单接口 502生产正常Postman 直连也正常。第一步过滤域名。在 ProxyPin 里只保留api.example.com在预发环境上 App 复现一次。列表里能看到订单接口稳定返回 502响应体是网关的报错页而不是业务 JSON——说明请求根本没走到你的服务。第二步对比报文。把同一条请求用生产环境 App 再发一次两条记录并排看URL、参数几乎一样但预发这条的响应耗时极短十几毫秒典型是网关层就拒绝了。你怀疑是预发的网关路由没生效正准备找运维又注意到一个细节——出错的请求都是带查询参数的 GET。第三步检查自己的规则。打开请求映射设置发现上周为了联调加过一条规则匹配串里写了?但没转义。说白了就是这个问号在匹配器眼里是通配符导致带参数的 URL 全被这条半成品规则吞掉转发到了一个没人维护的预发网关自然 502。错误api.example.com/order?fromapp ? 被当通配符 正确api.example.com/order\?fromapp 转义后按字面量匹配把规则里的问号转义或直接删掉这条废弃规则后重新触发请求200 回来了。整个定位过程不到半小时而按老流程走一遍加日志、发版、收集至少要一天。复盘结论写进团队笔记映射规则里出现特殊字符时先想转义再怀疑服务端。进阶技巧与避坑指南过来人说过滤优先用域名规则而不是关键词搜索。域名匹配在流量入口就生效列表干净、开销小搜索是对结果的二次筛选适合事后翻找。脚本里多写console.log(request.url)。脚本引擎会把 console 输出展示出来脚本没命中规则时日志是最快的确认方式。通配符规则是贪婪的。*的展开范围比你想的宽规则顺序也影响命中结果加新规则前先扫一眼旧规则不然容易新规则永远轮不上。踩坑提醒macOS 首次打开提示不受信任的开发者时别硬装去系统设置的安全性与隐私里允许否则装完也起不来。iOS 上装完证书还要去设置 → 通用 → 关于本机 → 信任企业级开发者证书里手动信任很多人卡在这一步证书装了流量还是解不开。调试完记得停抓包。ProxyPin 挂着系统代理时如果它被意外杀掉本机会短暂处于有代理无服务的状态网页会集体打不开——这是所有本地代理工具的通病养成用完即停的习惯。延伸与资源使用指南README.md 与 README_CN.md仓库地址https://gitcode.com/GitHub_Trending/ne/network_proxy_flutter协议与实现的参考用例test/HTTP、WebSocket、证书相关的测试都在里面JS 运行时资源assets/js/社区反馈AGENTS.md 中列出了维护者的反馈渠道入口从 clone 到第一条请求ProxyPin 给你的不是又一个抓包器而是同一套引擎横跨五端、手机上扫个码就能接进来的调试通道。周末有空的话去仓库把项目 clone 下来跑一把先抓一条 HTTPS 请求看看。【免费下载链接】network_proxy_flutterOpen source free capture HTTP(S) traffic software ProxyPin, supporting full platform systems项目地址: https://gitcode.com/GitHub_Trending/ne/network_proxy_flutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考