免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ykredrum
打印 上一主题 下一主题

perl小程序--登录含验证码的站点 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-02-05 14:41 |只看该作者
谢谢,试试再说!

论坛徽章:
0
12 [报告]
发表于 2013-02-06 22:16 |只看该作者
看看,正需要这方面的东东呢

论坛徽章:
0
13 [报告]
发表于 2013-02-18 14:50 |只看该作者
use strict;

use warnings;

use LWP;

use LWP::ConnCache;



# main procedure #

my $ua = LWP::UserAgent->new( );

# setup attribution #

push @{ $ua->requests_redirectable }, 'POST'; # post之后能自动打开redirect页面

$ua->agent('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; AskTbFXTV5/5.11.3.15590)');

$ua->cookie_jar( {} );  #打开cookie功能

$ua->timeout(15);

$ua->conn_cache( LWP::ConnCache->new() ); # keep alive


if( &login ){

    print "登录成功!\n";

}else{

    print "登录失败!\n";

}



sub login {

    my $acc = shift || '这里填默认使用的账号';

    my $pw  = shift || '这里填默认使用的密码';
    my $verifycode;


    my $response = $ua->get('http://www.xckjpx.net/user/login_inc/checkcode/checkcode.asp');


    if ($response->is_success) {


        # 抓取验证码图片 #

        open my $check_code_image, "> verifycode.BMP"  #默认验证图片的位置在当前目录

                or die "$!";


        binmode($check_code_image);

        print $check_code_image $response->content;

        close $check_code_image; #关闭print对句柄的控制


        { # 输入验证码并登录 #

        my $pid = fork();
        if ($pid) {
        # parent
        
          print "> enter verifycode:";

          chomp( $verifycode = <> );

          $verifycode=~ s/\s//g; #删除空白

        } elsif ($pid == 0) {
                # child
                sleep 10;
                `mspaint verifycode.BMP`;
                exit 0;
        } else {
                die "couldnt fork: $!\n";
        }

        waitpid($pid,0);

          my $response = $ua->post(

                                 'http://www.xckjpx.net/user/check.asp',

                                 [username => $acc, password => $pw, xhccl => 'login', verifycode => $verifycode, Sub_sub =>''],

                                  );


          if ($response->is_success) {


              return $response->content =~ /location='login.asp'/ ? 0 : 1;  # 根据是否重定向页面到登录界面来判断登录是否成功

                                                                            # 登录成功返回 1     登录失败返回 0

          }

          else {

              print '> failed to post data for login:  ' . $response->status_line . "\n";

          }

        } #


    }

    else {

         print '> failed to get verifycode:  ' . $response->status_line . "\n";

    }


}

加个自动打开图片的功能,免得还要自己找图片

论坛徽章:
0
14 [报告]
发表于 2013-02-18 16:34 |只看该作者
    很好很强大

论坛徽章:
0
15 [报告]
发表于 2013-02-19 16:55 |只看该作者
还以为有验证码识别呢,原来是手工输入呢

论坛徽章:
0
16 [报告]
发表于 2014-01-08 15:54 |只看该作者
感觉这个功能不错,先收了

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
17 [报告]
发表于 2014-01-08 16:48 |只看该作者
关键的问题是如何识别验证码,其他的都好说。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
18 [报告]
发表于 2014-01-08 16:49 |只看该作者
要机器识别的,不能是人去识别。

论坛徽章:
0
19 [报告]
发表于 2014-01-17 23:26 |只看该作者
回复 1# ykredrum
程序逻辑有点小错误:
---------- perl ----------
Use of uninitialized value $verifycode in chomp at LWP1.pl line 75.
Use of uninitialized value $verifycode in substitution (s///) at LWP1.pl line 77.
> enter verifycode:登录成功!

在没有输入验证码的情况下,也显示了“登录成功”!
由于刚学习你的代码,不太懂,所以不知怎么改!
大神,解决一下!


   

论坛徽章:
0
20 [报告]
发表于 2014-02-05 22:24 |只看该作者
回复 19# jzp520520
这小段程序只是提供个思路,这个不能通用的,具体网站要具体分析。


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP