httplib: 2007年7月アーカイブ

urllib2, cookielibを使用し、某管理画面にログインするが
セッションが保持できず、格闘すること数日。。。
苦戦した末、やっと行き着いた答えは
ヘッダが足りなかった事。。。。

keep-aliveという、セッションを保持させる感じの
ブラウザの機能らしいのだが、urllib2には現状では搭載されておらず
Connection: keep-alive
というヘッダは吐き出さない。

んで、付記するように
add_headerやaddheadersなど試みるが、
これはUAしか変更できないのか効果なし。

結局httplibを使用して、無理やりヘッダを作ってあげるしか思いつかなかった。
目的のページへは、ヘッダを吐き出すだけで、簡単にログインに成功した。

Keep-Aliveを保持するには、HTTPConnectionをCloseせずに
そのまま次のリクエストを送信するだけでいい。
ただし、リクエストした後には、
必ずread()を実行しなければエラーを吐く。

まぁ、普通ではあまりない仕様だと思うが
cookielibが、うまく挙動しない場合は
ブラウザが吐き出すリクエストヘッダと同じように
変更してみるのも良いだろう。

以下が、そのスクリプト。

このアーカイブについて

このページには、2007年7月以降に書かれたブログ記事のうちhttplibカテゴリに属しているものが含まれています。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。