Pular para o conteúdo
Glossary 8 min de leitura 980 visualizações

Arquivo PAC

Entenda os arquivos PAC, a chave para a configuração automática de proxy por script. Simplifique a gestão de rede e aumente a segurança com esse método poderoso.

Arquivo PAC

Um arquivo de Proxy Auto-Configuration (PAC) é um arquivo JavaScript que navegadores e outros user agents executam para determinar qual servidor proxy, se algum, deve ser usado para uma determinada URL. Esse mecanismo permite um controle dinâmico e granular sobre como o tráfego do cliente é roteado através da infraestrutura de proxy.

Entendendo os arquivos PAC

Um arquivo PAC centraliza a lógica de configuração de proxy em um servidor web, eliminando a necessidade de configurações manuais de proxy no lado do cliente. Quando um cliente está configurado para usar um arquivo PAC, ele baixa e executa o script antes de cada requisição HTTP/HTTPS. A função principal do script, FindProxyForURL(url, host), retorna uma string indicando se deve conectar diretamente, usar um proxy específico ou usar um proxy SOCKS.

Benefícios de usar arquivos PAC

Implementar arquivos PAC oferece várias vantagens operacionais:

  • Controle granular: defina regras de roteamento específicas com base em padrões de URL, hostnames, endereços IP, horário do dia ou localização de rede.
  • Balanceamento de carga: distribua o tráfego entre múltiplos servidores proxy para evitar sobrecarga.
  • Failover: especifique servidores proxy alternativos caso o primário fique indisponível, aumentando a confiabilidade.
  • Bypass de tráfego específico: direcione certos domínios internos ou confiáveis para ignorar o proxy completamente, reduzindo latência e consumo de recursos.
  • Configuração simplificada do cliente: os clientes precisam apenas da URL do arquivo PAC, o que simplifica implantação e atualizações. Mudanças na lógica de proxy são feitas uma vez no servidor, não em cada cliente.

Estrutura e sintaxe do arquivo PAC

Um arquivo PAC é um arquivo de texto puro escrito em JavaScript, normalmente chamado proxy.pac ou wpad.dat. O núcleo de um arquivo PAC é a função FindProxyForURL(url, host), que precisa estar presente.

Função FindProxyForURL(url, host)

Essa função recebe dois argumentos:
* url: a URL completa do objeto requisitado (por exemplo, http://www.example.com/index.html).
* host: o hostname extraído da URL (por exemplo, www.example.com).

A função deve retornar um valor string:

  • DIRECT: conecta diretamente ao destino sem usar proxy.
  • PROXY <host>:<port>: usa o servidor proxy HTTP especificado.
  • SOCKS <host>:<port>: usa o servidor proxy SOCKS especificado.
  • Múltiplas opções: separe vários servidores proxy, ou um proxy e a conexão direta, com ponto e vírgula (por exemplo, PROXY proxy1.example.com:8080; PROXY proxy2.example.com:8080; DIRECT). O cliente tenta as conexões na ordem especificada.

Funções JavaScript comuns em arquivos PAC

Funções JavaScript padrão estão disponíveis, junto com várias funções específicas de navegador projetadas para a autoconfiguração de proxy:

  • isPlainHostName(host): retorna true se host não contiver um nome de domínio (por exemplo, localhost, intranet-server).
  • dnsDomainIs(host, domain): retorna true se host pertencer a domain (por exemplo, dnsDomainIs("www.example.com", ".example.com")).
  • shExpMatch(str, pattern): retorna true se str corresponder a pattern usando correspondência de expressão shell (por exemplo, shExpMatch("http://www.example.com/index.html", "http://*.example.com/*")).
  • isInNet(host, pattern, mask): retorna true se o endereço IP de host estiver dentro da rede IP especificada por pattern e mask (por exemplo, isInNet(host, "192.168.1.0", "255.255.255.0")). host pode ser um hostname ou um endereço IP.
  • myIpAddress(): retorna o endereço IP da máquina que executa o navegador. Útil para decisões de proxy baseadas em localização.
  • dnsResolve(host): resolve o hostname host para um endereço IP. Retorna uma string vazia se a resolução falhar.
  • weekdayRange(wd1, wd2, gmt): retorna true se o dia da semana atual estiver no intervalo especificado. wd1, wd2 são abreviações (por exemplo, "MON", "FRI"). gmt é opcional, para horário GMT.
  • dateRange(day1, month1, year1, day2, month2, year2, gmt): retorna true se a data atual estiver no intervalo especificado.
  • timeRange(hour1, min1, sec1, hour2, min2, sec2, gmt): retorna true se a hora atual estiver no intervalo especificado.

Exemplo de arquivo PAC

Este exemplo demonstra como ignorar domínios internos, rotear tráfego específico e implementar failover.

function FindProxyForURL(url, host) {
    // Defina seus servidores proxy
    var PRIMARY_PROXY = "PROXY proxy.example.com:8080";
    var SECONDARY_PROXY = "PROXY backup-proxy.example.com:8080";
    var SOCKS_PROXY = "SOCKS socks.example.com:1080";

    // 1. Conexao direta para hosts locais e dominios internos
    // Ignora o proxy para hostnames simples (ex.: "localhost", "intranet-server")
    if (isPlainHostName(host)) {
        return "DIRECT";
    }

    // Ignora o proxy para um dominio interno especifico
    if (dnsDomainIs(host, ".internal-domain.com")) {
        return "DIRECT";
    }

    // Ignora o proxy para faixas de IP internas especificas
    // Nota: myIpAddress() retorna o IP do cliente. Isto verifica se o *destino* e interno.
    // Para verificar o IP do cliente, use myIpAddress() e isInNet.
    if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
        isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
        isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")) {
        return "DIRECT";
    }

    // 2. Usa proxy SOCKS para aplicacoes ou protocolos especificos
    // Exemplo: rotear todo o trafego FTP por um proxy SOCKS
    if (url.substring(0, 4) == "ftp:") {
        return SOCKS_PROXY;
    }

    // 3. Roteia dominios externos especificos pelo proxy primario com failover
    // Exemplo: rotear o trafego para partner-site.com pelo proxy primario,
    // com fallback para um proxy secundario.
    if (dnsDomainIs(host, ".partner-site.com")) {
        return PRIMARY_PROXY + "; " + SECONDARY_PROXY;
    }

    // 4. Bloqueia URLs especificas (retornando um proxy inexistente ou um erro)
    // Nota: alguns navegadores podem tratar "PROXY 0.0.0.0:0" como bloqueio.
    // Um mecanismo de bloqueio mais robusto normalmente e tratado pelo proprio proxy.
    if (shExpMatch(url, "*bad-site.com*")) {
        // Retorna um proxy inexistente para bloquear de fato, ou use um proxy de bloqueio dedicado
        return "PROXY 127.0.0.1:1"; // Ou um proxy de bloqueio dedicado
    }

    // 5. Regra padrao: todo o restante do trafego passa pelo proxy primario com failover
    return PRIMARY_PROXY + "; " + SECONDARY_PROXY + "; DIRECT";
}

