如何通过tcpdump或从零开始编写模拟Fiddler的程序?

1 投票
1 回答
962 浏览
提问于 2025-04-16 13:34

当 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)'

撰写回答