首页/网络/抓包与流量分析速查/Wireshark 过滤请求 URI
Wireshark 技巧75 条

Wireshark 过滤请求 URI

http.request.uri 匹配请求路径与查询串,是定位"哪个接口慢/报错"的直接字段;配合 response.code 精确统计某接口错误。

请求 URI 是什么

http.request.uri 匹配 HTTP 请求行中的路径与查询串,不包含主机名——主机名要另看 Host 头。它是定位「哪个接口慢、哪个接口报错」最直接的字段:配合 http.response.code 可以只保留某接口的非 200 响应,精确度远高于按端口或连接过滤。

基本信息

适用工具Wireshark 3.x / 4.x
字段http.request.uri,含路径与查询串
相关字段http.request.full_uri 含协议与主机;http.host 只看主机
匹配写法contains 子串、== 精确、matches 正则
前提明文 HTTP/1.x;HTTPS 需先解密

典型使用场景

  • 定位某个接口的报错:URI 含特定路径且响应码非 200
  • 统计某接口的请求次数与响应码分布
  • 排查回调类流量:抓住回调路径确认对端是否回访
  • 对比改造前后同一接口的响应时延

常用示例

常用示例
http.request.uri contains "/login"                        # 子串匹配
http.request.uri == "/api/v1/users"                        # 精确匹配,查询串不同则不命中
http.request.uri matches "/api/v[0-9]+/users"              # 正则匹配
http.request.uri contains "callback" && http.response.code != 200   # 只看回调失败

写法对照

写法匹配范围说明
uri == "/login"完全等于该路径带查询串就不命中
uri contains "/login"路径中包含子串最常用,容忍查询串变化
uri matches 正则按正则表达式需要模式化匹配时用
full_uri含协议与主机名的完整 URL跨域名区分时更省事
URI 匹配区分大小写,服务对路径大小写不一致时要放宽条件或分别写两个条件。
HTTP/2 里没有请求行,对应字段是 http2.header.value 配合 http2.header.name == ":path"。

进阶要点

  • 需要跨域名区分时改用 full_uri,避免把不同站点的同名路径混在一起统计
  • 接口路径带版本号时分别统计,便于灰度发布前后对比
  • 把 URI 加为自定义列,列表里直接看到每个请求的目标接口
  • 统计接口错误率用 HTTP 统计视图看响应码分布,比逐包数更快
  • 查询串含义不同的同一路径,统计前先归并再比较
HTTP/2 场景请使用 http2.header.value 配合 :path 伪头,http 前缀的字段在该协议下不生效。

配套字段

  • 看请求方法用 http.request.method
  • 看响应状态用 http.response.code
  • 统计域名维度用 HTTP 统计视图
  • 要含主机名的完整地址用 http.request.full_uri
  • 加密流量需先解密才能使用上述字段

易错点

  • 把查询串一起匹配进去:同一接口不同参数被视为不同 URL,统计时先归并路径再比较
  • HTTPS 上直接套用该过滤:没有解密时 http 字段为空,会误判为「服务没收到请求」
  • 用 uri 判断主机:URI 不含主机名,多域名混跑时要叠加 Host 条件

数据来源与参考

  • Wireshark 显示过滤器参考(http.request.uri)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