ProxyPin 抓包 5 步上手:真机调接口不再靠猜
2026/9/12 2:26:14 网站建设 项目流程

ProxyPin 抓包 5 步上手:真机调接口不再靠猜

【免费下载链接】network_proxy_flutterOpen source free capture HTTP(S) traffic software ProxyPin, supporting full platform systems项目地址: https://gitcode.com/GitHub_Trending/ne/network_proxy_flutter

真机上接口返回乱码,后端却坚持"我这边没问题"。你翻半天日志,却连一句原始响应都没拿到过。ProxyPin 是一款开源免费、支持 Windows、macOS、Linux、Android、iOS 全平台的抓包工具,它把真机流量直接转发到桌面端,让你看的是原始报文,而不是别人的转述。

一套工具,把桌面和真机放进同一个代理

ProxyPin 是一款基于 Flutter 开发的全平台 HTTP(S) 抓包工具,可以拦截、检查和重写流量,连 Flutter 应用自己的请求也抓得住。

它和你想的抓包工具有点不一样:

  • 扫码连接——手机上不用手动配 Wi-Fi 代理,扫一下二维码就接进桌面端
  • 域名过滤——只抓你关心的流量,别的应用不被干扰
  • 脚本定制——用 JavaScript 改请求、改响应,不用动 App 代码
维度传统抓包方式ProxyPin
跨平台每个系统装一套工具一套工具五个系统
真机接入手动配 Wi-Fi 代理,易被证书锁定挡住扫码连接 + 内置 CA 证书
数据回溯会话结束就丢历史自动保存,支持 HAR 导入导出
改请求改代码重新打包请求重写、映射、脚本热更新

5 分钟从克隆到第一条流量

先拉代码:

git clone https://gitcode.com/GitHub_Trending/ne/network_proxy_flutter

进入目录,装依赖:

flutter pub get

启动桌面端(按你的系统选一个设备):

flutter run -d windows

✅ 你应当看到:桌面主窗口打开,左侧是请求列表,右上角出现抓包入口,监听端口开始工作。

⚠️ 注意一:macOS 首次打开会提示不受信任的开发者,去"系统设置-隐私与安全性"允许即可,README_CN.md 里也专门标了这条。 ⚠️ 注意二:要抓 HTTPS 流量,先在设置里安装并信任 ProxyPin 的 CA 证书,否则解密不了,看到的只有密文。

浏览器随便打开一个站点,列表里出现第一条请求——点进去,请求头、请求体、响应体都在。

工作流 1:只抓你要的那条接口

你遇到的问题:抓包开着,列表却被广告、埋点、心跳刷得滚不完,想找的那条接口被淹没在几十条请求里。

在项目中怎么操作:桌面端启动抓包后,打开 lib/ui/desktop/setting/filter.dart 对应的"过滤"页签,把目标域名加进过滤规则;只保留该域名的流量,其余一律不拦截。然后请求列表里点中目标条目,逐栏查看 headers、body 和响应,状态码与耗时一目了然,WebSocket 和 SSE 的流式消息也能展开。

你看到了什么:列表只剩你在调的那个域名的请求,点开就能看到完整响应体,前后差异一眼可查。

如果不对怎么办:列表里根本没有目标域名时,先核对过滤规则写的是完整域名,再确认抓包已开启、CA 证书已信任——HTTPS 没装证书是解不出来的。

工作流 2:手机扫个码,真机流量流到桌面

你遇到的问题:问题只复现在手机上,传统做法是手动给手机 Wi-Fi 配代理、找电脑 IP、对端口,折腾一圈还可能被应用的证书锁定(App 只信任自己的服务器证书,拒绝你伪造的 CA)挡在门外。

在项目中怎么操作:桌面端启动抓包后,点工具栏的手机连接按钮(对应 lib/ui/desktop/toolbar/phone_connect.dart),界面上会生成一个二维码;手机装好 ProxyPin App 后扫这个码,手机流量就转发到桌面端,桌面主界面按时间线合并显示,可按设备筛选。

你看到了什么:手机上发出的每一个请求,原样出现在电脑屏幕的列表里,连真机特有的网络环境差异都被记录下来。

如果不对怎么办:扫码后列表一直空白,先确认手机和电脑在同一个 Wi-Fi 网段、防火墙放行了 ProxyPin 端口,再重新扫一次。

工作流 3:用 JavaScript 脚本改写请求

你遇到的问题:想验证不同 token 权限下的接口表现,传统做法是改 App 代码、重新打包、重新安装,一轮下来十分钟起步,而且每次都要重来。

在项目中怎么操作:打开 lib/ui/desktop/setting/script.dart 对应的"脚本"页面,新建一个请求拦截脚本,用 JavaScript 写onRequest钩子:

function onRequest(request) { if (request.url.includes('api.example.com')) { request.headers['Authorization'] = 'Bearer ' + tokenForTestCase; } return request; }

保存并启用脚本,之后凡是命中的请求都会按脚本执行,列表里看到的就是改过的报文。

你看到了什么:请求头里的 Authorization 已经是你脚本里生成的值,响应随之变化,全程没动过一行 App 代码。

如果不对怎么办:脚本不生效时,先确认函数名就是钩子名(onRequest等),ProxyPin 走的是 JS 钩子模型,写错名字会被静默跳过。

踩坑前先看这里

  • CA 证书没装对:HTTPS 会整片解密失败或 App 直接断网,别急,桌面端和手机端各自装一次、在系统里标记"信任"就好。
  • 手机扫码后断流:大概率是防火墙没放行 ProxyPin 端口,临时放行后重扫一次。
  • 脚本里写死 token:敏感值会被日志和 HAR 导出一起带走,换成从环境变量或本地配置注入。
  • 过滤规则写太宽*一开,无关流量全抓进来,列表卡顿还找不着重点,只加你在调的域名。
  • macOS 首次打开打不开:提示"不受信任的开发者"是正常现象,去系统设置里允许,不是装坏了。

下一步

去 Issues 列表翻一遍,看看你遇到的问题是不是已经有人踩过,顺便提个自己的;完整特性清单和下载渠道见 README_CN.md。下次真机日志再翻车,你不用再等后端同学回消息了——打开 ProxyPin,原始响应就摆在那儿。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询