Jan 06

Automatic Proxy Configuration

Tag: InformáticaJorge @ 13:30

Eu tinha um problema. No emprego o meu PC precisava de uma proxy configurada e em casa não. Todos os dias tinha de tirar a proxy em 3 programas quando chegava a casa e voltar a colocar no dia seguinte quando chegava ao trabalho. Aqui vou deixar a solução:

  1. Criar um ficheiro de texto com extensão .pac (usualmente chamado proxy.pac) e grava-lo numa qualquer directoria (ex. D:\);
  2. Nesse ficheiro escrever o seguinte conteudo:
    function FindProxyForURL(url, host)
    {
    	if (isInNet(myIpAddress(), "192.168.100.0", "255.255.255.0"))
    	{
    		return "PROXY 192.168.200.1:8080";
    	}
    	else
    		return "DIRECT";
    }

  3. No Internet Explorer ir ás opções de rede (Tools > Internet Options > Connections > LAN Settings) e efectuar a seguinte configuração:

    image

Et voilá… para o exemplo indicado, caso o computador se encontre numa rede 192.168.100.* ele irá utilizar a proxy 192.168.200.1 na porta 8080, caso contrário acederá à Internet directamente sem passar por qualquer proxy.

Esta função pode ser enriquecida com uma variedade de funções. Para tal podem consultar por exemplo este site que é muito bom nisto: FindProxyForURL.com

O meu exemplo exemplo:

function FindProxyForURL(url, host)
{
    //Se o PC está na rede 192.168.100.* executa o seguinte
    if (isInNet(myIpAddress(), "192.168.100.0", "255.255.255.0"))
    {
        //Se o host do URL não refere domínio (não tem pontos) devolve “DIRECT” (Sem Proxy)
        if (isPlainHostName(host)) { return "DIRECT"; }
        //Se o URL começa por “localhost” devolve “DIRECT” (Sem Proxy)
        if (shExpMatch(url, "*localhost*")) { return "DIRECT"; }
        //Se o URL contém “127.0.0.1” devolve “DIRECT” (Sem Proxy)
        if (shExpMatch(url, "*127.0.0.1*")) { return "DIRECT"; }
        //Se o URL contém “empresa.dom” devolve “DIRECT” (Sem Proxy)
        if (shExpMatch(url, "*.empresa.dom*")) { return "DIRECT"; }
        //Se o URL contém “192.168.” devolve “DIRECT” (Sem Proxy)
        if (shExpMatch(url, "*192.168.*")) { return "DIRECT"; }
        //Se o URL contém “172.30.” devolve “DIRECT” (Sem Proxy)
        if (shExpMatch(url, "*172.30.*")) { return "DIRECT"; }
        //Se o URL contém “172.28.” devolve “DIRECT” (Sem Proxy)
        if (shExpMatch(url, "*172.28.*")) { return "DIRECT"; }
        //Se o URL contém “.edp.pt” mas que não seja "www.edp.pt" devolve “DIRECT” (Sem Proxy)
        if (shExpMatch(url, "*.edp.pt*") && !shExpMatch(url, "*www.edp.pt*")) { return "DIRECT"; }
        // Se não se verificar nenhumas das condições anteriores devolve “PROXY 192.168.1.2:8080” (Proxy no endereço 192.168.1.2 na porta 8080)
        return "PROXY 192.168.1.2:8080";
    }
    //Se o PC NÃO está na rede 192.168.100.* executa o seguinte
    else
    {
        // Devolve sempre “DIRECT” (Sem Proxy)
        return "DIRECT";
    }
}

Isto permite não só automatizar a proxy bem como todas as excepções que tenho que usar no local de trabalho.

2 Responses to “Automatic Proxy Configuration”

  1. Pedro Sousa says:

    É só suminho neste inicio de ano!!!!

    Tou já a ver que para andares com tempo pra estas coisas, só podes ter a mota parada..
    Sai pra rua!!! Por favor!!

  2. Jorge Abreu (.com) » Ainda a Automatic Proxy Configuration - Blog says:

    […] ao post Automatic Proxy Configuration descobri que a opção de configuração automática da proxy no Firefox não funciona desde a […]

Leave a Reply