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

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

本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/605763,如需转载请自行联系原作者

用perl获取可用的代理服务器地址相关推荐

  1. 使用Python自动获取可用代理列表

    今天闲来无事,随便写的一个从代理发布网站上提取可用代理列表的脚本. 运行后,可以获取http://cn-proxy.com/发布的可用代理ip和端口的列表. 运行效果如下: 源代码如下,请指教: # ...

  2. 客户机不能看到分配的dhcp_交换机配置DHCP后下挂用户获取不到IP地址或者获取缓慢...

    问题描述 S5700做DHCP SERVER下接接入交换机,接入交换机连至用户侧,用户侧发现无法获取IP地址. 图1-1 组网图 处理过程 1. 按照产品文档排查DHCP SERVER配置是否有问题, ...

  3. 获取客户端真实IP地址

    Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...

  4. 获取访问者的IP地址

    2019独角兽企业重金招聘Python工程师标准>>> HTTP_X_FORWARDED_FOR:浏览当前页面的用户计算机的网关 如果用户是通过代理服务器浏览的 那么使用REMOTE ...

  5. python扫描proxy并获取可用代理ip列表

    mac或linux下可以work的代码如下: # coding=utf-8import requests import re from bs4 import BeautifulSoup as bs i ...

  6. apache/nginx中equest.getServerName()外网环境获取不到代理地址/域名

    2019独角兽企业重金招聘Python工程师标准>>> 前两天做了个项目,让同事拿去投标,为了给用户演示,需要外网访问,于是配置了apache代理.随之问题就来了,外网访问的时候,r ...

  7. php获取当前页面地址代码,PHP获取当前页面URL地址程序代码

    在php中要获取当前页面url地址方法很简单,下面我来给大家总结一下利用相关函数获取完整页面url地址的实例. PHP的预定义变量$_SERVER是一个包含头部(headers),路径信息及脚本位置的 ...

  8. 如何使用JavaScript获取客户端的IP地址?

    我需要以某种方式使用JavaScript检索客户端的IP地址: 没有服务器端代码,甚至没有SSI. 但是,我不反对使用免费的第三方脚本/服务. #1楼 在您的页面中包含以下代码: <script ...

  9. 穿透代理获取用户真实IP地址

    文章目录 一.场景 二.方法 1.微信官方方法 (1)没有代理 (2)有代理 2.非官方方法 (1)代码 (2)说明 (3)补充 一.场景 在对接微信H5支付API时,有一关键步骤是获取到用户的真实I ...

最新文章

  1. android获取时区时间格式,考虑时区的日期/时间转换-Android
  2. 《数据库原理与应用(第3版)》——习题
  3. linux系统下docker安装,Linux下Docker的安装与使用
  4. Java 实现MapReduce函数
  5. 企业实战_23_MyCat SQL防火墙
  6. java异常代码分析
  7. 面试问题:MyBatis和Hibernate的区别
  8. Zlib解压/压缩实现
  9. 语料库python_NLPPython笔记——语料库
  10. 家庭记账本开发进度6
  11. oracle 负载均衡连接方式常用SQL语句备忘录
  12. 鼎信诺取数oracle,鼎信诺审计前端取数讲解(最新).ppt
  13. 别让孩子遭受“爱的伤害”
  14. Kubernetes Service与Ingress详解
  15. IOI2018退役记 + NOIP2018游记
  16. 苹果有arkit,android,ARKit来袭:苹果ar支持哪些设备,苹果手机怎么使用ar?
  17. 东方甄选双语直播火爆出圈,新东方转型初见端倪
  18. 【科普】机密资产Confidential Asset白皮书(1)
  19. android四大组件之四-BroadCast实现原理分析
  20. 交换机的重要技术参数

热门文章

  1. TalkingData:2014年移动打车应用行业报告
  2. Mysql中大表添加索引的办法
  3. 嵌入式开发之davinci--- 8148/8168/8127 中的图像缩放sclr、swms之后出现图像视频卡顿、屏幕跳跃的问题...
  4. 写作预报之Hyper-V Server的图形化管理系统配置!
  5. sql server 2005中新增加的try catch学习
  6. antv g2字体阴影_antv g2的理解总结
  7. Metasploit运行环境内存不要低于2GB
  8. Maltego更新到4.1.6
  9. 网页图表Highcharts实践教程之认识Highcharts
  10. usb serial converter驱动安装_让你到期的机顶盒再发挥余热,终极办法任意安装软件,三网可用...