我正在编写一个脚本来从网上抓取数据。我想计算每个请求和响应的大小,以监控我的网络消耗。那么,有什么办法吗?
答案 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了解如何处理输出。
希望它会有所帮助。