File:  [mozdev] / br / www / youfox.pac.html
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Tue Jan 9 23:06:42 2007 UTC (10 years, 9 months ago) by hultmann
Branches: MAIN
CVS tags: HEAD
*** empty log message ***

<?php
   header('Content-type: application/x-ns-proxy-autoconfig');
?>

// carrega o YouTube através de um proxy, mantendo as demais conexões diretas
// email-me <hultmann()gmail> se souber melhorar este script ou transformá-lo em extensão.


// alert() aparece no console de erros
alert('Carregando YouFox, um PAC para usar proxy em determinados sites. Atualizado em 09/jan/2007');

// servidores que serão acessados via proxy
var m_blackList = [
    //'video.google',
    'youtube.com'
];

var m_proxies = [
    '60.195.250.90:8080',
    '211.231.187.4:80',
    '202.67.138.63:8080',
    '125.243.251.197:80',
    '82.137.247.34:80',
    '125.247.12.254:8080',
    '82.137.247.143:80',
    '222.76.215.173:8080',
    '143.107.111.194:3124',
    '82.137.247.105:80',
    '82.137.247.50:80',
    '82.137.247.186:80',
    '200.67.163.90:8000',
    '61.220.150.2:3128',
    '80.58.205.61:80',
    '129.130.252.138:3128',
    '82.137.247.51:80',
    '130.149.49.26:3127',
    '129.24.17.70:3128',
    '130.245.145.151:3128',
    '82.137.247.176:80',
    '82.137.247.108:80',
    '204.56.0.138:3124',
    '129.130.252.139:3128',
    '82.137.247.80:80',
    '61.47.19.211:8080',
    '131.246.191.42:3124',
    '129.97.75.238:3124',
    '82.137.247.36:80',
    '85.114.97.4:8080',
    '82.137.247.124:80',
    '61.233.18.116:3128',
    '203.118.44.99:3128',
    '133.1.16.172:3127',
    '170.92.64.37:80',
    '58.185.66.194:3128',
    '130.161.40.154:3128',
    '129.174.79.249:3128'
];

// o primeiro proxy é escolhido aleatoriamente
var m_currentProxy = Math.floor(Math.random() * m_proxies.length);
var m_history = [
    '',
    '',
    ''
];
var m_idxHistory = -1;


// http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html
function FindProxyForURL(url, host)
{
    return "DIRECT";
/*
    var list = m_blackList;
    for (var idx = 0, qty = list.length; idx < qty; idx++) {
        if (host.indexOf(list[idx]) > -1) {
            return getProxy(url, host);
        }
    }

    return "DIRECT"; // sem proxy, host não está em m_blackList
*/
}


function getProxy(url, host)
{
    var myProxy;
    if (findHistory(url)) {
        myProxy = m_proxies[nextProxy()];
        resetHistory();
        alert('>>> Novo proxy (reload de "' + url + '"?): ' + myProxy);
    } else {
        addToHistory(url);
        myProxy = m_proxies[m_currentProxy];
    }

    alert('Proxy "' + myProxy + '" para conectar-se a ' + url);
    return 'PROXY ' + myProxy;
}

function nextProxy()
{
    m_currentProxy++;
    if (m_currentProxy === m_proxies.length) {
        m_currentProxy = 0;
    }
    return m_currentProxy;
}


function resetHistory()
{
    for (var idx = 0, qty = m_history.length; idx < qty; idx++) {
        m_history[idx] = '';
    }
}

function addToHistory(url)
{
    m_idxHistory++;
    if (m_idxHistory === m_history.length) {
        m_idxHistory = 0;
    }
    m_history[m_idxHistory] = url;
}

function findHistory(url)
{
    for (var idx = 0, qty = m_history.length; idx < qty; idx++) {
        if (url === m_history[idx]) {
            // provavelmente ocorreu um RELOAD, talvez porque o proxy não funcionou
            // tentando então o próximo da lista
            //
            // obs: se houver uma página de erro do proxy, o fx tentará carregar o favicon.ico
            // por isso é necessário armazenar um histórico dos acessos e não apenas a última url.
            return true;
        }
    }
    return false;
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>