cooka
4/13/2012 - 4:09 AM

My Pac File for Auto Proxy

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;
}