Proxy automático usando WPAD

De Wiki Hackstore

Configuração Linux

Apache

alias /wpad /srv/www/htdocs/wpad
<Directory "/srv/www/htdocs/wpad">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        AddType application/x-ns-proxy-autoconfig .dat
</Directory>

Caso você utilize um ambiente com vhosts:

<VirtualHost *:80>
        alias /wpad /srv/www/htdocs/wpad
        <Directory "/srv/www/htdocs/wpad">
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
                AddType application/x-ns-proxy-autoconfig .dat
        </Directory>
</VirtualHost>

Crie o arquivo /srv/www/htdocs/wpad/wpad.dat com o seguinte conteúdo:

function FindProxyForURL(url, host) {
    var proxy = "PROXY 172.16.0.1:3128; DIRECT";
    var direct = "DIRECT";

        if (
        shExpMatch(url, "http://caixa.gov.br*")
        || shExpMatch(url, "http://cmt.caixa.gov.br*")
        || shExpMatch(url, "https://conectividade.caixa.gov.br")
        || shExpMatch(host, "empresarial.sicoobnet.com.br")
        || shExpMatch(host, "www.sicoob.com.br")
        || shExpMatch(host, "200.201.0.0", "255.255.0.0")
        || shExpMatch(host, "200.201.*")
        || shExpMatch(host, "conectividade.caixa.gov.br")
        || shExpMatch(url, "http://cmt.caixa.gov.br*")
        || shExpMatch(host, "200.201.160.0", "255.255.240.0")
        || shExpMatch(host, "200.201.*")
        || shExpMatch(host, "192.168.0.3")
        )
        return "DIRECT";
        else
        return proxy;


    //We only cache http
     if (
        url.substring(0, 4) == "ftp:"   ||
        url.substring(0, 6) == "rsync:"
        )                                                                                                                                                                                                                                    
    return direct;                                                                                                                                                                                                                           
                                                                                                                                                                                                                                             
    // proxy everything else:                                                                                                                                                                                                                
    return proxy;                                                                                                                                                                                                                            
}  


Lembre-se de criar um link simbólico:

cd /srv/www/htdocs/wpad/ ; ln -s wpad.dat proxy.pac

DHCP Server

Coloque as linhas abaixo no /etc/dhcpd.conf:

option wpad code 252 = text;
option wpad "http://172.16.0.1/wpad/proxy.pac\n";


Teste usando o PACPARSER

Instale no openSUSE:

OCICLI http://software.opensuse.org/ymp/home:Tehnari/openSUSE_12.2/pacparser.ymp


Após instalação, teste um site qualquer:

pactester -p /srv/www/htdocs/wpad/wpad.dat -u http://www.google.com.br

PROXY 172.16.0.1:3128; DIRECT


Teste um site por fora do proxy:

pactester -p /srv/www/htdocs/wpad/wpad.dat -u http://conectividade.caixa.gov.br

DIRECT