Existe uma maneira de encadear arquivos proxy.pac via URL?

2

É necessário que vários de nossos laptops operem em redes próprias e baseadas em clientes. Isso geralmente envolve a troca de configurações de proxy, o que fizemos inicialmente através de um arquivo proxy.pac personalizado (depois de alguma ajuda de você aqui ). Agora, uma das redes que usamos tem seu próprio proxy.pac que devemos usar, o que significa que, atualmente, temos que alterar manualmente o nosso local proxy.pac para essa rede.

Então, existe uma maneira de escrever um proxy.pac de tal forma que ele seja adiado para outro proxy.pac em algumas circunstâncias?

    
por Jeff Yates 24.08.2009 / 18:21

3 respostas

6

Não, não dentro de um arquivo .pac estático. O problema seria que você acabaria redefinindo a função FindProxyForURL () quando o segundo arquivo fosse carregado, o que acionaria o interpretador javascript.

Você precisaria desenvolver uma página dinâmica (ASP, PHP, etc) que implementaria a lógica necessária e, com base na decisão, ler o conteúdo do arquivo .pac desejado e retorná-lo ao cliente. Eu costumava fazer isso para construir um balanceamento de carga dinâmico entre proxies que eu tinha em diferentes locais físicos e funcionava bem para mim.

Se você escolher seguir esse caminho, certifique-se de que o script que você escreve define o tipo mime de retorno para application / x-ns-proxy-autoconfig ou application / x-javascript-config, caso contrário seu navegador não o reconhecerá como um arquivo pac.

    
por 24.08.2009 / 18:37
1

Depois de ficar irritado com o IE por não ter uma maneira rápida e fácil de desativar as configurações de proxy, essa pergunta me inspirou a escrever este arquivo PAC em PHP.

Ele determina se uma solicitação para o arquivo é feita internamente (nesse caso, use o servidor proxy) ou externamente: vá direto. Talvez alguém possa ajustá-lo para suas próprias necessidades.

<?php
    $proxy = "192.168.0.x";
    $port  = "8080";

    header ("Content-type: application/x-ns-proxy-autoconfig");
    header ("Date: " . gmdate('D, d M Y H:i:s \G\M\T', time ()));
    header ("Last-Modified: " . gmdate('D, d M Y H:i:s \G\M\T', time ()));
    header ("Expires: " . gmdate('D, d M Y H:i:s \G\M\T', time () + 60 * 30));

    echo "// Request from: " . $_SERVER ['REMOTE_ADDR'] . "\n";

    if (substr ($_SERVER ['REMOTE_ADDR'], 0, 8) == "192.168.")
    {
?>
// We're inside the firewall
var external = false;
<?php
    }
    else
    {
?>
// We're outside the firewall
var external = true;
<?php
    }
?>

// Default connection
var direct = "DIRECT";

// Alternate Proxy Server
var proxy = "PROXY <?php echo $proxy; ?>:<?php echo $port; ?>";

//
// Proxy Logic
//

function FindProxyForURL(url, host)
{
    if (external || isPlainHostName(host) || shExpMatch(host, "192.168.*") || (dnsDomainIs(host, ".example.com")) && !localHostOrDomainIs(host, "www.example.com") || dnsDomainIs (host, ".example2.com"))
    {
        return direct;
    }
    else
    {
        return proxy;
    }
}

Agora ajustei minhas configurações de Diretiva de Grupo para que todos os navegadores apontem para esse arquivo, que está localizado em um servidor da Web dentro do firewall. Agora, se os laptops forem externos, o arquivo de proxy será alterado automaticamente sem a necessidade de reconfigurar a configuração de proxy do navegador.

Editar: atualizado para corresponder aos hosts de endereços IP locais também ...

    
por 24.08.2009 / 23:25
0

Você pode usar WPAD (descoberta automática de proxy da Web) para distribuir diferentes arquivos proxy.pac em diferentes redes.

Mas você precisará de um servidor da Web simples em cada uma das redes e o domínio de pesquisa fornecido pelo dhcp deve ser diferente em cada uma das redes. Se cada servidor web estiver hospedando um arquivo proxy.pac diferente sob o link URL , então todos você precisa definir "autodiscover" nas configurações de proxy do navegador e reiniciar o navegador toda vez que alternar entre as redes.

Se você tiver muita sorte, seu cliente já possui uma descoberta automática de proxy de trabalho e você acabou de perder, devido à sua configuração estática de proxy.pac ...

    
por 07.11.2018 / 10:26