实用科技屋
霓虹主题四 · 更硬核的阅读氛围

抓包时如何过滤干扰数据:Wireshark 实用过滤技巧

发布时间:2026-01-23 18:10:30 阅读:136 次

做网络排障或接口调试时,一打开 Wireshark 就满屏飘红——DNS、ARP、LLMNR、Bonjour、系统心跳……真正想看的 HTTP 请求反而被埋得严严实实。这不是抓包工具不行,是没用对过滤方法。

先分清两种过滤:捕获 vs 显示

很多人一上来就狂点「Filter」框,结果啥都没看到——那是把显示过滤(Display Filter)当成了捕获过滤(Capture Filter)。两者完全不同:

捕获过滤在数据进内存前就筛掉,省资源、不占磁盘;显示过滤是抓完再筛,适合反复调整。日常调试建议先用捕获过滤压住噪音,再用显示过滤精确定位。

常用捕获过滤写法(libpcap 语法)

启动抓包前,在「Capture Options」→「Capture Filter」里填:

host 192.168.1.100 and port 8080

只抓目标 IP 和端口的双向流量;

tcp port 443 and host api.example.com

注意:这里 host 后必须是 IP,域名不生效,可先 nslookup api.example.com 查出 IP 再填;

not arp and not icmp and not udp port 53

直接干掉 ARP、ICMP 和 DNS,清爽很多。

显示过滤更灵活,调试时主力用它

抓完后,在顶部 Filter 栏输入(支持自动补全):

http.request.method == "POST"

只留 POST 请求;

ip.addr == 10.0.2.5 and http

查某台测试机发的所有 HTTP 流量;

tcp.stream eq 12

点中某个 TCP 包 → 右键「Follow」→「TCP Stream」,Wireshark 会自动给你算出 stream ID,之后输这个就能把整条会话串起来,避开重传、乱序干扰。

几个真实场景的小技巧

开发微信小程序联调时,手机连电脑热点,Wireshark 抓不到 HTTPS 请求?别急着换代理——先加显示过滤:
tls.handshake.type == 1 and ip.src == 192.168.137.102
这样能看到手机发起的 TLS 握手请求,确认是否连上了正确后端。

公司内网老有设备发 LLMNR 广播(IP: 224.0.0.252),刷屏严重。捕获过滤直接加一句:
not ip multicast
或者更精准:
not (ip.dst == 224.0.0.252 or ip.dst == 224.0.0.251)

有时候想排除本机流量,只看外部交互:
!ip.src == 192.168.1.5 and !ip.dst == 192.168.1.5
(把 192.168.1.5 换成你本机 IP)

别迷信「过滤」,也看看「着色规则」

Wireshark 的「View」→「Coloring Rules」里,可以把特定协议标成黄色、红色,比如把所有 DNS 标灰、HTTP 标绿。眼睛扫过去,干扰项自动弱化,关键流量跳出来——这比每回敲过滤更快。