电脑凭什么能当"中转站"?
你在手机上点一下"提交订单",App 到底往服务器发了什么?带了哪些参数?服务器回了什么?光靠猜是猜不出来的。抓包就是把这些来往数据拦下来看个明白,而让手机的流量从电脑走一遍,是最省事的拦法。
原理一句话讲透:正常情况下,手机直接和服务器对话;设好代理之后,手机把请求先交给电脑,电脑代为转发,顺手抄一份留底。电脑就像传达室的大爷,所有进出信件都过他的手,他愿意的话还能拆开看看。你在电脑上用 Fiddler 这类工具看到的,就是这一份份"抄件"。
动手前,先备齐三样东西
同一个 WiFi。手机和电脑必须连同一路由器。注意别用商场、公司的访客网络,这类网络常做设备隔离,两台设备互相找不到,后面全白搭。家里路由器最省心。
一个抓包工具。Windows 用 Fiddler,Mac 用 Charles,去官网下安装包,一路下一步。本文拿 Fiddler 做示范,Charles 的对应位置我顺带标注。
电脑的局域网 IP。按 Win+R 输入 cmd 回车,黑窗口里敲:
C:\> ipconfig
无线局域网适配器 WLAN:
IPv4 地址 . . . . . . . . . . . . : 192.168.1.23
这个 192.168.1.23 就是待会要填进手机里的"门牌号",记下来。Mac 用户在"系统设置 → 网络"里能直接看到。
第一步:把电脑端的"门"打开
Fiddler 默认只抓本机请求,要手动允许别的设备连进来。打开 Tools → Options → Connections,勾上 Allow remote computers to connect,旁边端口默认 8888,记住它,重启 Fiddler 生效。Charles 对应 Proxy → Proxy Settings,端口同样 8888,另外要在 Access Control Settings 里加一条 0.0.0.0/0,放行局域网设备。
接着处理防火墙。第一次启动时系统会弹窗问是否允许访问网络,点"允许"就完事;手快点了取消的话,手动补一条规则:
netsh advfirewall firewall add rule name="Fiddler 8888" dir=in action=allow protocol=TCP localport=8888
这一步漏掉的人最多。手机那边怎么填都对就是连不上,十有八九是 8888 端口被防火墙拦了。
第二步:手机上把"路"指给电脑
安卓和 iPhone 的入口长得不一样,要填的东西完全相同——电脑 IP 加端口 8888。
| 设置项 | 安卓 | iPhone |
|---|---|---|
| 代理入口 | 设置 → WLAN → 长按当前网络 → 修改网络 → 高级选项 | 设置 → 无线局域网 → 点当前网络后面的 ⓘ |
| 代理模式 | 选"手动" | 选"手动" |
| 填什么 | 主机名填电脑IP,端口 8888 | 服务器填电脑IP,端口 8888 |
| 用完取消 | 代理改回"无" | 代理改回"关闭" |
保存后别急着干别的,先拿手机浏览器随便开个网页。回到电脑看 Fiddler,左侧列表哗哗冒出新请求,路就算通了。一个请求都没有?回上一节查防火墙,再确认两台设备是不是真在同一个路由器下面。
第三步:装张证书,HTTPS 也看得懂
现在十个 App 九个走 HTTPS,不装证书的话,抓到的全是一堆加密乱码,看着热闹其实啥也读不了。做法很简单:手机浏览器访问 电脑IP:8888(比如 192.168.1.23:8888),页面里有证书下载链接,点它。
安卓在系统设置里搜"证书",从存储设备安装即可。iPhone 会先下载一个描述文件,到设置的"通用"里找到它完成安装,然后别漏了关键一步:进 通用 → 关于本机 → 证书信任设置,把对应开关打开。这个开关不开,前面全白忙,不少人在这儿卡一下午。
顺带提醒一句:抓包期间,手机上所有请求都会经过你这台电脑,在公共 WiFi 里千万别把代理指向来路不明的地址,自己的账号密码等于从别人手里过一遍。
抓不到包?按清单挨个排查
连不上或者抓不到,九成跑不出下面四项:两台设备是否真在同一个路由器下、8888 端口有没有被防火墙放行、证书装没装且信任开关开没开、电脑 IP 是不是变了——路由器重启后地址可能重新分配,重新 ipconfig 查一遍再填。
四项都对还不行?那就是第五种情况:有些 App 出于安全考虑自己管理网络连接,不理会系统代理设置,这类请求抓不到属于正常现象,得换本机抓包类工具另想办法,不必跟它死磕。
进阶:让出口 IP 听你安排
抓包玩熟之后,常有人冒出新需求:做推广的想看看自己的页面在别的城市搜出来是什么排位;做测试的想验证 App 给不同地区用户看的内容对不对。这时候光有中转站还不够,得让电脑发出去的请求从一个指定的城市出去。
思路还是套娃:手机 → 电脑 → 上游代理 → 目标网站。Fiddler 里打开 Tools → Options → Gateway,选手动指定上游代理,协议选 SOCKS5,把代理服务的地址和端口填进去,抓包照抓,出口跟着代理走。Charles 在 Proxy → External Proxy Settings 里做同样的事。
上游代理我一直在用神龙IP,它原生支持 SOCKS5 协议,数据传输全程加密,接进 Fiddler 不用折腾。希望抓包环境长期稳、IP 不天天变的话,可以看它的静态高级套餐——长期固定 IP,运营商合作资源,峰值 6Mbps,挂一整天请求来源都不会跳;只是临时测一轮,动态独享更合适,峰值 10Mbps,时效 2 到 360 小时自己定,到期自动配上新的 IP。它家 200 多个城市可以精准定位,30ms 的响应速度,在抓包这种高频请求的场景里基本感觉不到存在。
常见问题
Q: 挂上代理后手机网速会变慢吗?
会有一点点,毕竟请求绕道电脑走了一圈,但家庭宽带带宽远大于日常所需,刷页面、看请求基本无感。要是电脑同时在跑下载或大文件传输,抓包时就会明显卡,建议抓包期间让电脑清闲点。
Q: 手机用流量(不连WiFi)也能这样抓吗?
不行。流量走运营商基站,和电脑不在一条路上,这套局域网代理方案用不上。硬要抓的话,把电脑开成热点让手机连,思路不变;或者直接在手机上装本机抓包应用,只是可读性和方便程度都差一截。
Q: 证书装了,HTTPS 还是抓不到明文怎么办?
三个常见原因:一是 iPhone 的证书信任开关没打开,回"关于本机 → 证书信任设置"补上;二是 App 自己做了证书校验,不认你装的证书,这种得跟开发要测试环境或接口文档;三是安卓 7 以上部分 App 默认不信任用户装的证书,需要工具的额外模块配合。按这个顺序排查,基本都能定位到。
Q: 能用这招看别人手机的请求吗?
不能,也别动这个念头。代理必须在那台手机上手动设置,对方不配合根本设不上;而且未经同意截取他人网络数据既越界也容易踩法律红线。这套方法只适合调试自己的设备、自己的 App。




