抓包最让人上火的时候,不是某个字段看不懂,而是 它压根不出东西。点了开始,列表里空空一片;或者好不容易抓到点流量,打开一看全是密文;再或者更气人——抓完一停,整台机器的网都上不去了。
这几种场面性质差得挺远,但它们有个共同点: 第一步经常就查错了方向。很多人的条件反射是去重装证书,可证书只是其中一环,前头还有好几步呢。下面按"失败发生在哪个阶段"分成四类,对着往下捋就行了。
这一类里最常见的是 程序压根没走代理,尤其是自己实现网络栈的客户端——你把系统代理配得好好的,它绕过代理直连去了,代理这边自然一条都看不见。切到「无感代理(全流量)」模式,不认代理的程序、直连流量、本机做热点转发的流量都能抓进来。
网卡抓包这边,空列表一般就是另外两个原因: 网卡选错了,或者 抓包过滤把所有流量都滤掉了。
有个容易踩的坑:抓包过滤 只在开始前生效,会话跑起来之后就改不了了。想"先全抓、回头再筛"的话,一开始就别设过滤,回头用逐包视图的 显示过滤在已抓的全量数据里找,
tcp.port==443这种写法它支持。
还有一种情况是设备根本没进来:手机不在「设备」下拉里,先看数据线插稳没有、手机上点没点「信任」,然后点一下「刷新」。同一台设备同时出现在 USB 和网络两条里, 选 USB 那条最稳。
这一类的层次比看起来多,一层套一层, 按从浅到深排查:
第一层,证书根本没装,或者装了没被这台设备信任。 本机装好不代表手机上就好了——抓手机就得把证书装到
那台手机上。iOS 还有个特别容易漏的动作:描述文件装完之后,得再去
设置 → 通用 → 关于本机 → 证书信任设置 里把那个
完全信任开关打开。这一步不做,前面全白干。
第二层,证书装了、也信了,但那个程序就是不认。 这是普通代理最经典的翻车点:Java、Python、curl、Firefox 这类程序读的是 自己的证书清单,压根不看系统那份。在 TraceEagle 里用「证书全覆盖」把它单独装一遍就行;自动发现没扫到的,手动填个路径补上。
第三层,目标做了证书绑定(Pinning)。 表现是代理一开就连不上、或者直接报错拒连。这边可以一键解除它对这个会话的证书校验,之后再解密;不想碰的站点就精确透传过去。
第四层,目标压根不走标准 TLS。 自己套了一层加密的,证书那套对它没用——这是唯一一类"装什么证书都白装"的。换个思路,从程序内部直接取明文。
另外,网卡抓包那条路上,密文的默认值是"部分程序抓到即明文,其余要点一下「解密此程序」并选中它";漏解子进程的,再开「一键处理子进程」;想看它启动那一刻的流量,还有「重启程序」这个开关。 别看到密文就以为哪里坏了,先确认这个程序有没有被点过名吧。
有个挺反直觉的场面: 代理一开,某个站点就连不上了。这基本是站点在做强校验、不接受中间人解密。解法不是硬来,把它加进 放行名单原样透传就行——不解密它,但也不挡它。想省事就反过来,用 白名单只解密你真正关心的那几个域名,其余一概放行。
手机这条线的话,设了代理却没流量,八成是 代理地址或端口填错了,或者手机和电脑压根不在同一个局域网。核对一下本机 IP 和会话监听的端口,确认两边同网,证书也装到对的那台设备上。
至于"只抓到一半"的情形,比较典型的是 HTTP/3:越来越多 App 改用 QUIC,网卡层历来难抓难解,看着就像断档。在 TraceEagle 的接入设置里把 HTTP/3 选成 降级抓取,让它回退成普通连接,就重新变得可抓可解;想直接拿 H3 明文的,走无感代理模式再选解密。
这一类最容易被误判成"电脑坏了"。我自己就撞过一次:抓完把工具一关,浏览器立刻打不开网页,当时还以为是路由器出问题了,重启了一遍才发现是代理留下了。典型症状是 抓包一停,所有应用一起上不了网——上一次改系统代理之后工具异常退出了,留下一个指向已关闭端口的 残留代理,应用们全朝那个死端口发请求。
好消息是不用去翻系统设置:在 TraceEagle 里跑一遍一键分层诊断,它会自动识别并清掉残留代理、提示「已恢复」;正在正常用着的代理它只报告、不乱动。跑完之后点一次「重新检测」确认恢复就行。
还有个常见的困惑是解密失败——某条流量的详情里没出明文。这种情况先分清是哪一种:这段流量压根没被解过密(源头就没明文),还是解密的时机不对(比如抓的时候目标程序还没被点名)。把它和"证书问题"分开看,能省下不少对着设置瞎折腾的时间。
排查抓包问题,按这个顺序往下走: 先看流量有没有进来(不认代理 / 网卡 / 过滤), 再看进来了为什么是密文(证书信任 / 自建信任库 / 绑定 / 自研加密), 然后是目标连不连得上(放行名单 / 代理地址 / HTTP/3), 再往后才是抓完之后的后遗症(残留代理)。四类各查各的,别一上来就重装证书嘛。
工具之间也能互相补位:Charles 这类传统代理在"要改包、要重放"的场景依旧是主力,Wireshark 负责协议层的逐帧深挖,手机上想快速确认一条请求还有 HttpCanary 这种轻量选择。真正决定排查效率的,还是先把"卡在哪一环"这件事定下来——方向对了,剩下都是小问题啊。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70051042/viewspace-3184576/ ,如需转载,请注明出处,否则将追究法律责任。