分页: 1 / 3

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

发表于 : 2005-07-26 11:42
oneleaf
思路,
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 输出最佳的代理服务器

发表于 : 2005-07-26 15:49
oneleaf

发表于 : 2005-07-26 16:04
oneleaf

代码: 全选

#!/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

发表于 : 2005-07-31 20:19
jimmy3719
我拷贝下来,执行的时候说6和7行有错误.我的是UBUNTU 5.04

发表于 : 2005-07-31 22:17
firehare
是不是说多了一个“` ”?

发表于 : 2005-07-31 23:17
oneleaf
没有问题啊,我一直使用的。

发表于 : 2005-08-01 7:55
yonsan
我直接从网页上拷的,测试下也没问题!

发表于 : 2005-08-01 8:28
yonsan
oneleaf 写了:

代码: 全选

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

估计以上各位出问题就在此了吧!!

发表于 : 2005-08-01 8:43
oneleaf
汗,居然犯了最低级的错误,已经修正。郁闷的是,测试也过了,没有任何提示。

发表于 : 2005-08-01 8:57
yonsan
估计是你正好使用bash!如果是csh之类或其它的shell可能会出问题!!

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

探讨一下:
会不会改成 #!/bin/sh 更容易发现问题?

发表于 : 2005-08-02 12:08
zhuzhzh
这个脚本不错

不过速度慢了点


不能并发测试


应该写成可以接受参数的

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

然后分别输出访问那几个网址的最快的代理

发表于 : 2005-08-02 13:32
zhuzhzh
还有,我发现一个很重要的问题,它不能从.aspx的网页上提取代理

(而最常见的代理都是aspx类型的)

发表于 : 2005-08-02 13:33
oneleaf
告诉我你获得代理服务器地址的网址,这个只能专门写。

发表于 : 2005-08-02 15:15
zhuzhzh
http://info.hustonline.net/index/proxyshow.aspx



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

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

我本也想写个脚本的,可是水平不够,提不出来

发表于 : 2005-08-02 15:54
oneleaf
修改如下:
第一个网址打不开,第二个修改脚本如下:

代码: 全选

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//' `