gpt4 book ai didi

perl - WWW::Mechanize Perl 登录仅在重新启动后有效

转载 作者:行者123 更新时间:2023-12-02 02:34:12 24 4
gpt4 key购买 nike

我正在尝试使用 PerlWWW::Mechanize 在网站中自动登录

我做的是:

$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 存储在一个文件中。现在,如果我在没有登录部分的情况下重新启动脚本,它会说我已连接...

有人理解这种奇怪的行为吗?

编辑:事实上,我注意到该问题也发生在特定平台上的某些网络浏览器。该页面显示“未登录”。但是,重新加载要登录的页面就足够了。

在脚本中,我尝试进行双重获取,但效果并不理想。唯一的方法是启动它两次。

当我两次执行最后一个请求时,它与 curl 一起工作。

最佳答案

我见过的一些网站没有在每个页面上正确设置或处理它们的 session cookie,因此如果您以“意外”顺序访问它们的页面,它们就会失败。例如,登录页面或登录处理程序页面或某些弹出内容页面可能希望看到已由站点的普通页面设置的 session cookie。

这听起来像你的问题,因为当你获取页面时已经设置了 cookie 时它第二次起作用。

我通过在进入实际登录部分之前获取一些“正常”页面来模拟我的脚本中更典型的浏览器用户 session 事件来解决此类问题:

$www->get('http://www.example.com');         # Homepage
$www->get('http://www.example.com/account'); # Authenticated section front page
# Now everything is set up, proceed with account login...

关于perl - WWW::Mechanize Perl 登录仅在重新启动后有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2529025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com