只通过tcpdump捕获HTTP POST请求

为了安全起见,我们希望列出在我们的应用程序中使用的所有POST请求URI(所以我们将通过mod_security除了那些URI以外禁用POST)。 我们的想法是在完全回归testing中使用tcpdump捕获这些数据,然后wireshark获得所有URI的明确列表。

问题是,我们无法find正确的tcpdump参数来捕获HTTP POST请求(因为完整的tcpdump会快速填满磁盘,所以这是需要的)。

下面的命令工程查找,但显示GET的,POSTS和一些其他数据包(太多):

sudo tcpdump -A 'tcp port 9081 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' 

以下只捕获POST请求,但在wireshark中,它们显示为TCP数据包,我们无法从这些数据中提取URI(就像我们在wireshark中使用自定义值http.request.uri HTTP http.request.uri ):

 sudo tcpdump -A 'tcp port 9081 tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354' 

我们应该使用什么tcpdump参数来捕获HTTP POST请求(在wireshark中显示为HTTP数据包),或者我们如何从这些TCP数据包(第二个命令)中提取URI?