Implantação e distribuição

Para que os clientes usem um arquivo PAC, eles precisam estar configurados para obtê-lo.

Via servidor HTTP/HTTPS

O método mais comum é hospedar o arquivo PAC em um servidor web padrão (Apache, Nginx, IIS) e configurar os navegadores ou sistemas operacionais dos clientes com a sua URL.
* Configuração do servidor: garanta que o servidor entregue o arquivo PAC com o MIME type correto: application/x-ns-proxy-autoconfig.
* Configuração do cliente: nas configurações do navegador (ou nas configurações de rede do SO), selecione a opção "Usar script de configuração automática de proxy" e informe a URL completa (por exemplo, http://proxyconfig.example.com/proxy.pac).

Web Proxy Auto-Discovery Protocol (WPAD)

O WPAD permite que os clientes descubram automaticamente a URL do arquivo PAC sem configuração manual. Isso normalmente envolve:
1. DNS: criar uma entrada DNS para wpad.<domain> que aponte para o servidor web que hospeda o wpad.dat.
2. DHCP: configurar uma opção DHCP (opção 252) para fornecer a URL do arquivo PAC.

Embora conveniente, o WPAD tem implicações de segurança (por exemplo, potencial para servidores WPAD maliciosos) e muitas vezes é desabilitado ou usado com cautela. A configuração direta da URL é geralmente preferida por segurança e controle explícito.

Group Policy Objects (GPO) para Windows

Em domínios Windows, as URLs de arquivos PAC podem ser distribuídas centralmente para as máquinas cliente via Group Policy:
* Navegue até User Configuration > Policies > Windows Settings > Internet Explorer Maintenance > Connection > Proxy Settings.
* Habilite "Automatic configuration" e informe a URL do arquivo PAC.

Solução de problemas com arquivos PAC

Problemas com arquivos PAC geralmente vêm de erros de sintaxe, cache ou problemas de rede.

  • Erros de sintaxe: até erros mínimos de JavaScript podem impedir o funcionamento do arquivo PAC. Use um linter JavaScript ou um validador dedicado de arquivos PAC. Os navegadores podem registrar erros no console de desenvolvedor (por exemplo, F12 no Chrome/Firefox).
  • MIME type incorreto: se o servidor web entregar o arquivo PAC com um MIME type incorreto, os clientes podem não processá-lo corretamente. Verifique application/x-ns-proxy-autoconfig.
  • Problemas de cache: os navegadores fazem cache agressivo de arquivos PAC. Ao fazer alterações, limpe o cache do navegador ou force uma atualização (por exemplo, Ctrl+F5). Alguns navegadores oferecem uma opção para desabilitar o cache de arquivos PAC durante a depuração.
  • Acessibilidade de rede: garanta que o cliente consiga alcançar o servidor web que hospeda o arquivo PAC. Verifique a resolução DNS e as regras de firewall.
  • Função FindProxyForURL: confirme que a função FindProxyForURL(url, host) está corretamente definida e retorna strings de proxy válidas.
  • Ferramentas de teste: as ferramentas de desenvolvedor do navegador (aba Network) mostram qual proxy foi usado em uma requisição. Testadores online de arquivos PAC podem simular requisições contra o seu script.

Arquivo PAC vs. outros métodos de configuração de proxy

Recurso Arquivo PAC Configurações diretas de proxy WPAD
Método de configuração URL de script JavaScript Entrada manual de IP/porta Descoberta automática via DNS/DHCP
Controle granular Alto (baseado em lógica) Baixo (todo o tráfego vai para um proxy ou direto) Alto (usa arquivo PAC)
Failover/balanceamento Sim (embutido na lógica do script) Não (proxy único) Sim (embutido na lógica do arquivo PAC)
Regras de bypass Sim (embutidas na lógica do script) Lista manual de exclusões Sim (embutidas na lógica do arquivo PAC)
Complexidade de implantação Moderada (hospedar arquivo no servidor web, configurar URL) Baixa (manual por cliente) Alta (configuração DNS/DHCP, servidor web)
Manutenção Centralizada (editar script no servidor) Descentralizada (manual por cliente) Centralizada (editar script no servidor, DNS/DHCP)
Considerações de segurança Injeção de script, distribuição não criptografada Básicas Spoofing de DNS/DHCP (risco maior), injeção de script

Considerações de segurança

  • Integridade: arquivos PAC contêm informações sensíveis de roteamento. Garanta que o arquivo PAC esteja hospedado em um servidor web seguro e confiável e seja entregue por HTTPS, para evitar adulteração ou interceptação durante o download.
  • Scripts maliciosos: um arquivo PAC comprometido pode redirecionar o tráfego do cliente para proxies maliciosos, facilitando ataques man-in-the-middle, coleta de credenciais ou exfiltração de dados. Use apenas arquivos PAC de fontes confiáveis.
  • Divulgação de informações: evite incluir detalhes sensíveis da rede interna em arquivos PAC de acesso público. Embora o arquivo em si seja código, sua lógica pode revelar a topologia da rede.
  • Vulnerabilidades do WPAD: o mecanismo de descoberta automática do WPAD pode ser explorado se um atacante controlar respostas DNS ou DHCP, direcionando clientes para um servidor WPAD malicioso. Use WPAD com cautela e com medidas de segurança adequadas.
Atualizado: 03.03.2026
Voltar à categoria

Leia também

Glossary 3 min

O que é um proxy móvel? Proxies 4G/5G explicados

Um proxy móvel roteia o tráfego através de um dispositivo 4G/5G real, te dando um IP de operadora compartilhado por milhares de usuários reais — o tipo mais difícil de bloquear. Veja como funcionam e quando usá-los.

Glossary 3 min

O que é um proxy ISP? Proxies residenciais estáticos explicados

Um proxy ISP é um IP estático hospedado em datacenter mas registrado em um ISP residencial — confiança residencial com velocidade de datacenter e IP fixo. Veja como funcionam e quando usá-los.

Glossary 3 min

Proxy HTTP vs HTTPS: qual é a diferença?

Um proxy HTTP pode ler seu tráfego web; um proxy HTTPS o tunela criptografado via CONNECT. Veja a diferença real, o que o proxy consegue ver e qual usar.

Glossary 4 min

O que é um proxy? Guia completo para iniciantes

Um servidor proxy é um intermediário que esconde seu IP real roteando o tráfego por outro IP. Veja como os proxies funcionam, os principais tipos e como escolher o certo.

Glossary 4 min

SOCKS5 vs proxy HTTP: diferenças, velocidade e quando usar cada um

Proxies SOCKS5 e HTTP resolvem problemas diferentes. Um proxy HTTP entende tráfego web e consegue cacheá-lo ou filtrá-lo; o SOCKS5 encaminha às cegas qualquer conexão TCP/UDP — torrents, jogos, e-mail, não só navegação. Nenhum dos dois criptografa o tráfego sozinho. Veja exatamente quando cada um ganha.

Glossary 1 min

CDN e proxies: como funcionam

CDN e proxies — como funcionam juntos — um termo da área de proxies e tecnologias de rede.

Experimente nossos proxies

20,000+ proxies em 100+ países do mundo

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.