2011-12-19 11 views
5

私は、Pythonのhttplib2 HTTPクライアントまたはAPIに存在するバグを分離しようとしています。 (最初の推測はAPIです。)httplib2を使用してRESTful APIにデータをPOSTしている間、私は401レスポンスステータス(許可なし)をAPIに保存しています。Python HTTPクライアントのネットワーク通信を調べるにはどうすればよいですか?

クライアントへのHTTP要求と応答、つまりネットワーク上に置かれた文字列を確認したいと思います。 httplib2コードは、その内部から値を簡単に取り込むのにはあまりにも関わっているようで、バグを逃す可能性があります。

クライアントとのネットワーク通信をすばやく見ることができます。クライアントのローカルネットワークソケットとの通信を監視するためのツールがありますか?

+0

[Wireshark](http://www.wireshark.org/) – JBernardo

+0

['httplib2.debuglevel'](http://bitworking.org/projects/httplib2/doc/html/libhttplib2.html#httplib2 .debuglevel)何も役に立たない? –

+0

それを見てはいけません。 – chernevik

答えて

4

私はすべてのネットワークデバッグにhttp://www.charlesproxy.comを使用します。

+1

使い方を理解するのに少し時間がかかりましたが、これは私が探していたことでした。自分自身のようなNoobs:curl/pythonでトラフィックをキャプチャするには、チャールズ内でターゲットホスト用にSSLプロキシを有効にする必要があります(異なるクライアント向けに異なる方法かもしれません)。これはドキュメントで言及されている8080ではなく、ポート8888にデフォルト設定されているようです。 – chernevik

+0

あなたは、使用しているライブラリのソースコードを変更せずに、PythonリクエストをCharlesプロキシ経由でどのようにルーティングしますか? – Anentropic

+0

私の悪い...あなたは具体的には、チャールズSSLの設定では、https要求をキャプチャするプロキシにするドメインを追加する必要があります、それは透過的にPythonの作品 – Anentropic

1

http://www.wireshark.org/を使用すると、ローカルソケットも監視できます。 私はルートを追加するトリック・ウィットを使用してWindows上でもローカル・ループバックを監視することができました。

http://wiki.wireshark.org/CaptureSetup/Loopbackチェックその他の代替

それとも、ただ1つのポート上のクライアント側で聞く生のソケットサーバを書いて、他のポートとその逆にサーバーにデータを送信し、すべてのデータをプリントアウトすることができます。それは12行以上のコードを取るべきではありません。

+0

素晴らしいツールですが、SSLを介してクライアント/サーバーのダイアログを見るためのパスを見つけることができませんでした – chernevik

関連する問題