自动寻找最快的代理服务器的脚本。

sh/bash/dash/ksh/zsh等Shell脚本
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

自动寻找最快的代理服务器的脚本。

#1

帖子 oneleaf » 2005-07-26 11:42

思路,
1 从 http://www.proxy4free.com/page1.html 获得代理服务器列表

2 分离出代理服务器的IP和端口,组成数组。

3 循环数组,使用
export http_proxy="http://192.168.10.11:8080"
再使用
/usr/bin/time -o timer.txt -f %e wget --cache=off -T 20 -t 1 -w 0 -O /dev/null www.google.com
计算花费时间,最小为佳

4 输出最佳的代理服务器
上次由 oneleaf 在 2005-08-30 10:18,总共编辑 4 次。
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#2

帖子 oneleaf » 2005-07-26 15:49

上次由 oneleaf 在 2005-07-26 16:15,总共编辑 1 次。
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#3

帖子 oneleaf » 2005-07-26 16:04

代码: 全选

#!/bin/bash
#Copyright (c) 2005 ubuntu.org.cn
#License: GPLv2 
wget -O proxy.html http://www.proxy4free.com/page1.html

PROXYS=`sed -n '/proxy_text/{n;p;n;p;}' proxy.html | sed -e 's/ *//' | \
sed -e 'N' -e 's/\n//' | sed -e "/copyright/d" | sed -e 's/<\/td><td>/:/' | \
sed -e 's/<td>//' | sed -e 's/<\/td>//' `

rm proxy.html

PAYTIME=1000;
TEMPTIME=1000;
OLDPROXY=$http_proxy;
WGET="wget --cache=off -T 20 -t 1 -w 0 -O /dev/null www.google.com";
PROXY="";
for proxy in $PROXYS ; do
   echo "Testing http://$proxy..."
   export http_proxy="http://$proxy"    
   TEMPTIME=`/usr/bin/time -o proxytimer.txt -f %e $WGET`;
   if [ "$?" = 0 ] ; then
      TEMPTIME=`cat proxytimer.txt`;
      echo "wget $1 : $TEMPTIME   CurrMinTime : $PAYTIME";
      TEMPTIME2=`echo "$PAYTIME > $TEMPTIME"|bc`;
      if [ $TEMPTIME2 = 1 ] ; then
         PAYTIME="$TEMPTIME";
         PROXY="$proxy";
         echo -e "\033[37;41;1mSet best proxy ($PAYTIME): $proxy\033[0m"   
      fi
   fi
   rm proxytimer.txt; 
done
export http_proxy=$OLDPROXY
echo "Best proxy is $PROXY";
exit 0
上次由 oneleaf 在 2005-08-30 9:50,总共编辑 2 次。
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
头像
jimmy3719
帖子: 109
注册时间: 2005-04-21 21:39

#4

帖子 jimmy3719 » 2005-07-31 20:19

我拷贝下来,执行的时候说6和7行有错误.我的是UBUNTU 5.04
黑色不是我生活的色彩,我只是在经历黑暗。
__________________________________
我现在随身带着 LiveCD , 走到哪儿都是 Ubuntu
头像
firehare
帖子: 2625
注册时间: 2005-04-10 16:54
来自: 温州大学
联系:

#5

帖子 firehare » 2005-07-31 22:17

是不是说多了一个“` ”?
我心无畏,源自于我心无知。
图片
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#6

帖子 oneleaf » 2005-07-31 23:17

没有问题啊,我一直使用的。
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
头像
yonsan
帖子: 887
注册时间: 2005-07-01 18:56
来自: 广州市

#7

帖子 yonsan » 2005-08-01 7:55

我直接从网页上拷的,测试下也没问题!
I will be back!
头像
yonsan
帖子: 887
注册时间: 2005-07-01 18:56
来自: 广州市

#8

帖子 yonsan » 2005-08-01 8:28

oneleaf 写了:

代码: 全选

#/bin/bash
呵呵,怪不得我用gvim打开此脚本文件编辑时没有语法高亮度显示!!
改成
#!/bin/bash 就好了!!

估计以上各位出问题就在此了吧!!
I will be back!
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#9

帖子 oneleaf » 2005-08-01 8:43

汗,居然犯了最低级的错误,已经修正。郁闷的是,测试也过了,没有任何提示。
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
头像
yonsan
帖子: 887
注册时间: 2005-07-01 18:56
来自: 广州市

#10

帖子 yonsan » 2005-08-01 8:57

估计是你正好使用bash!如果是csh之类或其它的shell可能会出问题!!

我测试时也没看到任何错误提示,仅在gvim中没语法高亮度显示觉得奇怪才发现这个情况!!

探讨一下:
会不会改成 #!/bin/sh 更容易发现问题?
I will be back!
zhuzhzh
帖子: 265
注册时间: 2005-07-28 15:08

#11

帖子 zhuzhzh » 2005-08-02 12:08

这个脚本不错

不过速度慢了点


不能并发测试


应该写成可以接受参数的

比如:第一个参数为从哪几个网页上获取代理
第二个参数用哪几个做为测试网址

然后分别输出访问那几个网址的最快的代理
无声胜有声
zhuzhzh
帖子: 265
注册时间: 2005-07-28 15:08

#12

帖子 zhuzhzh » 2005-08-02 13:32

还有,我发现一个很重要的问题,它不能从.aspx的网页上提取代理

(而最常见的代理都是aspx类型的)
无声胜有声
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#13

帖子 oneleaf » 2005-08-02 13:33

告诉我你获得代理服务器地址的网址,这个只能专门写。
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
zhuzhzh
帖子: 265
注册时间: 2005-07-28 15:08

#14

帖子 zhuzhzh » 2005-08-02 15:15

http://info.hustonline.net/index/proxyshow.aspx



http://qiezi.xjtushare.com/proxy.aspx

我看到在windows下的花刺代理(华中大一个人编的)是可以从这些网页中提取的

我本也想写个脚本的,可是水平不够,提不出来
无声胜有声
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#15

帖子 oneleaf » 2005-08-02 15:54

修改如下:
第一个网址打不开,第二个修改脚本如下:

代码: 全选

wget -O proxy.html http://qiezi.xjtushare.com/proxy.aspx

PROXYS=`grep @HTTP proxy.html | sed -e 's/<\/td><td>/\n/g' | sed -e 's/<\/td><\/tr>/\n/g' | sed -e 's/<tr width=100%><td>//'| sed -e '/</d' | sed -e '/SOCKS/d' | sed -e 's/@HTTP//' `
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
回复