どっか見間違ってるのかな。optionsには--userと--passwordがあるけど、それを指定しても認証とおらないんだけど。WWW::Mechanizeのversionは1.60.
$ mech-dump --user=user --password=pass http://example.com/auth/page/ Error GETing http://example.com/auth/page/: Authorization Required at /usr/local/bin/mech-dump line 90
とか言われる。
とりあえずソース見てみた。91行目以降に認証の処理をしてるっぽいけど、手前の90行目でコケてる。
90 my $response = $mech->get( $uri ); 91 if (!$response->is_success and defined ($response->www_authenticate)) { 92 if (!defined $user or !defined $pass) { 93 die("Page requires username and password, but none specified.\n"); 94 } 95 $mech->credentials($user,$pass); 96 $response = $mech->get( $uri ); 97 $response->is_success or die "Can't fetch $uri with username and password\n", $response->status_line, "\n"; 98 }
んー、よくわかんないけど95行目のuser,passを入力する処理を90行目のgetの前に書いてみたらいけた。いいのかなこんなんで。
$ diff -u /usr/local/bin/mech-dump mech-dump.fix --- /usr/local/bin/mech-dump 2010-03-15 09:39:21.000000000 +0900 +++ mech-dump.fix 2010-03-15 11:42:39.551356864 +0900 @@ -87,6 +87,9 @@ $mech->agent_alias( $agent_alias ); } $mech->env_proxy(); +if ($user) { + $mech->credentials($user,$pass); +} my $response = $mech->get( $uri ); if (!$response->is_success and defined ($response->www_authenticate)) { if (!defined $user or !defined $pass) {