在perl中通过WWW::Mechanize登录不了网站
试了好久,也换了好多个参数了,但总登录不了...
$mech->success 的返回结果是1,但$mech->content 中总是有“密码输入错误”这样的提示。可那用户名和密码肯定是正确的啊,打开浏览器能正常登录。
测试代码:
- Perl code
#!/usr/bin/perluse strict;use WWW::Mechanize;my $loginUrl = 'http://passport.115.com/?ac=login&tpl=pc';my $mech = WWW::Mechanize->new();$mech->agent_alias('Windows IE 6');$mech->get($loginUrl);$mech->submit_form( form_id => 'loginForm', fields => { 'login%5Baccount%5D' => 'okabc123', 'login%5Bpasswd%5D' => 'abc123ha', 'goto' => 'http://115.com', },);print "isSuccess: ".$mech->success."\n".$mech->content."\n\n";
agent换成下面这样的也同样不行:
- Perl code
use constant UA => 'Opera/9.80 (X11; Linux i686; U; en) Presto/2.6.30 Version/10.60';my $mech=WWW::Mechanize->new(agent=>UA);
把“login%5Baccount%5D”写成“login[account]”的情况下,$mech->success 的值为空.
请高手们指点指点啊,
谢谢!!
[解决办法]
仔细看清楚content。有些时候页面的内容里是有这些错误信息,但是由js控制的,不会真正显示给用户。所以你要先分辨清楚。
[解决办法]
做登录脚本的时候,最好先观察一下,正常登录的流程.请求的方式了,传送的参数,以及头部信息等等.