在看一篇文章<<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'
什么也没有抓到。
请大侠用tcpdump抓出这个请求的结果来。
谢谢。
这里的tcpdump命令没有指定接口,默认应该会去抓默认出网口的那个网卡(enp1s0)。
python这边访问的127.0.0.1,应该会直接走本机回环接口lo。
所以要抓到包,需要在 tcpdump 上指定接口为lo,
tcpdump -i lo xxxxxx
。或者把get的地址该为enp1s0那个网卡的ip。
还有一个更好的建议,可以直接tcpdump的-w参数,把报文保存为pcap文件,然后再使用wireshark查看和过滤。体验会比直接使用tcpdump写规则要好很多。