Python を使用して、ダイジェスト認証を使用するカスタム http サーバーに接続するクライアントを作成しようとしています。最初のリクエストを問題なく接続してプルできます。TCPDUMP を使用すると (私は MAC OS X を使用しています。私は MAC と Python の初心者です)、RFC2617 に精通している場合に予想されるように、最初の要求が実際には 2 つの http 要求であることがわかります。最初の結果は 401 UNAUTHORIZED です。サーバーから送り返されたヘッダー情報は、200 OK 応答とペイロードを生成するいくつかのカスタム Authorization ヘッダー値を持つ 2 番目の要求のヘッダーを生成するために正しく使用されます。
すべてが素晴らしいです。urllib2 のおかげで、私の HTTPDigestAuthHandler オープナーは機能しています。
同じプログラムで、同じサーバーから 2 番目の別のページを要求しようとしました。RFC によると、TCPDUMP は今回は 1 つの要求のみを表示し、ほぼすべて同じ認証ヘッダー情報を使用すると予想されます (nc はインクリメントする必要があります)。
代わりに、ゼロから始めて、最初に 401 を取得し、200 に必要な情報を再生成します。
urllib2 を使用して、ダイジェスト認証を使用した後続のリクエストで既知の認証ヘッダー値をリサイクルし、1 つのリクエストのみを実行することは可能ですか?
[意味がわかるまで数回読み直してください。これ以上分かりやすくする方法がわかりません]
Google は驚くほど成果を上げていないので、そうではないと思います。私は urllib2.py のコードとその非常に厄介なコード (「これはすばらしい努力ではありません」などのコメント) を見たので、これがバグであったとしてもショックを受けません。接続ヘッダーが閉じていることに気付きました。キープアライブに設定しても、上書きされます。それは私を keepalive.py に導きましたが、それも私にとってはうまくいきませんでした。
Pycurlも機能しません。
インタラクション全体を手作業でコーディングできますが、可能な場合は既存のライブラリに便乗したいと考えています。
要約すると、urllib2 とダイジェスト認証を使用して、同じサーバーから 2 つのページを取得し、3 つの http 要求のみを実行することは可能ですか (最初のページに 2 つ、2 つ目のページに 1 つ)。
以前にこれを試したことがあり、それが不可能であることをすでに知っている場合は、お知らせください。別の方法がある場合は、私はすべての耳です。
前もって感謝します。