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 に答える