我想知道是否可以使用 捕获来自单个网站的所有网络流量tcpdump
。我有兴趣捕获来自某个网站和发往某个网站的所有传入和传出数据包的大小。然而,类似的东西tcpdump -n host washingtonpost.com
只会(我在终端上尝试过)给出来自washingtonpost
直接解析服务器的流量,而不是例如所有外部CDNs
或Advertising Servers
等等。由于我事先不知道这些服务器的IP addresses
或hostnames
这些服务器,因此我无法创建某种过滤器。有谁知道我可以做到这一点的方法或者这是否确实可能?
谢谢。
答案1
这不可能。为什么 ?通信协议 http/https 是这里的关键。 tcpdump“仅”指定用于捕获较低级别的协议。 tcpdump 上没有过滤器来分析动态流量并对过滤器进行扩展。但这对于满足您的要求是必要的。
您可以使用 Web 代理缓存或其他一些“中间”软件。如果 HTTP 是目标,那么使用 Perl 或 Python 脚本也很容易受到阻碍。还需要做一些工作,特别是 HTTPS 情况下的证书。
+------------+ +------------+ +------------+ |网络浏览器 |-----| HTTP/HTTPS |-----| HTTP/HTTPS | +-------------+ |代理| |服务器| +------------+ +------------+
您可以在 Linux 上使用 iptables 将所有流量重定向到目标端口 80/443 到 Web 代理/“中间人”程序/脚本,或者在 Web 浏览器上使用代理参数。