2011-12-02 9 views
2

でトラフィックをキャプチャします。返されるJSON文字列にはリクエストヘッダーが含まれていますが、投稿メッセージの本文(params)は決してキャプチャされません。 postRequestがありHERESに私のコードは私が作っていたHTTP POSTリクエストにセレンオブジェクト上のネットワークトラフィックをキャプチャしていセレン

host = "localhost" 
port = "4444" 
browser = r"*pifirefox" 
sel = selenium(host, port, browser, url) 
. 
. 
.....Submit action 
postRequest = sel.captureNetworkTraffic('json') 

[{ 
    "statusCode":200, 
    "method":"POST", 
    "url":"http://.................", 
    "bytes":97567, 
    "start":"2011-12-02T17:42:04.719-0500", 
    "end":"2011-12-02T17:42:05.044-0500", 
    "timeInMillis":325, 
    "requestHeaders":[{ 
     "name":"Host", 
     "value":"......................." 
    },{ 
     "name":"User-Agent", 
     "value":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1" 
    },{ 
     "name":"Accept", 
     "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
    },{ 
     "name":"Accept-Language", 
     "value":"en-us,en;q=0.5" 
    },{ 
     "name":"Accept-Encoding", 
     "value":"gzip, deflate" 
    },{ 
     "name":"Accept-Charset", 
     "value":"ISO-8859-1,utf-8;q=0.7,*;q=0.7" 
    },{ 
     "name":"Proxy-Connection", 
     "value":"keep-alive" 
    },{ 
     "name":"Referer", 
     "value":"...................." 
    },{ 
     "name":"Cookie", 
     "value":"...................." 
    },{ 
     "name":"X-Requested-With", 
     "value":"XMLHttpRequest" 
    },{ 
     "name":"X-MicrosoftAjax", 
     "value":"Delta=true" 
    },{ 
     "name":"Cache-Control", 
     "value":"no-cache, no-cache" 
    },{ 
     "name":"Content-Type", 
     "value":"application/x-www-form-urlencoded; charset=utf-8" 
    },{ 
     "name":"Content-Length", 
     "value":"10734" 
    },{ 
     "name":"Pragma", 
     "value":"no-cache" 
    }], 
    "responseHeaders":[{ 
     "name":"Date", 
     "value":"Fri, 02 Dec 2011 22:42:05 GMT" 
    },{ 
     "name":"Server", 
     "value":"Microsoft-IIS/6.0" 
    },{ 
     "name":"Cache-Control", 
     "value":"private" 
    },{ 
     "name":"Content-Type", 
     "value":"text/plain; charset=utf-8" 
    },{ 
     "name":"Content-Length", 
     "value":"97567" 
    },{ 
     "name":"X-Powered-By", 
     "value":"ASP.NET" 
    },{ 
     "name":"Via", 
     "value":"1.1 (jetty)" 
    },{ 
     "name":"X-AspNet-Version", 
     "value":"4.0.30319" 
    }] 
}] 

私はPOSTリクエストを模倣しようとしているが、体(のparams)、その不完全なしています。どんな提案も大歓迎です。

乾杯、

答えて

1

あなたはセレンを要求または応答の本文を取得することはできません - それは、ヘッダーだけをキャプチャします。 Windowsで実行している場合はFiddler2を試してください。

+0

おかげで、Fiddler2をチェックアウトします。 – konkani

+0

フィドラーは、クライアントマシン上で実行され、私はあなたのUser-Agent文字列は、あなたのクライアントがWindows上にあるので、あなたはOKであるべきと言う参照してください。 –

0

注:私はあなたが達成しようと、なぜあなたはセレンを選んだのされているかについてより多くの情報が必要な場合があります。私は考えることができる

唯一のことは、あなたのpythonプログラムにtsharkまたは類似した何かの出力をパイプされます。私はpcapリーダーもいると思いますが、私はこれらの経験はありません。私は簡単にpythonネットワーク監視APIを探しましたが、そのような運がありませんでした。

+0

おかげで、午前AJAXとJavaScriptで解体サイトはセレン、したがって、要素を可能にした。また、深く自分のページの1つに接続するための標的部位にPOSTリクエストを模倣する必要があります。これは、セレンを使用してクロールされたため、順位をキャプチャtの要求をターゲットページに送信し、httplibを使用して私のサイトから同じ要求を作成します。たとえば、検索結果からkayak.comを選択すると、航空会社のサイトのチェックアウトページにジャンプします。同じことをやろうとすると、これを行うための提案はありますか? – konkani

+0

録音した投稿リクエストを手作業で、またはプログラムでhttplibに翻訳していますか? –

+0

プログラマチックに、クロールしてからSeleniumを使用してキャプチャしようとしましたが、より良い方法がわかっていれば。 – konkani

1

セレンはあなたのリクエストヘッダを与えたとき、彼らはレスポンスボディをフェッチPyCurlか、urllibは要求を作るための情報を持っています。

これは、次の正規表現を実行してURLを抽出してから、 curlを使用してそれらを取得するのと同じくらい簡単でした。回答の一部がjson.loadsが:(爆破させるJSONを埋め込まれていたので、

urls = re.finditer('\n "url":"(.*)",', sel.captureNetworkTraffic('json')) 

正規表現を使用した。パラメータはURLではなく、すべての応答ヘッダーである場合、いくつかの追加の努力があります。

サイトは、UNIX上でホストされていることでしょうが