星期三, 十月 17, 2007

Vim真是太强大了

其实标题应该是“正则表达式真是太强大了”。

嗯,话说在实验室天天挂代理的日子已经过了一个多月,虽然说几乎每隔一小时就要换一个代理,但是总的来说花刺还是很方便的。但是不管多方便的东西,总会有一些不尽如人意的地方。比如说吧,十一结束之后,实验室的网速一直超慢,或者说,代理经常抽风,同时,有些网站是不用代理也可以访问的,挂着代理实在是太傻乎乎了~并且有时候会同时用Firefox访问校内的网址和国外的网站,开代理也不是不开代理也不是……虽然点一下xyzproxy那个按钮也不是太麻烦,但是世界上像我这样的懒人会懒到什么程度不是一般人可以理解滴~所以,使用花刺的最简单的代理配置脚本已经不能满足我的需求了!我要用自定义的代理配置脚本啦~

可是……我不会耶……

哼,这么简单的东西,难道我不能学啊~花刺安装的时候带了一个Navigator Proxy Auto-Config File Format的文档,研究一下不就好了~

不过事实证明我真的很懒,文档还没看一半,就直接跑去看花刺的那个pac模板文件了……不过我觉得这还是比较正确的选择,那个模板文件的结构还是很清晰的,在注释“//不经过代理,直通的IP地址段(摘录自proxy expert)”之后的代码就是我要修改的地方。语句也没有什么困难的地方,需要修改的地方就是一个网络地址加一个掩码,貌似网络课的东西也没都忘,嘿嘿。

首先当然要找到工大的免费ip列表,so easy,直接Google了:http://hitsun.hit.edu.cn/zxiplist.htm。先直接Ctrl + C 然后Ctrl + V到一个文本文件中。然后看一下格式,中间的那列主机掩码是不需要的,还好都在同一列上,直接用Notepad++打开,Alt选中,del,OK!

好了……看看剩下的都是什么东西:网络地址,网络掩码,多余的空行和空格……OMG,我怎么把这上千行(包括多余的空行)弄到pac文件里面啊……

就在这时,我想起来伟大的vim了,传说中的无所不能的文本编辑器!

一开始的想法很简单,至少要把这堆地址弄得规整点:

其实也就是使用vim的替换功能,格式是

:[range]s/from/to/

首先要去掉空行,现在的地址列表中两行之间都有多余的一个空行,看着很不爽,怎么删掉呢?嗯,当然是替换功能~将连续的两个回车换行替换成一个:":%s/\n\n/\r" ,“%”表示在整个文档范围内查找。说实话我对此一直不解,回车换行应该是\n\r,但是试了好几次,"\n"、"\n\r"和"\r\n"都不正常,只有\r输出了普通的回车……

之后想删掉行尾多余的空格,翻出本本里收藏了很久的一个文档——“正则表达式之道”,这可是篇好东东啊!看完之后——

:%s/ *$//

意思是把行尾的空格替换为空……OK,行尾空格解决了~

然后呢?我发了会呆,看看pac文件里面的语句,不使用代理直接访问的ip地址用语句“else if(isInNet(host, "xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx")) return "DIRECT";”指出,前一个地址是网络地址, 后一个是掩码,现在免费ip地址的文件也是两列,如下:

2007-10-17_220158

两列中间是一堆空格……

咋办呢?正在我都开始考虑用程序完成剩下的工作的时候……突然间——我在想啥呢,既然前面都用vim完成了这么多工作,剩下的不是一样的吗?

:%s/$/")) return "DIRECT";/

:%s/  */", "/

:%s/^/else if(isInNet(host, "

就这么简单……不过在替换中间空格的地方,不知何故,如果写成“ *”(只有一个空格,后面跟*)的话,搜索的结果会很奇怪……目前还没想明白咋回事……

剩下的……当然就是ctrl + c 然后 ctrl + v把这几百行代码贴到pac模板中了!

真的没想到这个工作会这么简单……正则表达式原来这么好用啊(老师:你……真的学过自动机吗?一个正则表达式就把你激动成这样)!

%--------------分割线来了-------------------

写完pac脚本,把花刺设好~测试一下~不用代理的网站……百度,耶~连上了~再看看Google……嗯,不行?换代理……若干次之后,发现真的不行……why?难道我写的脚本有问题?不可能啊!仔细检查好几遍,没发现啥问题……

想了想,排除法!先用花刺的直接代理,正常;然后把pac脚本里面直接连接的部分都注释掉,正常;嘿嘿,貌似我快找到问题的关键了……

用nslookup查了一下Google服务器的ip地址,之后在免费ip列表里面对照了一下——Google服务器ip是66.249.89.147,免费ip列表里面有"66.249.64.0", "255.255.224.0",算了一下,果然落在这个地址之内……唉……看了免费的ip也不是都能直接连接的……把这行注释掉,终于OK了……

 

嗯,最后发现其实我挺能离题的……都不知道写到哪里去了……

3 条评论:

  1. 最近电信发疯... Blogger能访问咯~ 赶紧过来支持下下~ 顺便请教一下, 什么方法可以跨过封锁啊? www.pkblogers.com/xxx 已经不行咧~

    回复删除
  2. 貌似我这边还是要翻墙才能访问……
    有很多方法可以翻墙的啊~
    如果用Firefox的话可以用tor或者gladder
    用IE浏览器的话u和f都可以……
    小众上面有滴~
    u
    f

    回复删除
  3. 好像是我太小白啦..貌似这年头还不懂翻越长城的就只有为数不多的人咯..~ 习惯用FireFox~ ^_^ gladder下载中~ 谢谢啦~~

    o(∩_∩)o~

    回复删除