如何仅从 tshark 返回 Http 标头?

tze*_*nes 12 sniffing command-line wireshark

我正在使用 tshark 来嗅探我的数据包,我只关心 http 标头(最好是发送的形式,但我会尽可能地获取)。

我尝试使用:

tshark tcp port 80 or tcp port 443 -V -R "http"
Run Code Online (Sandbox Code Playgroud)

这给了我标题,还有内容(我不希望它解析大量垃圾)。我真的只关心标题,有没有什么简单的方法可以做到这一点(除了自己解析数据)。

编辑:我应该有资格我也关心主机/端口,所以我可以跟踪多个数据包的请求。

hea*_*vyd 19

您可以使用特定的 HTTP 标头显示过滤器来仅显示请求标头、仅显示响应标头或同时显示两者。

仅对于请求标头:

tshark tcp port 80 or tcp port 443 -V -R "http.request"
Run Code Online (Sandbox Code Playgroud)

仅针对响应标头:

tshark tcp port 80 or tcp port 443 -V -R "http.response"
Run Code Online (Sandbox Code Playgroud)

对于请求和响应标头:

tshark tcp port 80 or tcp port 443 -V -R "http.request || http.response"
Run Code Online (Sandbox Code Playgroud)

注意:这不会仅过滤掉标头,仅过滤掉包含标头的数据包,因此您可能仍会获得一些数据,但数据量应该比其他情况少。

  • 它产生 *"tshark: Invalid capture filter"* (Tshark 2.0.2)。作为一种解决方法,我使用了:`tshark -V -Y http.request tcp port 80 or tcp port 443` (6认同)

小智 5

事实上你可以!以前的所有答案都非常接近。您所需要的只是-O过滤掉除 HTTP 之外的所有信息的标志。

tshark -O http -R http.request tcp port 80 or tcp port 443
Run Code Online (Sandbox Code Playgroud)