如何通过tcpdump或从零开始编写模拟Fiddler的程序?
当 Fiddler 不在 Mac OS X 或 Ubuntu 上时,如果我们不想安装或使用 Wireshark 这样的复杂工具,有没有办法使用 tcpdump
来做到以下几点:
1) 它可以打印出
GET /foo/bar HTTP/1.1
[request content in RAW text]
[response content in RAW text]
POST /foo/... HTTP/1.1
这可以通过 tcpdump 本身或者用 tcpdump 写一个简单的 shell 脚本,或者用 Ruby / Python / Perl 脚本来实现。
2) 如果有一个脚本可以输出 HTML,那就更好了,里面有
GET /foo/bar HTTP/1.1
POST /foo/... HTTP/1.1
可以让任何浏览器显示的内容,然后当点击这些行中的任何一行时,它会展开显示原始内容,就像上面提到的那样。再点击一次就会隐藏这些细节。这个展开的界面可以用 jQuery 或其他 JavaScript 库来实现。这个脚本可能很短……可能不到 20 行?有没有人知道怎么实现 (1) 或 (2)?
1 个回答
1
这里有两个用于抓取HTTP GET和HTTP POST请求的tcpdump过滤器:
# tcpdump filter for HTTP GET
sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
# tcpdump filter for HTTP POST
sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'