You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tshark 3.0.5如何筛选排除空值/Null的http.referer字段

解决Tshark筛选无Referer的HTTP请求问题

我来帮你搞定这两个命令的问题,同时给出精准的筛选方案:

第一个命令的错误原因及修复

你碰到的bash: !http.referer: event not found是Bash的历史命令扩展机制搞的鬼:在双引号里,!会被Bash当成调用历史命令的标记,而不是Tshark过滤规则的一部分。

修复起来很简单,把整个过滤条件用单引号包起来就行,这样Bash就不会解析里面的特殊字符了:

tshark -Y 'http.request == 1 and !http.referer' -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt

这里!http.referer的作用是匹配不存在http.referer字段的HTTP请求。

第二个命令的错误原因及修复

Unexpected end of filter string是因为你在双引号里嵌套了未转义的双引号:http.referer == ""里的内层双引号会被Bash提前识别为字符串结束符,导致Tshark拿到不完整的过滤规则。

同样用单引号包裹整个过滤条件就能解决,或者转义内层双引号(前者更简洁):

# 方式1:单引号包裹整个过滤条件(推荐)
tshark -Y 'http.request == 1 and http.referer == ""' -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt

# 方式2:转义内层双引号(双引号包裹过滤条件时用)
tshark -Y "http.request == 1 and http.referer == \"\"" -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt

这里http.referer == ""匹配的是存在http.referer字段但值为空的请求。

合并筛选:覆盖两种无有效Referer的场景

如果你需要同时筛选出“没有referer字段”和“referer字段为空”的两种情况,可以把两个规则合并:

tshark -Y 'http.request == 1 and (!http.referer or http.referer == "")' -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt

关于Root提示的说明

Running as user "root" and group "root". This could be dangerous.只是Tshark的安全提醒,告诉你以root身份运行存在风险,只要你确认操作的安全性,这个提示不会影响命令执行。

内容的提问来源于stack exchange,提问作者user2965031

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 07:37:45