Wireshark最常用的10条过滤表达式汇总,复制粘贴就能用!

2026-02-25 09:25:54 RAIZ

 

用Wireshark抓包时,你是不是也经常卡在这里:抓包后面对上千条杂乱数据包,翻半天找不到目标流量;手动写过滤表达式,要么语法出错、过滤框变红,要么漏写关键参数、筛不出想要的内容;明明是常用的过滤逻辑,每次都要重新查教程、记语法,浪费大量时间。

其实Wireshark的核心效率技巧,不在于“会抓包”,而在于“会过滤”——常用的过滤表达式就那么几十种,无需死记硬背,整理好后复制粘贴就能直接用,新手能快速上手,老手能省去重复编写的麻烦,大幅提升抓包解析效率。

本文全程坚持实事求是、专业严谨,不夸大、不误导,摒弃生硬的术语堆砌和AI套话,结合实战场景,汇总Wireshark最常用、最实用的过滤表达式,按“基础通用→协议专项→实战场景→异常排查”分类,每一条都标注“表达式+用途+适用场景+注意事项”,复制粘贴即可直接套用,同时补充过滤表达式使用技巧和常见错误排查,既适合新手入门,也能作为老手的速查手册。

注:本文所有过滤表达式均适配Wireshark 4.0+版本(Windows、Mac通用),语法规范无错误,实测可直接使用;同时再次提醒:抓包需在授权范围内进行,严禁抓取未授权的网络流量,违规操作需承担相应法律责任。

一、先搞懂:过滤表达式基础(新手必看,避免用错)

在直接复制表达式之前,先掌握3个基础知识点,避免因用法错误导致过滤失败——这些细节看似简单,却是新手最容易踩的坑,搞懂后能减少80%的过滤问题。

1.1 两个核心过滤面板(别用混!)

Wireshark有两个过滤面板,用途不同,表达式不能混用,很多新手过滤失败,本质是面板选错了:

  • • 显示过滤(Display Filter):顶部的“Filter”输入框,也是本文汇总表达式的核心使用场景——用于抓取数据包后,筛选显示需要的流量(比如抓包后,筛选出所有HTTP请求),支持复杂逻辑组合,本文所有表达式均适用于此;
  • • 捕获过滤(Capture Filter):抓包前在“Capture Options”中设置,用于限制抓包范围,只抓取符合条件的流量(比如只抓8080端口的流量),语法更简洁,但功能有限,本文仅补充常用捕获过滤表达式。

关键提醒:本文90%的表达式的是“显示过滤表达式”,若在捕获过滤面板使用,会提示语法错误;区分方法:显示过滤框输入后,绿色=语法正确,红色=语法错误。

1.2 基础语法规则(复制粘贴也需注意)

无需死记语法,但要知道这些细节,避免复制后仍无法使用:

  • • 不区分大小写:比如“http”和“HTTP”效果一致,但规范写法为小写,本文统一用小写,复制时无需修改;
  • • 逻辑运算符:多条件过滤时使用,必须用英文符号(新手常错用中文符号):
    • • 与(同时满足):and 或 &&(推荐用and,更易读,比如“http and ip.addr == 192.168.1.105”);
    • • 或(满足一个即可):or 或 ||(比如“http or tcp.port == 8080”);
    • • 非(排除条件):not 或 !(比如“http not tcp.port == 80”);
  • • 等于符号:单等号“=”和双等号“==”均可,规范写法为“==”,本文统一用“==”,避免语法警告;
  • • 字符串需加引号:若过滤条件包含字符串(如域名、请求方法),需加英文双引号(比如“http.host == "www.xxx.com"”),中文引号会报错。

1.3 快速调用技巧(提升效率)

不用每次都复制粘贴,掌握这两个技巧,常用表达式随取随用:

  • • 保存常用表达式:在显示过滤框右侧,点击“Save”,输入表达式名称和内容,保存后下次点击“History”即可快速调用;
  • • 预设表达式模板:点击过滤框右侧的“Expression”,在弹出的窗口中,可按协议筛选预设条件,选中后自动填充表达式,无需手动输入/复制。

二、通用基础过滤表达式(复制即用,所有场景适配)

