2012年3月24日土曜日

Digest認証エリアをcapybara-webkitでキャプチャする

Digest認証が設定しているサイトでスクリーンショットを撮りたい。
capybara-webkitでwebページのスクリーンショットを撮る」を見つけたのでこれを使うことにした。

ヘッダーを操作メソッドがあるので、Digest認証もなんとかなるかと思ったけどダメだった。
cnonceの生成にリクエストするuriが含まれるので、CSSや画像を取得する際に401 Not Authorizeになっちゃう。

GET /auth/area/index.html HTTP/1.1
-> 200 OK

GET /auth/area/style.css HTTP/1.1
-> 401 Unauthorized

GET /auth/area/header.jpg HTTP/1.1
-> 401 Unauthorized

ってな具合。リクエスト毎に変えなくちゃだめって事だな。

capybara-webkiのissuseで認証はどうするの?的な話があったけど、
ヘッダーの設定で対応できるでしょってことでクローズされてる。

capybara-webkitのrubyソースいじってもどうにもならなそうなので、QTWebKitを調べると、
authenticationRequiredというシグナルがあり認証が必要な場合をハンドリングできそう。
で、認証をハンドリングできたのでAuthorizeコマンドとして実装してみた。

ソースはこちら。cloneしてextconf.rbを実行すればOK.
https://github.com/beatspace9/capybara-webkit/tree/digest-auth
上記を

利用方法。
5行目はgitでcloneしたリポジトリを利用するようパスを書き換える必要ある。
22行目でユーザー名とパスワードの設定

0 件のコメント:

コメントを投稿