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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 3627 | 回復(fù): 9
打印 上一主題 下一主題

[Coro+Anyevent]測(cè)試HTTP代理Demo [復(fù)制鏈接]

論壇徽章:
3
未羊
日期:2013-11-18 15:17:06酉雞
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-08-18 00:55 |只看該作者 |倒序?yàn)g覽
之前常聽PY說Coro+Anyevent會(huì)很牛X。。。然后晚上剛好被妹子放了鴿子,
心情略微郁悶了下,寫了個(gè)DEMO讓自己心情好起來。。


回頭研究下怎么優(yōu)化,改天把爬蟲的DEMO也弄出來。
這個(gè)東西其實(shí)還有很多擴(kuò)展的空間,例如BS算法加入、多進(jìn)程等,大家都懂的。
隨意擴(kuò)展。。。
  1. #!perl
  2. use utf8;
  3. use AnyEvent;
  4. use AnyEvent::HTTP;
  5. use Data::Dumper;
  6. use Coro;

  7. my $calculate = new Coro::Channel;
  8. my $result = new Coro::Channel;


  9. # all proxy results
  10. our @proxy_results;

  11. # proxy page list
  12. my $url="http://proxy.com.ru/";

  13. my $cv = AnyEvent->condvar;
  14. eval {
  15.         # proxy page list
  16.         my $url="http://proxy.com.ru/";

  17.         $cv->begin;
  18.         http_get(
  19.                 $url,
  20.                 sub {
  21.                         my ( $content, $header, $hdr ) = @_;
  22.                         if ($content=~m/<a href='list_([0-9]{1,3}).html'>\[<b>(.*)<\/b>\]<\/a>/){
  23.                                 $tmp_result=$2;
  24.                                 @tmp_pages=split(/\[<b>/,$tmp_result);
  25.                                 # count page
  26.                                 $all_pages=$tmp_pages[-1];
  27.                                 ru_proxy($url,$all_pages,$content);
  28.                         }       
  29.                         $cv->end;
  30.                 }
  31.         );
  32. };
  33. if ($@) {
  34.         print "Error!\n";
  35. }
  36. $cv->recv();

  37. # ip picking up
  38. sub ru_proxy{
  39.         my ($url,$pages,$content) = @_;
  40.         foreach my $p (2..$pages){
  41.                 $cv->begin;
  42.                 http_get(
  43.                         $url."/list_".$p.".html",
  44.                         sub {
  45.                                 my ( $content, $header, $hdr ) = @_;
  46.                                 foreach my $line (split(/\n/,$content)){
  47.                                         if ( $line =~m/<td>([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})<\/td><td>([0-9]{1,5})<\/td>/){
  48.                                                 push(@proxy_results,"http://".$1.":".$2."/");
  49.                                         }
  50.                                 }
  51.                                 $cv->end;
  52.                         }
  53.                 );
  54.         }
  55.         foreach my $line (split(/\n/,$content)){
  56.                 if ( $line =~m/<td>([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})<\/td><td>([0-9]{1,5})<\/td>/){
  57.                         push(@proxy_results,"http://".$1.":".$2."/");
  58.                 }
  59.         }
  60. }

  61. # useing coro module
  62. async {
  63.         while (){
  64.                 my $task = $calculate->get;
  65.                 # testing proxy
  66.                 AnyEvent::HTTP::set_proxy $task;
  67.                 http_get(
  68.                         "http://www.72891.cn/forum.php",
  69.                         sub {
  70.                                 my ($content,$header)=@_;
  71.                                 if ( $content =~m/<title>(.*)<\/title>/){
  72.                                         $result->put("proxy:".$task."title:".$1."\n");
  73.                                 }
  74.                         }
  75.                 );
  76.         }
  77. };


  78. foreach my $t (@proxy_results){
  79.         $calculate->put($t);

  80.         print $result->get."\n";
  81. }
復(fù)制代碼

論壇徽章:
3
未羊
日期:2013-11-18 15:17:06酉雞
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
2 [報(bào)告]
發(fā)表于 2014-08-18 11:16 |只看該作者
這些看了不說話的會(huì)懷孕。

論壇徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16賽季CBA聯(lián)賽之新疆
日期:2015-12-19 19:05:48IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:3315-16賽季CBA聯(lián)賽之上海
日期:2016-04-15 19:51:31程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-04-17 06:23:29程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-04-23 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-05-26 06:20:00每日論壇發(fā)貼之星
日期:2016-05-26 06:20:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-02-16 23:59:4715-16賽季CBA聯(lián)賽之天津
日期:2019-01-11 01:11:44
3 [報(bào)告]
發(fā)表于 2014-08-18 11:52 |只看該作者
This is perl, v5.8.8 for win, 我的版本太老了,anyevent沒法裝上

論壇徽章:
3
未羊
日期:2013-11-18 15:17:06酉雞
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
4 [報(bào)告]
發(fā)表于 2014-08-18 12:26 |只看該作者
回復(fù) 3# shijiang1130


    好吧,沒有注意到老人的感受。。我有罪。。。。

    只是不太理解為毛PY不出來指點(diǎn)了。。。。。

    [@]py[/@]

論壇徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:002015亞冠之首爾
日期:2015-11-04 22:25:43IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27獅子座
日期:2014-05-12 11:00:00辰龍
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-27 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2016-06-07 14:10:01
5 [報(bào)告]
發(fā)表于 2014-08-18 13:59 |只看該作者
你要寫個(gè)簡(jiǎn)單的程序注解,背景,目的,
分段描述或者注釋
這么大段程序看起來很費(fèi)勁的。

論壇徽章:
3
未羊
日期:2013-11-18 15:17:06酉雞
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
6 [報(bào)告]
發(fā)表于 2014-08-18 22:28 |只看該作者
回復(fù) 5# laputa73


    # 號(hào)開頭那些就是注釋!沒有任何目的,純屬娛樂。。。背景就是我不懂,然后現(xiàn)在懂了

論壇徽章:
3
未羊
日期:2013-11-18 15:17:06酉雞
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
7 [報(bào)告]
發(fā)表于 2014-08-20 21:22 |只看該作者
現(xiàn)在在改寫程序,有些地方理解還是不夠深入,需要去接著看看模塊的說明。
  1. #!/usr/bin/perl
  2. use Coro;
  3. use AnyEvent::HTTP;
  4. use Data::Dumper;
  5. use encoding utf8;

  6. our $timeout=5;                # HTTP GET or POST time out set.

  7. our $proxy_tmp=new Coro::Channel;                # proxy tasks work.
  8. my @proxy_results;

  9. our $attack_task=new Coro::Channel;                # testing task work.
  10. our $testing_resuls=new Coro::Channel;        # testing task results

  11. # proxy work
  12. async {
  13.         eval {
  14.                 while () {
  15.                         # proxy url push in queue if proxy is alive.
  16.                         my $task=$proxy_tmp->get;
  17.                         AnyEvent::HTTP::set_proxy $task;
  18.                         http_get (
  19.                                 "http://www.72891.cn/forum.php",
  20.                                 timeout => $timeout,
  21.                                 sub {
  22.                                         my ($content,$header)=@_;
  23.                                         if ($content =~/ChinaUnix/){
  24.                                                 push(@proxy_results,$task);
  25.                                         }
  26.                                 }
  27.                         );

  28.                 }
  29.         };
  30.         if ( $@ ) {
  31.                 print "[*] proxy testing is Error!\n";
  32.         }
  33. };

  34. # testing alive work , if task is alive , Fuck up.
  35. async {
  36.         eval {
  37.                 while () {
  38.                         my $task = $attack_task->get;        # pick up for task
  39.                         if ( $task->{'proxy'} ==1 ) {
  40.                                 print "daili\n";
  41.                                 my $proxy = pop(@proxy_results);        # pick up for proxy
  42.                                 print "Start\n";
  43.                                 # set proxy
  44.                                 AnyEvent::HTTP::set_proxy $proxy;
  45.                                 # testing url
  46.                                 http_get(
  47.                                         $task->{'url'},
  48.                                         timeout => $timeout,
  49.                                         sub {
  50.                                                 my ( $content , $header )= @_;
  51.                                                 if ($header->{Status}==200){
  52.                                                         $item=200;
  53.                                                 }elsif ($header->{Status}==403){
  54.                                                         $item=403;
  55.                                                 }else{
  56.                                                         $item=$header->{Status};
  57.                                                 }
  58.                                         }
  59.                                 );
  60.                                 print "testing by proxy: ".$item."\n";
  61.                         }else{
  62.                                 print "testing by not proxy: ".$task->{'url'}."\n";
  63.                         }
  64.                 }
  65.         };
  66.         if ( $@ ) {
  67.                 print  Dumper \$@;
  68.         }
  69. };

  70. my %aa;
  71. $aa{'url'}="http://www.baidu.com";
  72. $aa{'proxy'}=1;
  73. # print Dumper %aa;
  74. $attack_task->put(\%aa);
  75. print "aLL;";

  76. cede;
復(fù)制代碼

論壇徽章:
3
未羊
日期:2013-11-18 15:17:06酉雞
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
8 [報(bào)告]
發(fā)表于 2014-08-20 22:52 |只看該作者
想把爬蟲改出來,貌似有難度。。先MARK下,改天繼續(xù)改。。先陪妹子先。。
  1. #!/usr/bin/perl

  2. ########################
  3. #       
  4. #     task:  Spider
  5. #
  6. #
  7. ########################
  8. use URI::URL;
  9. use Data::Dumper;
  10. use Bloom::Filter;
  11. use Coro;
  12. use AnyEvent::HTTP;

  13. my @coro_list;
  14. my $base_url=$ARGV[0] || "http://blog.linuxeye.com/";
  15. my $calculate = new Coro::Channel;
  16. my $sem=new Coro::Semaphore 100;
  17. my $filter = Bloom::Filter->new(capacity => 5000000, error_rate => 0.001);
  18. my $host = URI::URL->new($base_url)->host;

  19. $calculate->put($base_url);
  20. $filter->add($base_url);


  21. while(1)
  22. {
  23.         foreach(@coro_list){
  24.                 $_->join;
  25.         }

  26.         my $item=$calculate->size;
  27.         if ($item==0){
  28.                 if ($sem->count==100){
  29.                         print "[*] Spider Finish!\n";
  30.                         last;
  31.                 }else{
  32.                         sleep 1;
  33.                         next;
  34.                 }
  35.         }

  36.         while($sem->down)
  37.         {
  38.                 push @coro_list,async {
  39.                         $url=$calculate->get;
  40.                         http_get $url, cb => Coro::rouse_cb;
  41.                         my @res = Coro::rouse_wait;
  42.                         print Dumper \@res;
  43.                 };
  44.         }


  45. }

  46. foreach(@coro_list){
  47.         $_->join;
  48. }
復(fù)制代碼

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
9 [報(bào)告]
發(fā)表于 2014-08-21 12:46 |只看該作者
本帖最后由 flw 于 2014-08-21 12:47 編輯
墨跡哥 發(fā)表于 2014-08-18 12:26
只是不太理解為毛PY不出來指點(diǎn)了。。。。。


我來告訴你為什么。
py
我早就看見他這帖子了,為了最大程度的幫助他,我就是不出聲

py
老問問題是非常不好的事,對(duì)自己很不好。必須得有能力自己弄明白了,沒有,就慢慢長(zhǎng)上這個(gè)能力

論壇徽章:
3
未羊
日期:2013-11-18 15:17:06酉雞
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
10 [報(bào)告]
發(fā)表于 2014-08-21 22:01 |只看該作者
回復(fù) 9# flw


    你們太壞了。。。幸虧我折騰出來了。。。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP