![监控正在发生的传出 Web 请求](https://linux22.com/image/39491/%E7%9B%91%E6%8E%A7%E6%AD%A3%E5%9C%A8%E5%8F%91%E7%94%9F%E7%9A%84%E4%BC%A0%E5%87%BA%20Web%20%E8%AF%B7%E6%B1%82.png)
我想查看从我的桌面发出的所有 HTTP 请求的列表。我认为应该可以使用服务器名称指示(SNI)来监控本地客户端的 HTTPS 主机名。
OS X 有一个很好的 GUI 实用程序,称为小飞贼,它是每个应用程序的 HTTP 监视器和防火墙规则前端。
我会选择一个不错的终端实用程序。tcpdump
太过分了,因为我只想实时查看流量的去向,而不是传输的数据。理想情况下,我也想看看是什么流程提出了请求,但仅仅看看是什么拨打了回家将是一个很好的开始。
答案1
您可以使用lsof
和watch
来执行此操作,如下所示:
$ watch -n1 lsof -i TCP:80,443
输出示例
dropbox 3280 saml 23u IPv4 56015285 0t0 TCP greeneggs.qmetricstech.local:56003->snt-re3-6c.sjc.dropbox.com:http (ESTABLISHED)
thunderbi 3306 saml 60u IPv4 56093767 0t0 TCP greeneggs.qmetricstech.local:34788->ord08s09-in-f20.1e100.net:https (ESTABLISHED)
mono 3322 saml 15u IPv4 56012349 0t0 TCP greeneggs.qmetricstech.local:54018->204-62-14-135.static.6sync.net:https (ESTABLISHED)
chrome 11068 saml 175u IPv4 56021419 0t0 TCP greeneggs.qmetricstech.local:42182->stackoverflow.com:http (ESTABLISHED)
答案2
替代方案克里克的回答(同时也使用其中的一部分)是放弃watch
,并使用该-r
选项来lsof
代替,以在终端上滚动的重复日志结束,例如
lsof -i TCP:80,443 -r 1
每一秒重复一次,每次重复的输出由 分隔=======
。它可能不那么漂亮,但它提供了可滚动的历史记录,例如:
=======
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
firefox 9542 user 27u IPv4 1068219 0t0 TCP user-300V3Z-300V4Z-300V5Z:37360->192.0.78.23:https (ESTABLISHED)
firefox 9542 user 48u IPv4 1053405 0t0 TCP user-300V3Z-300V4Z-300V5Z:45948->ec2-54-213-37-69.us-west-2.compute.amazonaws.com:https (ESTABLISHED)
=======
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
firefox 9542 user 27u IPv4 1068219 0t0 TCP user-300V3Z-300V4Z-300V5Z:37360->192.0.78.23:https (ESTABLISHED)
firefox 9542 user 48u IPv4 1053405 0t0 TCP user-300V3Z-300V4Z-300V5Z:45948->ec2-54-213-37-69.us-west-2.compute.amazonaws.com:https (ESTABLISHED)
firefox 9542 user 52u IPv4 1138942 0t0 TCP user-300V3Z-300V4Z-300V5Z:57602->kul08s01-in-f10.1e100.net:https (SYN_SENT)
firefox 9542 user 102u IPv4 1139934 0t0 TCP user-300V3Z-300V4Z-300V5Z:49102->kul09s13-in-f14.1e100.net:https (ESTABLISHED)
firefox 9542 user 110u IPv4 1138950 0t0 TCP user-300V3Z-300V4Z-300V5Z:49104->kul09s13-in-f14.1e100.net:https (SYN_SENT)
=======
...
=======
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
firefox 9542 user 27u IPv4 1068219 0t0 TCP user-300V3Z-300V4Z-300V5Z:37360->192.0.78.23:https (ESTABLISHED)
firefox 9542 user 48u IPv4 1053405 0t0 TCP user-300V3Z-300V4Z-300V5Z:45948->ec2-54-213-37-69.us-west-2.compute.amazonaws.com:https (ESTABLISHED)
firefox 9542 user 51u IPv4 1140129 0t0 TCP user-300V3Z-300V4Z-300V5Z:52284->kul09s13-in-f10.1e100.net:https (ESTABLISHED)
firefox 9542 user 108u IPv4 1137384 0t0 TCP user-300V3Z-300V4Z-300V5Z:55886->103.229.10.236:https (ESTABLISHED)
firefox 9542 user 122u IPv4 1137399 0t0 TCP user-300V3Z-300V4Z-300V5Z:55870->kul08s12-in-f1.1e100.net:https (ESTABLISHED)
firefox 9542 user 126u IPv4 1137402 0t0 TCP user-300V3Z-300V4Z-300V5Z:47370->stackoverflow.com:https (SYN_SENT)
注意:我只打开了 Firefox,因此只显示了一个应用程序。
显然,这个输出可以被重定向或通过管道传输到(日志)文件。