如何用tcpdump抓出这个结果?

在看一篇文章<<HTTP GET 请求可以有 body 吗>>.
https://zhuanlan.zhihu.com/p/...

其中有一段:

import requests

requests.get(
    url="http://127.0.0.1:8080",
    proxies={"http": "http://127.0.0.1:8888", "https": "https://127.0.0.1:8888"},
    data={"name": "x"},
)

抓包的结果如下:

GET http://127.0.0.1:8080/ HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: python-requests/2.27.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

name=x

现在我改简单一点

import requests

requests.get(
    url="http://127.0.0.1:80",
    data={"name": "x"},
)

准备了tcpdump(参考https://www.jianshu.com/p/3cc...

sudo tcpdump -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

image.png

什么也没有抓到。

请大侠用tcpdump抓出这个请求的结果来。
谢谢。

阅读 2.2k
1 个回答

这里的tcpdump命令没有指定接口,默认应该会去抓默认出网口的那个网卡(enp1s0)。

python这边访问的127.0.0.1,应该会直接走本机回环接口lo。

所以要抓到包,需要在 tcpdump 上指定接口为lo, tcpdump -i lo xxxxxx
或者把get的地址该为enp1s0那个网卡的ip。


还有一个更好的建议,可以直接tcpdump的-w参数,把报文保存为pcap文件,然后再使用wireshark查看和过滤。体验会比直接使用tcpdump写规则要好很多。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进