亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 11047 | 回復: 20
打印 上一主題 下一主題

perl小程序--登錄含驗證碼的站點 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-01-25 02:10 |只看該作者 |倒序瀏覽
本帖最后由 ykredrum 于 2013-01-25 02:10 編輯

很久沒有發(fā)過貼了,睡不著起來發(fā)一個,lwp是個好模塊,上網站自動完成點任務多方便的,不過很多操作都需要在你正確登錄網站的前提下才能進行,登錄一個沒有驗證碼的網站還挺容易的,如果登錄的時候要求你輸入驗證碼就比較麻煩,你可以改cookie,但是如果每次登錄賬號不一樣感覺比較麻煩,個人寫了個小程序,登錄的時候程序先自動將驗證碼圖片下載下來,等人工識別然后人工輸入,程序接受輸入后再繼續(xù)登錄。 雖然麻煩點,不過還是算一種方法吧。

程序概述:

  1.程序根據特定的網站寫的,所以大家就看看大概原理就是了,照搬到其他網站肯定不成功。

  2.大概原理,頁面得到驗證碼是通過一個特定的鏈接,登錄的時候直接通過這個鏈接得到驗證碼,然后加到賬戶信息里面post出去,登錄就成功了。

代碼如下:

  1. use strict;
  2. use warnings;
  3. use LWP;
  4. use LWP::ConnCache;


  5. # main procedure #
  6. my $ua = LWP::UserAgent->new( );
  7. # setup attribution #
  8. push @{ $ua->requests_redirectable }, 'POST'; # post之后能自動打開redirect頁面
  9. $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)');
  10. $ua->cookie_jar( {} );  #打開cookie功能
  11. $ua->timeout(15);
  12. $ua->conn_cache( LWP::ConnCache->new() ); # keep alive

  13. if( &login ){
  14.     print "登錄成功!\n";
  15. }else{
  16.     print "登錄失!\n";
  17. }


  18. sub login {
  19.     my $acc = shift || '這里填默認使用的賬號';
  20.     my $pw  = shift || '這里填默認使用的密碼';

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

  22.     if ($response->is_success) {

  23.         # 抓取驗證碼圖片 #
  24.         open my $check_code_image, "> verifycode.BMP"  #默認驗證圖片的位置在當前目錄
  25.                 or die "$!";

  26.         binmode($check_code_image);
  27.         print $check_code_image $response->content;
  28.         close $check_code_image; #關閉print對句柄的控制

  29.         { # 輸入驗證碼并登錄 #

  30.           print "> enter verifycode:";
  31.           chomp( my $verifycode = <> );
  32.           $verifycode=~ s/\s//g; #刪除空白

  33.           my $response = $ua->post(
  34.                                  'http://www.xckjpx.net/user/check.asp',
  35.                                  [username => $acc, password => $pw, xhccl => 'login', verifycode => $verifycode, Sub_sub =>''],
  36.                                   );

  37.           if ($response->is_success) {

  38.               return $response->content =~ /location='login.asp'/ ? 0 : 1;  # 根據是否重定向頁面到登錄界面來判斷登錄是否成功
  39.                                                                             # 登錄成功返回 1     登錄失敗返回 0
  40.           }
  41.           else {
  42.               print '> failed to post data for login:  ' . $response->status_line . "\n";
  43.           }
  44.         } #

  45.     }
  46.     else {
  47.          print '> failed to get verifycode:  ' . $response->status_line . "\n";
  48.     }

  49. }
復制代碼
最后:
程序里本來有個默認賬號和密碼,因為不是我自己的,不敢泄露別人隱私,大家就自己申請一個吧
login函數不填參數就使用默認賬號和密碼。

上面程序有正確賬號和密碼的話是能成功登錄的,發(fā)帖前測試過。

論壇徽章:
13
雙魚座
日期:2013-10-23 09:30:05數據庫技術版塊每日發(fā)帖之星
日期:2016-04-20 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-03-09 06:20:002015亞冠之塔什干火車頭
日期:2015-11-02 10:07:452015亞冠之德黑蘭石油
日期:2015-08-30 10:07:07數據庫技術版塊每日發(fā)帖之星
日期:2015-08-28 06:20:00數據庫技術版塊每日發(fā)帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龍
日期:2014-12-03 14:45:52酉雞
日期:2014-07-23 09:46:23亥豬
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
2 [報告]
發(fā)表于 2013-01-25 08:58 |只看該作者
我怎么覺得不靠譜呢,你得到驗證碼,然后再去請求時驗證碼已經變了:wink:

論壇徽章:
8
雙子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12處女座
日期:2013-09-23 11:43:14處女座
日期:2013-10-09 19:48:21獅子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13雙魚座
日期:2014-06-13 21:52:31
3 [報告]
發(fā)表于 2013-01-25 10:21 |只看該作者
想研究一下,收了

論壇徽章:
0
4 [報告]
發(fā)表于 2013-01-25 11:56 |只看該作者
本帖最后由 ykredrum 于 2013-01-25 11:57 編輯
bikong0411 發(fā)表于 2013-01-25 08:58
我怎么覺得不靠譜呢,你得到驗證碼,然后再去請求時驗證碼已經變了



你說的這個問題我考慮了的,程序里只get一次驗證碼的鏈接,就是說,驗證碼就沒有改變過

而且上面的小程序測試成功了我才帖出來的,呵呵。
   

論壇徽章:
1
獅子座
日期:2013-12-16 16:09:24
5 [報告]
發(fā)表于 2013-01-25 12:48 |只看該作者
我記得有個項目里驗證碼是用 xdg-open 打開的,處理的比較好

論壇徽章:
0
6 [報告]
發(fā)表于 2013-01-25 13:14 |只看該作者
本帖最后由 ykredrum 于 2013-01-25 13:52 編輯
ttcn_cu 發(fā)表于 2013-01-25 12:48
我記得有個項目里驗證碼是用 xdg-open 打開的,處理的比較好


謝謝,剛才去看了看, xdg-open 確實是個好東西,以前我不知道,又學習了,thx

不過Windows下 xdg-open 不能用.

論壇徽章:
0
7 [報告]
發(fā)表于 2013-01-25 15:36 |只看該作者
簡單驗證碼字母和數字加噪點等可以用Image::Magick識別
漢字和扭曲嚴重的就沒想到什么好辦法了

論壇徽章:
1
辰龍
日期:2014-05-15 19:37:15
8 [報告]
發(fā)表于 2013-01-25 16:42 |只看該作者
這個太復雜,使用 Mojo::UserAgent 可以做到只有這個 1/6 的代碼

論壇徽章:
0
9 [報告]
發(fā)表于 2013-01-26 23:39 |只看該作者
我去試試這個看看Image::Magick

論壇徽章:
0
10 [報告]
發(fā)表于 2013-02-02 19:20 |只看該作者
好的,發(fā)個帖子,知道很多沒有用過的模塊,謝謝大家
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP