用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.  

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • MQTT服务器搭建–Mosquitto[通俗易懂]

    MQTT服务器搭建–Mosquitto[通俗易懂]MQTT服务器搭建–Mosquitto1.Mosquitto简介MQTT(MQTelemetryTransport),消息队列遥测传输协议,轻量级的发布/订阅协议, 适用于一些条件比较苛刻的环境,进行低带宽、不可靠或间歇性的通信。目前已经是物联网消息通信事实上的标准协议了。值得一提的是mqtt提供三种不同质量的消息服务:l “至多一次”:消息发布完全依赖底层 TCP/IP 网络。

  • 二、青龙面板安装教程+依赖+拉库+互助「建议收藏」

    二、青龙面板安装教程+依赖+拉库+互助「建议收藏」青龙面板安装教程+依赖+拉库+互助全套教程

  • apache的安装教程详解_怎么安装apache

    apache的安装教程详解_怎么安装apache文章目录1、下载Apache2、修改httpd.conf文件3、启动Apache服务1、下载Apache点击:[https://www.apachehaus.com/cgi-bin/download.plx]点击图中红圈的版本下载:下载后,解压文件,把如图这两个文件拿出来放到你的Apache目录下例如:我的放到D盘,如图:2、修改httpd.conf文件在文件夹中查…

  • shell输出数组元素_shell中使用数组

    shell输出数组元素_shell中使用数组数组介绍平时的定义a=1,b=2,c=3,变量如果多了,再一个一个定义很费劲,并且取变量的也费劲简单的说,数组就是相同数据类型的元素按一定顺序排列的集合数组就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们得边合。这个名字成为数组名,编号成为数组下标。组成数组的各个变量成为数组的分称为数组的元素,有时也称为下标变量数组定义与增删改查法1:array=(value1value2valu…

    2022年10月26日
  • docker开启2375端口[通俗易懂]

    docker开启2375端口[通俗易懂]Docker开启RemoteAPI访问2375端口-hongdada-博客园https://www.cnblogs.com/hongdada/p/11512901.htmldocker开启2375端口,提供外部访问docker,idea连接服务器docker_霓虹深处-CSDN博客_idea连接docker2376端口https://blog.csdn.net/qq_36850813/article/details/89924207…

  • 电商运营有前途吗?看看运营者的血泪史

    电商运营有前途吗?看看运营者的血泪史废话不说,进入正题,在知乎上,这个小伙是这么问滴:  题主男,今年25岁,大学学的是教育技术学(坑!),毕业三年一直从事教育行业,但本人并不喜欢。但对电商还是蛮感兴趣的,于是打算转行,前几天拿到了一个做小家电电商的offer,现在上班两天了,职位是运营助理,当然了,我的职业目标是电商运营。  介绍下这家公司,是做小家电的,有天猫,C店,1号店,京东等平台,从老板口中得知去年的营业额

发表回复

您的电子邮箱地址不会被公开。

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