私はいくつかのサードパーティのWeb APIを使用するWebアプリを書いている、と私は広告ホック分析のための低レベルの要求と応答を追跡したいをログに記録するurllib2のを得るのですか。だから私は、HTTP経由で転送されたすべてのバイトを記録するPythonのurllib2を取得するレシピを探しています。多分サブクラス化されたハンドラ?は、どのように私はすべての転送されたバイト
19
A
答えて
12
まあ、私はどのようにセットアップ内蔵のライブラリーのメカニズムをデバッグすることが分かってきました:
import logging, urllib2, sys
hh = urllib2.HTTPHandler()
hsh = urllib2.HTTPSHandler()
hh.set_http_debuglevel(1)
hsh.set_http_debuglevel(1)
opener = urllib2.build_opener(hh, hsh)
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler(sys.stdout))
logger.setLevel(logging.NOTSET)
しかし、私はまだ転送されたすべての情報をダンプする方法を探しています。
2
これはかなり難しいようです。入力または出力データをインターセプトするためのurllib2、urllib、またはhttplib(これが構築されている)にフックはありません。
私には、外部ツール(多くの人がそういったものを使用している)を使用する方法以外に、自分自身で新しいソケットにsocket.socketのサブクラスを書くことがありますモジュール(例えば、 "capture_socket")を作成し、 "import capture_socket; import httplib; httplib.socket = capture_socket"を使用してhttplibに挿入します。必要なすべての参照(httplibで使われている "socket.foo"という形式のもの)を自分のモジュールにコピーしなければならないが、サブクラスでrecv()やsendallあなたがデータで好きなもの。あなたはSSLを使用していた場合
合併症はおそらく生じるであろう、と私はあなたにも同様にあなた自身のsocket._fileobjectを作る必要があるだろうならば、これは十分であるかかどうかはわかりません。しかし、それは可能ですが、httplib.pyのソースを熟読し、標準ライブラリのsocket.pyはもっと詳しく説明します。
関連する問題
- 1. バイトをクライアントに転送するにはどうすればよいですか?
- 2. アスキー文字は8バイト、変換されたワードは32バイトにどのように格納されますか
- 3. ドメインに送信されたすべてのメールを転送する(Google App Engine)
- 4. bluetoothで転送されたバイトをマージする
- 5. iOSアプリケーションでmallocされたすべてのバイトの実際のバイト数を取得するにはどうすればよいですか?
- 6. 私はどのようにPHPで値を転送できますか?
- 7. Windowsプラットフォームで送受信されたバイト数を取得するにはどうすればよいですか?
- 8. rsyncによって転送されたファイルの注文
- 9. は、どのように私はすべてのリスニングの要素
- 10. 転送プロトコルはどのように機能しますか?
- 11. は、どのように私はすべてのフィールドと
- 12. Bootstrapで生成されたエラーをErrorControllerに転送するにはどうすればよいですか?
- 13. 私は迂回するにはどうすればよいのウィンドウの「コピー」/ファイル転送ウィンドウ
- 14. どのように私はそれをグーグル、私はWPF で3Dビューでボタンを回転させたいC#コード
- 15. 自動生成されたメールを転送するにはどうすればよいですか?
- 16. バイナリファイルまたは任意のファイルをリモートサーバに転送するにはどうすればよいですか? - Ruby
- 17. FTPアップロードの問題 - 0バイトの転送
- 18. HTTPチャンクされた転送エンコーディング:どのように "\ r \ n"を送信しますか?
- 19. 変換INT []バイトに:それは[]、バイトだったとしてどのようにint型[]を見て?
- 20. シリアライズされたバイトのフィールドはどのように区切られていますか?
- 21. Pythonのは、私のようなバイトを取得していますバイトのB」 '
- 22. は、どのように私はVB.NETを使用してフォーマットされた電子メールを送信することができますどのようにVB.NET
- 23. スマートフォンでプログラムを転送するにはどうすればよいですか?
- 24. すべてのクラスはどのように継承されていますか?
- 25. 複数のバイト値はどのように変換されますか?
- 26. ストリーミングを使用する前に、WCFで転送されたバイト数はいくつですか?
- 27. どのようにすべてのデバッグエッジケースは、カスタマイズされたROM(CM7のような)で発生します
- 28. wget出力をファイルまたはDBに転送するにはどうすればよいですか?
- 29. カスタムドメインサポートメールをGmailまたはOutlookに転送するにはどうすればよいですか?
- 30. ウェブブラウザはパスワードを元のサーバーにどのように転送しますか?
+1 2年前には非常に素敵なpythonの質問がアップノートなしで尋ねられました。それは本当に奇妙です。私は自分自身で答えを探しています。私の場合、私はHTTPヘッダーだけに関心があります。 –