我正在尝试发送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"
答案 0 :(得分:1)
os.spanwl
被视为旧版,应替换为subprocess.Popen
。将os.spanwnl
来电替换为:
subprocess.Popen(['/usr/bin/dumpcap', '-i', 'eth0', '-f', 'udp port 53',
'-w', '/tmp/dns.cap'])
最好在启动dumpcap后添加一些暂停(睡眠),以确保在发出请求时建立捕获。