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 ...