分页: 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
呵呵,怪不得我用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
发表于 : 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//' `