免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6453 | 回复: 15
打印 上一主题 下一主题

perl自动登录网页,一整夜没搞定,求帮助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-01 06:23 |只看该作者 |倒序浏览
我想实现自动登录以下网页的功能:http://bbs.ep-music.net/forum.php

#!/usr/bin/perl
use warnings;
use strict;

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;

my $url = 'http://bbs.ep-music.net/forum.php';
my $cookie_jar = HTTP::Cookies->new(
    file       => "./cookies.lwp",
    autosave   => 1,
);
my $ua = LWP::UserAgent->new;
my $cookies = $ua->cookie_jar($cookie_jar);
$ua->agent("MyApp/0.1 ");
my $res = $ua->post( $url, [
        'username'  => 'perltest',
        'password'  => 'perltest',

    ],
);
print "Post Error!\n" unless $res->is_success;
my $redirect_to = $res->header('location');
my $req         = HTTP::Request->new(GET=>$redirect_to);
$cookie_jar->add_cookie_header($req);
my $new_res     = $ua->request($req);

`curl 'http://bbs.ep-music.net/forum.php' > test.txt`;

理论上登陆后我curl出来的应该是有退出选项的界面,但是怎么搞都不行,帮我把上面的代码改成能用的吧,万谢啊

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
2 [报告]
发表于 2012-12-01 10:07 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use v5.010;
  4. use Mojo::UserAgent;

  5. my $ua = Mojo::UserAgent->new;

  6. my $tx = $ua->post_form('http://bbs.ep-music.net/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1' => { username => 'perltest', password => 'perltest' });
  7. say $ua->get('http://bbs.ep-music.net/forum.php')->res->body;
复制代码

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
3 [报告]
发表于 2012-12-01 12:53 |只看该作者
回复 1# gknhjqx
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. use HTTP::Request;
  5. use HTTP::Cookies;

  6. use LWP::UserAgent;

  7. my $url         = 'http://bbs.ep-music.net/member.php';

  8. my $cookie_jar  = HTTP::Cookies->new(
  9.         file        => "./cookies.lwp",
  10.         autosave    => 1,
  11.         );

  12. my $ua      = LWP::UserAgent->new;
  13. my $cookies = $ua->cookie_jar($cookie_jar);
  14. $ua->agent('Mozilla/9 [en] (Centos; Linux)');
  15. my $res     = $ua->post( $url,
  16.         [
  17.             username     => 'perltest',
  18.             password    => 'perltest',
  19.             fastloginfield   =>'username',
  20.         ],
  21.     );
  22. $res =$ua->get('http://bbs.ep-music.net/forum.php');
  23. print $res->content();
复制代码
你post入口找错了。用HttpWatch分析数据。

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
4 [报告]
发表于 2012-12-01 21:44 |只看该作者
回复 1# gknhjqx

#!/usr/bin/perl
use warnings;
use strict;

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;

my $url = 'http://bbs.ep-music.net/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1';
my $cookie_jar = HTTP::Cookies->new(
                    file       => "./cookies.lwp",
                        autosave   => 1,
                );  
my $ua = LWP::UserAgent->new;
my $cookies = $ua->cookie_jar($cookie_jar);
$ua->agent("MyApp/0.1 ");
my $res = $ua->post( $url, [
                        username  => 'perltest',
                                password  => 'perltest',

                                    ]   
                );  
print "Post Error!\n" unless $res->is_success;
my $res1 =$ua->get('http://bbs.ep-music.net/forum.php');
print $res1->decoded_content,"\n";

你的入口地址没写对,如楼上所说,拿httpwatch看一下。再者,后边不用重定向

   

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
5 [报告]
发表于 2012-12-01 21:50 |只看该作者
这样写简洁.回复 2# iakuf


   

论坛徽章:
0
6 [报告]
发表于 2012-12-03 13:19 |只看该作者
回复 2# iakuf

我就是看你的blog写的,我就想用原来的模块,能不能帮我改一下原来的代码,cookie那段不行
   

论坛徽章:
0
7 [报告]
发表于 2012-12-03 13:21 |只看该作者
回复 4# erpeng_1988

不跳转怎么保持登陆呢,你楼上的那个代码还是没有实现登陆
   

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
8 [报告]
发表于 2012-12-03 15:31 |只看该作者
本帖最后由 iakuf 于 2012-12-03 15:44 编辑

你为什么讲没有登陆,我的程序都能见到登陆后的信息了
  1. say $ua->get('http://bbs.ep-music.net/forum.php')->res->dom->find("div#um a")->pluck('text');
复制代码
用户名,积分之类都能取到了。


perltest



设置
消息
提醒
模块管理

退出
积分: 81
Guitar-Member


论坛徽章:
0
9 [报告]
发表于 2012-12-03 15:56 |只看该作者
回复 8# iakuf

我说3楼的代码还是没登陆

你那段代码我没用过,能不能帮我用原来的模块实现一下
   

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
10 [报告]
发表于 2012-12-03 17:10 |只看该作者
回复 9# gknhjqx

不能。。。。有更加简单的,为什么不使用更加简单的。。。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP