Recentemente fui contratado em uma grande corporação onde preciso de uma VPN para acessar e-mail e outros recursos vitais. Quando conectado à VPN, preciso de uma ampla variedade de proxies HTTP para acessar vários URLs. Em PCs com Windows, isso é configurado automaticamente usando um arquivo PAC, para que tudo funcione conforme o esperado. No Linux...
Eu posso usar este arquivo PAC para fazer meu navegador se comportar corretamente:
chromium --proxy-pac-url="http://proxy.corporation.com/proxy.pac"
Mas o resto do meu sistema é SOL e não pode acessar nada, a menos que eu especifique manualmente um proxy HTTP como:
http_proxy="http://foo.corporation.com" https_proxy="http://foo.corporation.com" slack
Escusado será dizer que isso é extremamente impraticável e preciso reiniciar todos os meus aplicativos quando me conecto ou desconecto da VPN.
A única solução "limpa" e um tanto prática que posso imaginar é executar um servidor proxy local e definir permanentemente todas as variáveis de ambiente proxy para usá-lo. Posso então configurar esse servidor proxy com base em qual rede estou conectado, sem precisar reiniciar nenhum dos meus aplicativos.
O servidor proxy precisaria oferecer suporte a arquivos PAC ou, pelo menos, ser configurável o suficiente para que eu mesmo configurasse manualmente as regras especificadas no arquivo PAC (ou por meio de um script).
Esses servidores proxy existem?
Sim, existem projetos como o pacproxy . Um proxy amplamente usado, Shadowsocks , também usa PAC internamente.