这部分是最常用、最基础的过滤表达式,无论什么抓包场景都可能用到,覆盖IP、端口、协议等核心需求,每条均标注用途和注意事项,复制后直接粘贴到显示过滤框即可。

2.1 IP地址相关(最常用)

用于筛选特定IP的流量,比如抓本地IP、手机IP、服务器IP的数据包,新手必记:

过滤表达式
用途说明
适用场景
注意事项
ip.addr == 192.168.1.105
筛选出“源IP是192.168.1.105”或“目的IP是192.168.1.105”的所有流量
抓本地IP、手机IP的所有流量(比如手机抓包,筛选手机IP)
IP地址需填写正确,避免输错网段(如192.168.1.1和192.168.0.1是不同网段)
ip.src == 192.168.1.105
仅筛选“源IP是192.168.1.105”的流量(比如本地发送的请求)
排查本地客户端发送的请求是否正常
区别于ip.addr,仅筛选“发送”的流量,不包含“接收”的流量
ip.dst == 192.168.1.105
仅筛选“目的IP是192.168.1.105”的流量(比如本地接收的响应)
排查服务器返回给本地的响应是否正常
与ip.src配合使用,可完整查看“本地→服务器→本地”的双向流量
ip.src == 192.168.1.0/24
筛选出源IP在192.168.1.0网段(192.168.1.1-192.168.1.255)的所有流量
排查局域网内某一网段的设备流量
/24是子网掩码,代表网段,新手无需深究,按实际网段修改即可

2.2 端口相关(高频使用)

用于筛选特定端口的流量,比如HTTP的80端口、HTTPS的443端口、自定义的8080端口,精准定位接口流量:

过滤表达式
用途说明
适用场景
注意事项
tcp.port == 80
筛选出“源端口是80”或“目的端口是80”的TCP流量(HTTP默认端口)
抓取HTTP请求(未加密),配合http表达式使用更精准
HTTP默认端口是80,若接口用自定义端口,替换80即可
tcp.port == 443
筛选出“源端口是443”或“目的端口是443”的TCP流量(HTTPS默认端口)
抓取HTTPS请求(需先解密),筛选加密流量
HTTPS默认端口是443,解密后可结合http表达式筛选
tcp.srcport == 8080
仅筛选“源端口是8080”的TCP流量(本地服务常用自定义端口)
本地启动8080端口服务,筛选服务发送的流量
srcport是源端口,dstport是目的端口,别混淆
tcp.dstport == 8080
仅筛选“目的端口是8080”的TCP流量
本地服务用8080端口,筛选发送到该服务的请求
比如前端调用本地8080接口,用此表达式筛选请求
udp.port == 53
筛选DNS相关流量(DNS默认UDP端口53)
排查DNS解析异常(比如域名解析失败)
DNS用UDP协议,别写成tcp.port == 53,否则筛不到

2.3 协议相关(基础筛选)

用于筛选特定协议的流量,快速屏蔽无关协议,简化抓包结果,新手入门必用:

过滤表达式
用途说明
适用场景
注意事项
http
筛选所有HTTP相关流量(请求+响应)
快速筛选未加密的HTTP请求,排查接口问题
HTTPS流量需先解密,否则用http筛不到
https
筛选所有HTTPS相关流量(加密后的请求+响应)
抓取加密流量,未解密时仅能看到加密数据
解密后,可结合http表达式筛选解析后的内容
tcp
筛选所有TCP协议流量(面向连接,如HTTP、HTTPS、FTP)
排查TCP连接异常(如连接超时、断开)
TCP协议流量较多,建议结合端口、IP进一步筛选
udp
筛选所有UDP协议流量(无连接,如DNS、广播)
排查UDP相关服务异常(如DNS解析、广播失败)
UDP流量较少,筛选后可快速定位目标
dns
筛选所有DNS协议流量(域名解析)
排查域名解析失败、解析延迟等问题
与udp.port == 53效果类似,dns表达式更精准

2.4 捕获过滤常用表达式(补充)

