2015年11月13日
shadowsocks:通过ip判断来动态代理
在公司办公用两台笔记本,一台“标机”可以访问各种内网环境和内部邮箱,一台mac“非标机”主要用来开发,但是还是有大量网站被禁止访问了,例如印象笔记,网盘,各种免费邮箱。这当然不能忍,严重影响“工作效率”,刚好部署了shadowsocks来科学上网,就直接把所有被禁的站点加入PAC里,但是常常又会在家里用mac,通过shadowscoks访问国内网站实在是慢,前几天的时候频繁的修改PAC文件,google各种自动修改PAC的方法,始终没有找到好的方法,本身对“网络”也不太熟悉,所以这种低效的方式持续了好一段时间。直到……
其实PAC文件里就是js的语法,有一个myIpAddress()
方法可以取到当前的ip地址,那么通过ip就可以判断出网络环境,是在公司还是在家,从而动态修改代理设置。好了直接上代码:
var domainsForWork = { "yinxiang.com": 1, "evernote.com": 1, "baidu.com": 1, "bdstatic.com": 1, "qbox.me": 1, "qiniu.com": 1, "zhihu.com": 1 }; var domains = { "google.com": 1 ... }; var proxy = "SOCKS5 127.0.0.1:1080; SOCKS 127.0.0.1:1080; DIRECT;"; var direct = 'DIRECT;'; function FindProxyForURL(url, host) { // 如果是公司的ip,就吧domainsForWork的域名加入domains if(myIpAddress().indexOf('172.18') !== -1) { for(var item in domainsForWork) { domains[item] = domainsForWork[item]; } } var lastPos; do { if (domains.hasOwnProperty(host)) { return proxy; } lastPos = host.indexOf('.') + 1; host = host.slice(lastPos); } while (lastPos >= 1); return direct; }
牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
非常棒!