Skip to content

Instantly share code, notes, and snippets.

@cooka
Forked from ayanamist/proxy.pac
Created April 13, 2012 04:09
Show Gist options
  • Save cooka/2373601 to your computer and use it in GitHub Desktop.
Save cooka/2373601 to your computer and use it in GitHub Desktop.
My Pac File for Auto Proxy
var PROXY = {
"direct":"DIRECT",
"goagent":"PROXY 127.0.0.1:8087",
"vps":"PROXY 127.0.0.1:8123",
"edu":"PROXY 127.0.0.1:4080",
"sogou":"PROXY 127.0.0.1:8083",
"adblock":"PROXY 127.0.0.1:8080",
"tele":"PROXY 127.0.0.1:4480"
};
var DEFAULT = PROXY['sogou'];
var ALL = [
{
// Direct Section
"proxy":"direct",
"domain":[
'192.168.121.3',
'192.168.121.2',
'192.168.1.1',
'127.0.0.1',
'localhost',
'.tongjitv.com',
'.tjstart.com'
]
},
{
// AdBlock Section
"proxy":"adblock",
"domain":[
'.adsonar.com',
'w.cnzz.com',
'cpro.baidu.com',
'spcode.baidu.com',
'hm.baidu.com',
'.egooad.com',
'pixel.quantserve.com',
'.scorecardresearch.com',
'adlog.com.com',
'apex.com.com',
'.imrworldwide.com',
'.doubleverify.com',
'dw.com.com',
'.revsci.net',
'tags.bluekai.com',
'gscounters.gigya.com',
'bid.openx.net',
'.justtechjobs.com',
'.intellitxt.com',
'js.bizographics.com',
'jlinks.industrybrains.com',
'.qnsr.com',
'.adnxs.com',
'pagead2.googlesyndication.com',
'avazudsp.net',
'partner.googleadservices.com',
'.doubleclick.net',
'main.gslb.ku6.com',
'lu.sogou.com',
'inte.sogou.com'
],
"regexp":[
/^.*:\/\/api\.yongwo\.de\/fawave\/adlist\/.*/,
/^.*images\.sohu\.com\/cs\/jsfile\/js\/ct\..*$/,
/^.*readict\.com\/promotion\/.*$/,
/^.*.iicdn\.com\/www\/delivery\/afr\.php.*$/,
/^.*duiwai\.baidu\.com\/nocache\/mp\/.*$/,
/^.*bc\.ifeng\.com\/main\/s.*$/,
/^.*cpro\.baidu\.com\/cpro\/.*$/,
/^.*sc\.ifeng\.com\/js\.ng\/channel.*$/,
/^.*\.alimama\.com\/alimama\.php.*$/,
/^.*\.alimama\.cn\/js\/ac\.js.*$/,
/^.*cdn\.tanx\.com\/t\/tanxclick\.js.*$/,
/^.*static\.atm\.youku\.com\/.*\.swf.*$/,
/^.*static\.atm\.youku\.com\/.*\.jpg.*$/,
/^.*d1\.sina\.com\.cn\/.*\.flv$/,
/^.*\.f4v..*&vidtp=.*&igrft=.*$/,
/^.*f\.youku\.com\/player\/getFlvPath\/fileid\/.*$/,
/^.*\/ikuadapter\.swf.*$/,
/^.*\.tdimg\.com\/sales\/.*$/,
/^.*\.56imgs\.com.*\/tuiguang.*$/
]
},
{
// Long Connection Section
"proxy":"vps",
"domain":[
'mobile.twitter.com',
'userstream.twitter.com'
]
},
{
// GFW Section
"proxy":"goagent",
"domain":[
'.fb.me',
'.wretch.cc',
'.hotfile.com',
'.ironpython.net',
'.free.fr',
'.rudygems.com',
'.filesonic.com',
'.openhome.cc',
'.rubyinstaller.org',
'.idv.tw',
'.isohunt.com',
'.nabble.com',
'.kanzhongguo.com',
'.sytes.net',
'.chinagfw.org',
'.mediafire.com',
'.openmymind.net',
'.spinejs.com',
'.speakerdeck.com',
'.thechangelog.com',
'.imgkeep.com',
'.dabr.co.uk',
'.voanews.com',
'.voachineseblog.com',
'.voa.mobi',
'.bbc.in',
'.bbcchinese.com',
'.bbc.co.uk',
'.chinainperspective.com',
'.mingpao.com',
'.wuala.com',
'.boxun.com',
'.dwnews.com',
'.dw-world.com',
'.dw-world.de',
'.lijit.com',
'.gravatar.com',
'.viddler.com',
'.chzbgr.com',
'.cheezburger.com',
'.news.pchome.com.tw',
'.eddychan.com',
'.9bis.net',
'.9bis.com',
'.libertytimes.com.tw',
'.cornelcreanga.com',
'.topsy.com',
'.xys.org',
'.golang.org',
'.youtube.com',
'.vimeo.com',
'.blip.tv',
'.twerpscan.com',
'.edubridge.com',
'.uncyclopedia.info',
'.goodreads.com',
'.disqus.com',
'.marguerite.su',
'.kenengba.com',
'.lnkd.in',
'.wmoov.com',
'.9city.me',
'.twitlonger.com',
'.yegle.net',
'.paper.li',
'.biantailajiao.com',
'.nodeknockout.com',
'.igfw.tk',
'.mitbbs.com',
'.aculo.us',
'.zeptojs.com',
'.openvpn.net',
'.4bsd.biz',
'.tabsugar.com',
'.bitly.com',
'.addthiscdn.com',
'.ggpht.com',
'.tv.com',
'.widgets.twimg.com',
'.android-x86.org',
'.rfa.org',
'.cld.me',
'.mashable.com',
'.nextmedia.com',
'.appleactionews.com',
'.tumblr.com',
'.mobileways.de',
'.pixfs.net',
'.pixnet.net',
'.blip.tv',
'.scribd.com',
'.voanews.com',
'.android.com',
'.gstatic.com',
'.chromium.org',
'.t66y.com',
'.letscorp.net',
'.epfl.ch',
'.snsanalytics.com',
'.tweetmeme.com',
'.smf.is',
'.twitterfeed.com',
'.r246.jp',
'.wordpress.com',
'.wp.com',
'p.twimg.com',
'.rfi.fr',
'.wezone.net',
'.wikipedia.org',
'.chinadigitaltimes.net',
'.bit.ly',
'.googleapis.com',
'.google.com',
'.analyticsrock.com',
'.sns.mx',
'.solidot.org.feedsportal.com',
'.pocoo.org',
'.linkedin.com',
'.fnierdster.com',
'.milewise.com',
'.picplz.com',
't.co',
'.ytimg.com',
'google.com',
'.googleusercontent.com',
'.googlepages.com',
'.googlevideo.com',
'.googlecode.com',
'.appspot.com',
'.blogspot.com',
'.google-analytics.com',
'.rene-liu.com',
'.4shared.com',
'.twitter.com',
'.twitpic.com',
'.img.ly',
'.j.mp',
'.yfrog.com',
'.fbcdn.net',
'.feedburner.com',
'.foursquare.com',
'.bullogger.com',
'.diigo.com',
'.dropbox.com',
'.ht.ly',
'.hootsuite.com',
'.imageshack.us',
'.imdb.com',
'.mail-archive.com',
'.mobypicture.com',
'.ow.ly',
'.pastie.org',
'.plixi.com',
'.plurk.com',
'.rapidshare.com',
'.wp.me',
'.nyti.ms',
'.googlesyndication.com',
'.page2rss.com',
'.dhananjaynene.com',
'.twbbs.org.tw',
'.llvm.org',
'.tweetdeck.com',
'.thepiratebay.se',
'.thepiratebay.org',
'.apigee.com',
'.cl.ly',
'.guao.cc',
'.vimeo.com',
'.wdfiles.com',
'.ohloh.net',
'.googlelabs.com',
'.creaders.net',
'.pulse.yahoo.com',
'.blogger.com',
'.google.com.hk',
'go.redirectingat.com',
'.faststone.org',
'.the-big-bang-theory.com',
'.echofon.com',
'.goo.gl',
'.hackerne.ws',
'.friendfeed.com'
],
"regexp":[
/^.*facebook.*$/,
/^.*youtu\.be.*$/,
/^:\/\/goo\.gl\/fb\/.*$/,
/^.*posterous\.com.*$/,
/^.*python.org\/download\/.*$/
]
},
{
// Acceleration Section
"proxy":"goagent",
"domain":[
'.pipes.yahoo.com',
'.officeapps.live.com',
'.cloudfront.net'
],
"regexp":[
/^https:\/\/addons\.opera\.com\/addons\/extensions\/download\/.*$/
]
},
{
"proxy":"tele",
"regexp":[
/^http:\/\/61\.183\.172\.39:4400\/.*$/
]
},
{
"proxy":"edu",
"domain":[
'.embase.com',
'dx.doi.org',
'.thescientificworld.co.uk',
'.wiley.com',
'.liebertonline.com',
'.springerlink.com',
'.aacrjournals.org',
'.nature.com',
'.redjournal.org',
'.sciencedirect.com',
'.metapress.com',
'202.114.130.209',
'202.114.9.29',
'.sciencemag.org'
]
}
];
function FindProxyForURL(url, host) {
function dnsDomainIsS(host, domain) {
return host.length >= domain.length && host.substring(host.length - domain.length) == domain;
}
function dnsDomainIs(host, domain) {
var result = dnsDomainIsS(host, domain);
if (!result && domain[0] === '.') {
result = dnsDomainIsS(host, domain.slice(1));
}
return result;
}
function validate_domain(pattern) {
return dnsDomainIs(host, pattern);
}
function validate_regexp(pattern) {
return pattern.test(url);
}
function iterRules(ruleObject, ruleName, callback) {
if (ruleObject.hasOwnProperty(ruleName)) {
var rules = ruleObject[ruleName];
var length = rules.length;
for (var i = 0; i < length; i++) {
if (callback(rules[i]) === true) {
return true;
}
}
}
return false;
}
var catLength = ALL.length;
for (var catId = 0; catId < catLength; catId++) {
var cat = ALL[catId];
if (iterRules(cat, "domain", validate_domain) || iterRules(cat, "regexp", validate_regexp)) {
return PROXY[cat['proxy']];
}
}
return DEFAULT;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment