2011-06-09

根据不同网络环境快速切换系统的代理服务器

工作性质决定,我经常需要带着公司的笔记本在不同客户的不同网络环境里工作。这些网络环境有这么几种:
  • 无代理,直接连外网
  • 有代理,无须登录认证,连外网
  • 有代理(多个),都需认证外连
笔记本里很多程序或者配置文件都是与网络相关的, 比如 maven的settings.xml, ~/.hgrc, eclipse的网络, 浏览器, 终端 等等。换个客户,修改代理很烦人。 别的同事大都用windows,有个软件Proxomitron 有proxy transparent forwarding功能, 把代理设置成localhost:port,然后通过在软件选择可以帮他们快速切换,并且这个软件还可以对发送/接收的数据进行过滤等功能。我因为懒,就一直wine这个软件来实现我自己的代理切换,虽然用着还算稳定,但是总是不爽。  搜索了一下于proxomitron功能类似的有privoxy,这个也有代理转发,消息过滤功能。 而且linux的软件好就好在配置文件都是文本,有了sed/awk可以想怎么改就怎么改,然后再reload/restart 服务就可以了。但是后来发现一个问题,无法forward到需要登录的代理,查了一下,加http header "Proxy-Authorization"可以,但是在那个action file里加+add-header.. 通过调试发现这个header总加不上。无奈作罢,接着wine将就吧,可这一将就将就了1年。呵呵。

其实我挺懒的,能将就就将就了。这2天决定腾出手来要把这个问题给解决了。因为有两个资深同事几乎每次看到我用vi编辑东西就说闲话,说ultraedit/notepad++操作多简易,多快捷。有时候用我的电脑他们就抓狂地骂shit。因为我是美国英语键盘布局,而且eclipse里用了vi-plugin。他们每次都说linux阿,vi阿就是shit. 我每次都不搭理他们,心想谁爱用什么就用什么得了,不就是个干活儿么,顺手就行了。最近被他们看到wine的proxomitron,又被冷嘲热讽好一阵,郁闷。俩人资格也算挺老了,咋就这么没完没了呢。所以干脆,换!

选了另一个代理软件:tinyproxy。这个也不支持直接的需登录代理转发,也要通过AddHeader。但是这个一次就实验通过了。关于Proxy-Authorization这个header,可以通过正常连接并登录那个代理服务器然后在firebug或者chrome的developer tool通过查看Request Header找到。 然后就是写个脚本sed 修改相应的配置行,然后reload了。当然也可以根据不同环境弄多个配置文件,然后用脚本选择cp。我觉得还是就一个文件,然后修改好。要么一旦对配置文件中其他地方修改了,还要把各个环境配置文件相应的地方都改。

如果有一天到处都用无线就好了,可以根据无线网的ID来自动切换。其实有线的也可以根据IP地址来自动切换,可对我这里有几个客户那里不适用。:(

目前和别的同事的proxomitron区别不大了。唯一一个就是人家是状态栏的小图标,用鼠标点点就行了,我得在终端里写个命令,不过用linux的谁不至少开着1个终端呢?也没什么问题。

脚本在自己的版本库里,没备份的必要就不贴了,也没什么特别之处。