Python请求 - 如何计算单个请求 - 响应周期的总网络消耗

时间:2016-06-23 10:55:01

标签: python python-3.x python-requests

我正在编写一个脚本来从网上抓取数据。我想计算每个请求和响应的大小,以监控我的网络消耗。那么,有什么办法吗?

1 个答案:

答案 0 :(得分:0)

使用响应标头可以了解网络使用情况:

>>> response = requests.get('http://edition.cnn.com')
>>> response.headers['Content-Length']
'28321'

问题

从网络消费的角度来看,这是不准确的!实际上,content-length头字段为我们提供了HTTP响应主体的大小,而不考虑HTTP头和完整的以太网/ IP / TCP头。

在wireshark上添加所有相应数据包的大小后,我最终得到30784字节,不包括TCP确认(我的情况下变化为8%,如果我添加了,则跳到 13%握手,HTTP请求和连接关闭)。

一些见解

我的建议是tcpdump HTTP流量(我在这里通过到端口80的流量来定义,意识到它是错误的),并用一些旧的python处理输出。

您可以使用sudo tcpdump -n "dst port 80" -w cap.pcap将所有流量转储到端口80,然后参考this SO question了解如何处理输出。

希望它会有所帮助。