用perl获取可用的代理服务器地址

用perl获取可用的代理服务器地址

对于网速慢,被墙的朋友,你们有福了,我现在把我经常获取可以的代理服务器地址的代码发出来

 

用perl获取可用的代理服务器地址 

 


  1. ##########################################  
  2.  
  3. #获取有效http代理服务器列表程序  
  4.  
  5. #作者:yifangyou  
  6.  
  7. #创建时间:2011-03-27 17:14:00  
  8.  
  9. #本程序实现  
  10.  
  11. #1.从代理网站获取代理服务器列表  
  12.  
  13. #2.逐个检测代理服务器是否可用  
  14.  
  15. ##########################################  
  16.  
  17. package yifangyou;  
  18. use LWP::Simple;  
  19. use LWP::UserAgent;  
  20. use strict;   
  21. use warnings;  
  22. use LWP::Simple qw( $ua get );  
  23. #代理服务器ip和端口存放的地方  
  24.  
  25. my @proxys=();  
  26. #已经检测完的代理服务器ip和端口存放的地方  
  27.  
  28. my @checkedProxys=();  
  29. #已经检测完的代理服务器ip和端口存放的地方,我用的百度首页的图标  
  30.  
  31. my $stdUrl=“http://www.baidu.com/img/baidu_sylogo1.gif”;   
  32. #代理服务器列表页面的url,可以加多个页面  
  33.  
  34. my @urls=(“http://www.5uproxy.net/http_fast.html”);#,“http://www.5uproxy.net/http_anonymous.html”,“http://www.5uproxy.net/http_non_anonymous.html”);  
  35.  
  36. $ua->timeout(3); # 3秒超时  
  37.  
  38. $ua->agent(“Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)”); # 模拟xp ie7浏览器  
  39.  
  40. #获取待验证的代理服务器列表  
  41.  
  42. foreach my $url(@urls){  
  43.     getProxyAddr($url);  
  44. }  
  45. #验证代理服务器列表  
  46.  
  47. foreach my $proxyAddr(@proxys){  
  48.     checkProxyAddr($stdUrl,$proxyAddr);  
  49. }  
  50. #输出所有结果  
  51.  
  52. print join(“,”,@checkedProxys).“\n”;  
  53.  
  54. #获取待验证的代理服务器列表  
  55.  
  56. sub getProxyAddr  
  57. {  
  58.       my $url=shift;  
  59.     my $document = get($url);  
  60.     return print “cannot get $url\n” unless defined $document;  
  61.     my @lines=split(“\n”,$document);  
  62.     my $i=0;  
  63.     my @matches;  
  64.     for($i=0;$i<@lines;$i++){  
  65.         #获取ip  
  66.  
  67.         if(@matches=$lines[$i]=~/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/i) {  
  68.             my $ip=$matches[0];  
  69.             #获取端口  
  70.  
  71.         if(@matches=$lines[$i+1]=~/<td.*>(\d{1,6})<\/td>/i) {  
  72.            my $port=$matches[0];  
  73.            push(@proxys,“$ip:$port”);  
  74.         }   
  75.       }  
  76.     }  
  77. }  
  78.  
  79. #验证代理服务器列表  
  80.  
  81. sub checkProxyAddr{  
  82.     my $url=shift;  
  83.     my $proxyAddr=shift;  
  84.     
  85.   $ua->proxy([‘http’], “http://$proxyAddr”); # 设http代理服务器  
  86.  
  87.   my @headcontent=head($url); #取head比较快  
  88.  
  89.   if(scalar(@headcontent)==0){  
  90. #     print “Could not get head from $proxyAddr\n”;  
  91.  
  92.       return -1;           
  93.   }else{  
  94.           print “$proxyAddr\n”;  
  95.           push(@checkedProxys,“$proxyAddr”);  
  96.           return 0;  
  97.   }      
  98. #    my $ua = new LWP::UserAgent;  
  99.  
  100. # $ua->timeout(3); # 3秒超时  
  101.  
  102. # $ua->proxy([‘http’], “http://$proxyAddr”); # 设http代理服务器  
  103.  
  104. # $ua->agent(“Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)”); # 模拟xp ie7浏览器  
  105.  
  106. # my $req = new HTTP::Request->new(GET => $url);  
  107.  
  108. # my $res = $ua->request($req);  
  109.  
  110. # if ($res->is_success){  
  111.  
  112. #         print “$proxyAddr\n”;  
  113.  
  114. #         push(@checkedProxys,“$proxyAddr”);  
  115.  
  116. #         return 0;  
  117.  
  118. # }else {  
  119.  
  120. #     print “Could not get head from $proxyAddr\n”;  
  121.  
  122. #     return -1;  
  123.  
  124. #    }  
  125.  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110598.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • double转bigDecimal精度问题

    double转bigDecimal精度问题double转bigDecimal精度问题需要用到bigDecimal的字符串构造来转float的精度:2^237位double的精度:2^5216位十进制转二进制存在精度差doubleg=12.35;BigDecimalbigG=newBigDecimal(g).setScale(1,BigDecimal.ROUND_HALF_UP);//…

    2022年6月4日
    163
  • 常见算法时间复杂度

    常见算法时间复杂度时间复杂度算法分析同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。一、时间复杂度(1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费

    2022年5月15日
    42
  • 为了写论文给 Linux “投毒”, Linux 内核维护者封杀明尼苏达大学「建议收藏」

    为了写论文给 Linux “投毒”, Linux 内核维护者封杀明尼苏达大学「建议收藏」Linux内核稳定分支的维护者GregKroah-Hartman决定禁止美国明尼苏达大学向主线Linux内核提交补丁,因为他们故意提交有安全影响的可疑代码,他们以“如果向开源计划提交代码的方式注入漏洞,开源社区将如何处理”进行了专门研究,并且还发布了一篇论文:《OntheFeasibilityofStealthilyIntroducingVulnerabilitiesinOpen-SourceSoftwareviaHypocriteCommits》论文地址:https://

    2022年7月23日
    19
  • linux hexdump显示格式c数组,hexdump命令

    linux hexdump显示格式c数组,hexdump命令hexdump命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。语法hexdump[选项][文件]…选项-nlength只格式化输入文件的前length个字节。-C输出规范的十六进制和ASCII码。-b单字节八进制显示。-c单字节字符显示。-d双字节十进制显示。-o双字节八进制显示。-x双字节十六进制显示。-s从偏移量开始输出。…

    2022年9月21日
    4
  • android 从相册选择图片_android调用相册并显示图片

    android 从相册选择图片_android调用相册并显示图片publicclassMainActivityextendsAppCompatActivity{intREQUEST_CODE=0;privateNineGridImageViewngiv;privateArrayListphotos;privateDialogdialog;privatecn.com.jwtimes.www.jwtimes.mAdaptermAdapter1…

    2022年9月22日
    4
  • jsp中得到ContextPath的两种方法

    jsp中得到ContextPath的两种方法1.script 2.el ${pageContext.request.contextPath}

    2022年9月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号