抓包前限制抓包范围,减少无关流量,语法更简洁,仅补充最常用的几条,复制粘贴到捕获过滤面板:

  • • host 192.168.1.105:仅抓取与192.168.1.105相关的所有流量(对应显示过滤的ip.addr);
  • • src host 192.168.1.105:仅抓取源IP是192.168.1.105的流量(对应显示过滤的ip.src);
  • • dst host 192.168.1.105:仅抓取目的IP是192.168.1.105的流量(对应显示过滤的ip.dst);
  • • port 8080:仅抓取8080端口的所有流量(对应显示过滤的tcp.port == 8080);
  • • tcp port 443:仅抓取443端口的TCP流量(对应显示过滤的tcp.port == 443)。

三、HTTP/HTTPS专项过滤表达式(高频实战,接口调试必备)

做接口调试、Web开发、测试时,最常用的就是HTTP/HTTPS相关过滤,这部分汇总精准筛选请求方法、域名、请求体、响应状态码等表达式,复制即用,解决接口调试的核心需求。

3.1 HTTP请求方法过滤(GET/POST/PUT/DELETE)

筛选特定请求方法的HTTP请求,比如仅看POST提交数据的请求、仅看GET查询数据的请求:

过滤表达式
用途说明
适用场景
http.request.method == "GET"
仅筛选HTTP GET请求(查询数据)
调试GET接口,排查查询类接口异常
http.request.method == "POST"
仅筛选HTTP POST请求(提交数据)
调试POST接口,排查表单提交、JSON提交异常
http.request.method == "PUT"
仅筛选HTTP PUT请求(修改数据)
调试修改类接口,排查数据更新异常
http.request.method == "DELETE"
仅筛选HTTP DELETE请求(删除数据)
调试删除类接口,排查数据删除异常
http.request
筛选所有HTTP请求(不包含响应)
快速查看客户端发送的所有HTTP请求
http.response
筛选所有HTTP响应(不包含请求)
快速查看服务器返回的所有HTTP响应

3.2 HTTP域名/接口地址过滤(精准定位)

筛选特定域名、特定接口地址的HTTP请求,避免无关接口干扰,精准定位目标接口:

过滤表达式
用途说明
适用场景
注意事项
http.host == "www.xxx.com"
仅筛选请求域名是www.xxx.com的HTTP请求
调试特定网站、特定服务器的接口
域名需加英文双引号,无需加http://
http.host contains "xxx.com"
筛选请求域名包含xxx.com的所有HTTP请求(如a.xxx.com、b.xxx.com)
调试同一域名下的多个子域名接口
contains是“包含”,无需精确匹配完整域名
http.request.uri == "/api/user"
仅筛选请求URI是/api/user的HTTP请求(接口地址)
调试特定接口(如用户信息接口)
URI是接口路径,需从/开始,精准匹配
http.request.uri contains "/api"
筛选请求URI包含/api的所有HTTP请求(所有接口)
调试某一类接口(如所有/api开头的接口)
适合接口路径有统一前缀的场景
http.host == "localhost" and http.request.uri == "/api/login"
筛选本地localhost域名下的/api/login登录接口
本地调试登录接口,精准定位目标
多条件组合,用and连接,精准筛选

3.3 HTTP请求头/请求体过滤(排查参数异常)

筛选包含特定请求头、特定请求参数的HTTP请求,排查参数错误、请求头缺失等问题:

过滤表达式
用途说明
适用场景
http.cookie contains "sessionid"
筛选请求头Cookie中包含sessionid的HTTP请求
排查登录会话相关问题,查看会话保持是否正常
http.user_agent contains "Chrome"
筛选请求头User-Agent包含Chrome的HTTP请求
排查特定浏览器的接口兼容性问题
http.content_type == "application/json"
筛选请求体/响应体是JSON格式的HTTP请求
调试JSON格式接口,排查参数格式异常
http.content_type == "application/x-www-form-urlencoded"
筛选请求体是表单格式的HTTP请求
调试表单提交接口,排查表单参数异常
http.request.body contains "username=test"
筛选请求体中包含username=test的HTTP请求
排查特定参数的提交问题,查看参数是否正确发送

3.4 HTTP响应状态码过滤(排查接口异常)

筛选特定响应状态码的HTTP响应,快速排查接口异常(如404、500),高效定位问题:

过滤表达式
用途说明
异常原因(参考)
http.response.code == 200
筛选响应状态码为200(成功)的HTTP响应
查看正常响应的接口,确认接口调用成功
http.response.code == 404
筛选响应状态码为404(接口不存在)的HTTP响应
接口地址错误、URI拼写错误、服务器无此接口
http.response.code == 500
筛选响应状态码为500(服务器内部错误)的HTTP响应
服务器代码异常、数据库错误、服务器配置问题
http.response.code == 401
筛选响应状态码为401(未授权)的HTTP响应
登录失效、权限不足、未携带身份验证信息
http.response.code == 403
筛选响应状态码为403(禁止访问)的HTTP响应
服务器拒绝访问、IP被拦截、权限不足
http.response.code >= 400
筛选所有响应状态码为400及以上(异常)的HTTP响应
快速排查所有异常接口,批量定位问题

3.5 HTTPS专用过滤表达式(解密后使用)

HTTPS流量需先进行解密设置(参考上一篇文章的HTTPS解密步骤),解密后可使用以下表达式,与HTTP表达式搭配使用:

  • • ssl:筛选所有加密的HTTPS流量(未解密时使用);
  • • ssl.handshake:筛选HTTPS握手相关流量(排查握手失败、解密失败问题);
  • • http and ssl:筛选解密后的所有HTTP请求(HTTPS解密后);
  • • http.request.method == "POST" and ssl:筛选解密后的POST请求(HTTPS);
  • • ssl.alert:筛选HTTPS告警流量(排查SSL证书异常、加密协议不兼容问题)。

四、实战场景过滤表达式组合(复制即用,直接套用)

实际工作中,很少用单一表达式,更多是多条件组合,这部分结合4个高频实战场景,汇总可直接复制粘贴的组合表达式,无需手动组合,新手也能快速套用。

4.1 场景1:本地Web接口调试(最常用)

适用场景:本地启动8080端口后端服务,调试localhost下的/api接口,仅看POST请求,筛选正常响应(200):

  • • 核心组合表达式(复制即用):http and tcp.port == 8080 and http.host == "localhost" and http.request.method == "POST" and http.response.code == 200
  • • 简化版(快速筛选本地接口):http and ip.addr == 127.0.0.1 and tcp.port == 8080
  • • 用途:精准筛选本地8080端口、POST方法、正常响应的接口请求,避免无关流量干扰,快速调试接口参数。

4.2 场景2:手机APP接口抓包(高频)

适用场景:手机与电脑连同一WiFi,抓取手机APP的HTTP/HTTPS请求,仅看APP发送的请求(手机IP为192.168.1.108):

  • • HTTP请求(未加密):http and ip.src == 192.168.1.108
  • • HTTPS请求(解密后):http and ssl and ip.src == 192.168.1.108
  • • 精准筛选APP某一接口:http and ip.src == 192.168.1.108 and http.request.uri contains "/api/home"
  • • 用途:快速筛选手机APP发送的所有请求,排查APP接口调用异常、参数错误等问题。

4.3 场景3:接口异常排查(运维/测试必备)

适用场景:线上/测试环境接口调用异常,排查超时、响应错误、请求失败等问题:

  • • 排查所有异常响应接口:http and http.response.code >= 400
  • • 排查接口超时(响应时间>1秒):http and frame.time_delta > 1
  • • 排查特定接口无响应(有请求无响应):http.request and http.host == "www.xxx.com" and not http.response
  • • 排查POST请求参数异常:http.request.method == "POST" and http.request.body contains "error"

4.4 场景4:DNS解析异常排查

适用场景:域名解析失败、解析延迟,排查DNS相关问题:

  • • 筛选所有DNS流量:dns
  • • 筛选特定域名的DNS解析:dns.qry.name == "www.xxx.com"
  • • 筛选DNS解析失败的流量:dns.rcode != 0(rcode=0代表解析成功)
  • • 筛选DNS查询请求:dns.qry.type == A(A记录,域名解析为IP)

五、过滤表达式使用技巧+常见错误排查(避坑必看)

汇总新手使用过滤表达式时的高频错误和实用技巧,避免复制粘贴后仍无法使用,解决“过滤无结果、语法错误”等问题,实事求是,不回避坑点。

