WWW::MechanizeでPerlを使用して Web サイトに自動的にログインしようとしています。
私がすることは:
$bot = WWW::Mechanize->new();
$bot->cookie_jar(
HTTP::Cookies->new(
file => "cookies.txt",
autosave => 1,
ignore_discard => 1,
)
);
$response = $bot->get( 'http://blah.foo/login' );
$bot->form_number(1);
$bot->field( usern => 'user' );
$bot->field( pass => 'pass' );
$response =$bot->click();
print $response->content();
$response = $bot->get( 'http://blah.foo' );
print $response->content();
ログインは機能しますが、ページをロードすると、接続されていないと表示されます。
Cookie をファイルに保存していることがわかります。ログイン部分なしでスクリプトを再起動すると、接続されていると表示されます...
誰もこの奇妙な振る舞いを理解していますか?
編集: 実際、特定のプラットフォームの一部の Web ブラウザーでも問題が発生することに気付きました。ページには「ログインしていません」と表示されます。ただし、ログインするにはページをリロードするだけで十分です。
スクリプトでは、ダブル get を実行しようとしましたが、うまくいきません。唯一の方法は、2 回起動することです。
最後のリクエストを2回行ったときにcurlで機能しました。