1

我正在尝试发送 GET 请求,但在开始请求之前,我想捕获流量。可以使用以下命令捕获流量:

dumpcap -i eth0 -f "udp port 53" -w dns.cap

在后台。当我捕获数据包时,我需要通过发送一些 URL 来发出一些请求。现在,使用下面的代码,我的捕获代码似乎不起作用,我什至在我的文件夹中都看不到 dns.cap 文件。

有什么问题?

import requests
import os
import subprocess
import urllib
print "start capturing packets...\n"
#os.system("dumpcap -i eth0 -f \"udp port 53\" -w dns.cap"
os.spawnl(os.P_NOWAIT,'dumpcap -i eth0 -f \"udp port 53\" -w dns.cap')
print urllib.urlopen('http://www.google.com').read()
#resp = requests.get('http://httpbin.org')
#resp=requests.get('http://httpbin.org')
print "ok"
4

1 回答 1

1

os.spanwl被认为是旧的,应该替换为subprocess.Popen. 用这个替换os.spanwnl调用:

subprocess.Popen(['/usr/bin/dumpcap', '-i', 'eth0', '-f', 'udp port 53', 
                  '-w', '/tmp/dns.cap'])

最好在启动 dumpcap 后添加一些暂停(睡眠),以确保在您发出请求时建立捕获。

于 2012-12-23T13:44:53.040 回答