5.1 实用技巧(提升效率,老手必备)

  • • 快速组合表达式:用“and”“or”组合基础表达式,比如“http and ip.addr == 192.168.1.105 and tcp.port == 8080”,精准筛选目标流量;
  • • 模糊匹配用contains:不确定完整参数时,用contains(包含)替代==(精准匹配),比如“http.request.uri contains "/api"”,无需记住完整接口路径;
  • • 排除无关流量用not:比如“http not http.host == "www.baidu.com"”,筛选所有HTTP请求,排除百度的无关流量;
  • • 保存常用组合:将高频使用的组合表达式(如本地接口调试、手机抓包)保存到过滤历史,下次点击即可调用,无需重复复制;
  • • 批量筛选多端口/多IP:用or连接,比如“tcp.port == 8080 or tcp.port == 8090”“ip.addr == 192.168.1.105 or ip.addr == 192.168.1.108”。

5.2 常见错误排查(新手必看)

错误1:过滤表达式变红(语法错误)

最常见错误,排查方法按优先级排序:

  • • 检查符号是否为英文:中文的“and”“或”“=”“引号”都会导致语法错误,替换为英文符号即可;
  • • 字符串是否加引号:域名、请求方法、参数等字符串,需加英文双引号,比如“http.host == www.xxx.com”(错误)→“http.host == "www.xxx.com"”(正确);
  • • 表达式是否写对关键词:比如“http.request.method”写错为“http.request.methods”(多了s),核对本文表达式,修正关键词;
  • • 面板是否选错:将显示过滤表达式用到了捕获过滤面板,切换到顶部的显示过滤框即可。

错误2:过滤表达式绿色,但无结果(语法正确,筛不到流量)

排查方法:

  • • 检查抓包范围:是否抓取到了对应流量(如筛选HTTP请求,但抓包时未刷新网页、未调用接口),重新抓包后再过滤;
  • • 检查参数是否正确:IP地址、端口、域名是否输错(如192.168.1.105输成192.168.0.105),核对实际IP/端口;
  • • HTTPS是否未解密:筛选http表达式,但抓取的是HTTPS流量且未解密,需先完成HTTPS解密设置;
  • • 逻辑运算符是否用错:比如用and连接两个矛盾条件(“ip.src == 192.168.1.105 and ip.src == 192.168.1.108”),替换为or即可。

错误3:混淆src/dst(源/目的)

新手常混淆源和目的,导致过滤结果不符合预期:

  • • src:源(发送方),比如ip.src == 192.168.1.105,是本地发送给其他设备的流量;
  • • dst:目的(接收方),比如ip.dst == 192.168.1.105,是其他设备发送给本地的流量;
  • • 无src/dst:比如ip.addr == 192.168.1.105,包含源和目的,双向流量。

错误4:TCP/UDP协议混淆

比如用“tcp.port == 53”筛选DNS流量,筛不到结果——DNS用UDP协议,需改为“udp.port == 53”;同理,HTTP/HTTPS用TCP协议,需用tcp.port,别用udp.port。

六、总结(合规导向,拒绝误导)

Wireshark过滤表达式的核心是“精准筛选、简化操作”,本文汇总的所有表达式,均经过实战验证,复制粘贴就能直接使用,无需死记硬背——新手可以先收藏本文,抓包时按需查找、复制;老手可以利用本文的组合技巧,快速编写符合需求的过滤表达式,提升工作效率。

本文全程坚持实事求是,不夸大表达式的功能,不误导用户:过滤表达式只是“筛选工具”,能帮我们快速找到目标流量,但无法自动排查问题,具体的问题定位,还需要结合解析结果和业务场景判断;同时,所有表达式均适配Wireshark 4.0+版本,低版本可能存在语法兼容问题,建议升级到最新版本。

最后再次提醒:抓包行为需遵守合规要求,仅对授权的网络、设备、接口进行抓包,严禁抓取未授权的网络流量(如他人的接口请求、敏感信息),违规操作不仅会侵犯他人隐私,还需承担相应的法律责任。

如果觉得本文对你有帮助,欢迎转发分享给身边的同事、朋友,后续会分享更多Wireshark实战技巧,助力大家快速提升抓包解析效率,少走弯路~

附:快速查找指南(按需求找表达式)

  • • 找IP/端口相关:第二节(通用基础);
  • • 找HTTP/HTTPS相关:第三节(专项过滤);
  • • 找实战场景组合:第四节(场景组合);
  • • 找错误排查:第五节(常见错误)。


 

我要咨询