Introdução: o que você vai conseguir no final

Se você trabalha com proxies móveis no Mac, mais cedo ou mais tarde vai esbarrar sempre na mesma situação. Você colocou o endereço e a porta nas configurações do Wi-Fi, o site mostrou um novo IP, você ficou feliz. E depois descobre que o Terminal baixa pacotes direto, o git acessa pelo endereço antigo e metade dos aplicativos nem percebeu a mudança. Este guia resolve o problema por completo.

Depois de ler e executar todos os passos, você terá um proxy configurado no macOS que funciona em três níveis ao mesmo tempo:

  • No nível do sistema: Safari, Chrome, e-mail, mensageiros e outros programas que respeitam as configurações do sistema.
  • No nível do Terminal: comandos networksetup para ligar, desligar e trocar o proxy sem um único clique do mouse.
  • No nível das ferramentas de desenvolvimento: curl, git, Homebrew, pip, npm e outros utilitários que leem variáveis de ambiente, e não as configurações do sistema.

Vamos tratar separadamente da lista de exceções. É aquele campo por causa do qual parte do tráfego passa fora do proxy, mesmo que você não tenha configurado nada de propósito. Você vai entender como ele funciona, o que adicionar, o que remover e como verificar que nenhuma requisição está escapando direto onde não deveria.

Para quem é este guia

O guia foi escrito para iniciantes. Se você nunca abriu o Terminal, não tem problema: cada comando será explicado letra por letra e diremos o que ele faz. O guia vai ser útil para:

  • profissionais de marketing e especialistas em redes sociais que gerenciam vários projetos a partir de IPs diferentes;
  • afiliados que precisam trocar de geolocalização rapidamente e testar criativos;
  • desenvolvedores que testam aplicativos e APIs através de proxies móveis;
  • donos de negócio que querem entender de uma vez por todas e não chamar um especialista a cada troca de proxy.

Para usuários experientes, no final há um bloco com técnicas avançadas: localizações de rede, arquivos PAC, aliases no shell e scripts de rotação automática.

O que você precisa saber antes

Nada complicado. Basta saber abrir os Ajustes do Sistema e copiar texto. Todo o resto é explicado ao longo do caminho. Não vamos tratar das configurações de navegadores específicos nem de navegadores antidetect: há materiais separados no blog sobre isso. Aqui falamos apenas do macOS como sistema e de suas ferramentas nativas.

Quanto tempo vai levar

A configuração básica pelos Ajustes do Sistema leva 10 minutos. A configuração do Terminal e das ferramentas de desenvolvimento, mais 15-20 minutos. A verificação completa e a análise das exceções, cerca de 10 minutos. No total, 30-40 minutos se você fizer tudo com calma e com verificações.

Preparação preliminar

Antes de mudar qualquer coisa no sistema, vamos reunir tudo o que é necessário. Uma boa preparação economiza mais tempo do que qualquer truque.

O que você vai precisar

  • Mac com macOS Ventura 13 ou mais recente. Todos os exemplos foram testados no macOS Sonoma 14, Sequoia 15 e Tahoe 26. Em versões mais antigas, com o aplicativo Ajustes do Sistema em formato de grade de ícones, o caminho até o proxy é um pouco diferente, e vamos indicar a diferença separadamente.
  • Dados do proxy móvel. São o endereço do servidor (domínio ou IP), porta, login e senha. Proxies móveis normalmente têm duas portas: uma para o protocolo HTTP, outra para SOCKS5. Tenha as duas à mão.
  • Link para troca de IP, se o seu provedor fornecer. Vai ser útil na seção sobre automação.
  • Direitos de administrador no Mac. Para alterar o proxy do sistema pelo Terminal, o macOS vai pedir a senha do usuário.
  • Editor de texto para anotações. Pode ser o TextEdit padrão ou o app Notas.

O que verificar antes de começar

  1. Confirme que a internet funciona sem proxy. Abra qualquer site no Safari. Se não abrir, primeiro resolva o problema de rede, senão depois não vai dar para saber o que exatamente quebrou.
  2. Descubra por qual interface você está conectado: Wi-Fi ou cabo Ethernet. Abra os Ajustes do Sistema, seção Rede. A conexão ativa está marcada com um ponto verde e a palavra Conectado. Anote o nome: geralmente é Wi-Fi ou Ethernet.
  3. Verifique seu IP atual sem proxy. Abra no navegador qualquer serviço de verificação de IP e anote o endereço. Vamos comparar o resultado com ele.

Backup das configurações atuais

As configurações de proxy no macOS são revertidas facilmente, mas é melhor registrar o estado inicial. Especialmente se você trabalha em um Mac corporativo, onde o administrador do sistema pode ter configurado algo antes.

  1. Abra o Terminal. Pressione Command e espaço, digite a palavra Terminal e pressione Enter.
  2. Copie e cole o comando, depois pressione Enter:
scutil --proxy > ~/Desktop/proxy_backup.txt

Aparecerá na Mesa o arquivo proxy_backup.txt com a descrição completa das configurações atuais de proxy. Se você estragar algo, sempre poderá conferir os valores com esse arquivo.

Dica: Crie imediatamente no Notas um cartão com os dados do proxy: host, porta HTTP, porta SOCKS5, login, senha, link de rotação. Você vai consultar isso dezenas de vezes. Não armazene a senha em texto aberto em documentos compartilhados.

Conceitos básicos: o que você precisa entender antes de começar

Aqui estão alguns termos sem os quais os próximos passos viram mágica. Leia obrigatoriamente, mesmo que você ache que já sabe.

Servidor proxy

É um intermediário entre o seu Mac e a internet. Em vez de ir direto ao site, sua requisição primeiro vai para o servidor proxy e só depois para o site. O site vê o endereço IP do proxy, e não o seu. O proxy móvel se diferencia por ter um IP pertencente a uma operadora de celular, e para os sites você parece um usuário comum de smartphone.

Proxy HTTP e proxy SOCKS5

São duas formas diferentes de se comunicar com o servidor proxy. O proxy HTTP entende tráfego web, funciona com sites e a maioria dos aplicativos. No macOS ele é dividido em dois botões: Proxy Web (HTTP) para sites comuns e Proxy Web Seguro (HTTPS) para sites com criptografia. Na prática, coloca-se o mesmo endereço e a mesma porta nos dois campos.

O proxy SOCKS5 funciona mais abaixo, no nível das conexões, e passa qualquer tráfego, não apenas web. Ele é útil para o Terminal, mensageiros, jogos. Um detalhe importante do macOS: os ajustes do sistema permitem informar login e senha para o SOCKS, mas muitos aplicativos não suportam essa autenticação via SOCKS do sistema. Por isso, nas configurações do sistema vamos usar HTTP, e deixaremos o SOCKS5 para o Terminal e programas específicos.

Proxy do sistema

São as configurações armazenadas no macOS para uma interface de rede específica. Safari, Chrome, Mail, App Store e a maioria dos aplicativos em Swift e Objective-C as leem automaticamente. Mas não todos. Programas escritos em Python, Go, Node.js, bem como utilitários clássicos do Unix como curl e git, ignoram as configurações do sistema. Eles olham para as variáveis de ambiente.

Variáveis de ambiente

São valores nomeados que vivem na sua sessão do Terminal. Por exemplo, a variável http_proxy diz aos utilitários: envie todo o tráfego HTTP para este endereço. As variáveis existem apenas na janela do Terminal aberta, a menos que você as grave em um arquivo de configuração do shell. Haverá um passo separado sobre isso.

Lista de exceções

No macOS ela se chama Não usar proxy para estes hosts e domínios. Todos os endereços dessa lista são enviados diretamente pelo sistema, sem passar pelo proxy. Por padrão, já existem entradas *.local e 169.254/16, que respondem pela rede local e não devem ser removidas. O problema começa quando entram máscaras desnecessárias na lista ou quando você espera que as exceções funcionem no Terminal. Não vão funcionar: o Terminal tem sua própria lista, a variável no_proxy. Vamos tratar de tudo isso.

Serviço de rede

É assim que o macOS chama cada interface: Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB. O proxy é configurado separadamente para cada serviço. Se você configurou o Wi-Fi e depois conectou o cabo, o proxy para de funcionar. Essa é uma das causas mais frequentes da pergunta sobre por que o proxy no macOS funciona às vezes e às vezes não.

Passo 1: Verificamos os dados do proxy antes de configurar o sistema

Objetivo desta etapa: confirmar que o proxy está ativo e que o login e a senha estão corretos. Isso evita perder meia hora procurando erro nas configurações quando o problema era um erro de digitação na senha.

Vamos verificar com o curl. Esse utilitário já vem no macOS, não precisa instalar nada.

  1. Abra o Terminal, se ainda não estiver aberto.
  2. Pegue os dados do proxy no seu cartão. Como exemplo, usaremos valores hipotéticos: host proxy.example.net, porta HTTP 10000, porta SOCKS5 10001, login user123, senha pass456. Substitua pelos seus dados reais em vez destes.
  3. Digite o comando para verificar a porta HTTP e pressione Enter:
curl -x http://user123:pass456@proxy.example.net:10000 https://ifconfig.me

Vamos entender o que está escrito aqui. A opção -x informa ao curl o endereço do proxy. Depois vem o protocolo http, em seguida login, dois-pontos, senha, o símbolo arroba, o host, dois-pontos, a porta. No final, o endereço do serviço que devolve na resposta o IP de onde veio a requisição.

  1. Depois de 1-3 segundos, aparecerá um endereço IP no Terminal. É o IP do seu proxy móvel. Se for diferente do que você anotou na preparação, está tudo funcionando.
  2. Agora verifique a porta SOCKS5 com o mesmo comando, trocando o protocolo e a porta:
curl -x socks5h://user123:pass456@proxy.example.net:10001 https://ifconfig.me

Preste atenção na letra h em socks5h. Ela significa que os nomes de domínio serão resolvidos do lado do proxy, e não no seu Mac. Para proxies móveis, essa é a opção correta: assim você não deixa requisições de DNS para o seu provedor de casa.

Atenção: Se a senha tiver os caracteres arroba, dois-pontos, barra, cerquilha, ponto de interrogação ou porcentagem, eles precisam ser codificados. Substitua arroba por %40, dois-pontos por %3A, cerquilha por %23, ponto de interrogação por %3F, porcentagem por %25. Caso contrário, o curl vai dividir a string de forma errada e achar que a senha terminou antes do tempo.

Possíveis problemas nesta etapa

  • Resposta Received HTTP code 407 from proxy after CONNECT. O proxy rejeita a autenticação. Verifique login e senha, observe os caracteres especiais. Confirme que no painel do provedor não está habilitada a autenticação por IP em vez de login e senha.
  • Resposta Failed to connect ou Connection timed out. Host ou porta incorretos, ou o proxy está desligado. Confira no painel do provedor. Tente outra porta.
  • O comando travou sem saída. Aguarde 30 segundos. Redes móveis às vezes são lentas. Se nada acontecer, pressione Control e C para interromper e verifique os dados.

Verificação: Os dois comandos curl retornaram um endereço IP diferente do seu IP de casa. Pode seguir adiante. Se ao menos um não funcionou, não faz sentido continuar: o sistema vai usar os mesmos dados.

Passo 2: Configuramos o proxy pelos Ajustes do Sistema do macOS

Objetivo desta etapa: fazer com que Safari, Chrome e todos os aplicativos que respeitam o proxy do sistema acessem a internet através do seu proxy móvel.

Abrimos a tela necessária

  1. Clique no ícone da Apple no canto superior esquerdo da tela e escolha Ajustes do Sistema.
  2. Na coluna da esquerda, clique em Wi-Fi, se você estiver conectado por rede sem fio. Se for por cabo, clique em Rede e depois em Ethernet.
  3. Encontre o nome da sua rede. À direita dela há um botão Detalhes com três pontos ou com a inscrição. Clique nele.
  4. Vai abrir uma janela com os parâmetros da conexão. Na coluna da esquerda dessa janela, escolha o item Proxy. Ele fica no final da lista, depois de TCP/IP, DNS e WINS.

Você verá uma lista de botões: Detecção automática de proxy, Configuração automática de proxy, Proxy web (HTTP), Proxy web seguro (HTTPS), Proxy FTP, Proxy SOCKS, Proxy de streaming (RTSP), Proxy Gopher. Embaixo, o campo Não usar proxy para estes hosts e domínios.

Se você tem uma versão mais antiga do macOS, onde os Ajustes do Sistema aparecem como uma grade de ícones, o caminho é: Ajustes do Sistema, Rede, escolha a interface à esquerda, botão Avançado, aba Proxy. Daí em diante tudo é igual.

Ativamos o proxy HTTP

  1. Clique no botão Proxy web (HTTP). Ele vai ficar azul e os campos de entrada aparecerão abaixo.
  2. No campo Servidor, digite o host do seu proxy, por exemplo proxy.example.net. Sem http://, sem barras, apenas o host.
  3. No campo Porta à direita, digite a porta HTTP, por exemplo 10000.
  4. Ative o botão O proxy requer senha.
  5. No campo Nome de usuário, digite o login. No campo Senha, digite a senha. Aqui não é preciso codificar caracteres especiais, digite como está.

Ativamos o proxy HTTPS

A maioria dos sites hoje funciona via HTTPS, então este item é obrigatório. Sem ele, o tráfego criptografado vai direto e você vai se perguntar por que alguns sites veem o proxy e outros veem o seu IP real.

  1. Clique no botão Proxy web seguro (HTTPS).
  2. Digite o mesmo host e a mesma porta que usou para HTTP. Proxies móveis tratam os dois tipos de tráfego na mesma porta.
  3. Ative O proxy requer senha e digite login e senha novamente.

Sobre o proxy SOCKS e os outros botões

Deixe o botão Proxy SOCKS desligado nos ajustes do sistema, se você tiver HTTP e HTTPS ativados. O motivo é que, com o SOCKS do sistema ligado, alguns aplicativos passam a preferi-lo, e a autenticação via SOCKS do sistema não é suportada por todos. Resultado: parte dos programas perde acesso à rede. FTP, RTSP e Gopher não precisam ser tocados, são protocolos obsoletos. Deixe também Detecção automática e Configuração automática desligados, senão podem sobrescrever seus valores manuais.

Salvamos

  1. Clique no botão OK no canto inferior direito da janela.
  2. Se o sistema pedir a senha do seu usuário Mac, digite-a. Isso é normal: alterar configurações de rede exige direitos de administrador.
  3. Feche completamente o Safari ou o Chrome e abra de novo. Os navegadores fazem cache das configurações de proxy ao iniciar.

Dica: Na primeira requisição através do proxy, o macOS pode mostrar uma janela do sistema pedindo login e senha do proxy, mesmo que você já os tenha digitado. Digite os dados e marque a caixa Lembrar no Acesso às Chaves. Depois disso a janela não aparecerá mais.

Verificação: Abra no Safari um serviço de verificação de IP. O endereço deve coincidir com o que o comando curl retornou no Passo 1. Confira também uma página com detecção de operadora: deve aparecer uma operadora de celular, e não o seu provedor de casa.

Possíveis problemas

  • Os sites não abrem de jeito nenhum. Verifique se você ativou justamente HTTP e HTTPS, e não FTP ou SOCKS. Confira a porta. Desligue temporariamente os dois botões e confirme que a internet voltou: assim você entende que o problema está nas configurações do proxy, e não na rede.
  • Aparece constantemente a janela de senha. A senha foi digitada errada ou tem um espaço no final depois de copiar. Apague o conteúdo do campo, digite a senha de novo manualmente.
  • O IP não mudou. Provavelmente você configurou a interface errada. Volte à seção Rede e verifique qual serviço está marcado como Conectado.

Passo 3: Configuramos a lista de exceções corretamente

Objetivo desta etapa: entender qual tráfego o sistema deixa passar fora do proxy e ajustar a lista para que os serviços locais funcionem e o tráfego externo não vaze.

O campo Não usar proxy para estes hosts e domínios fica na parte de baixo da tela Proxy. Por padrão, contém: *.local, 169.254/16. Muitos usuários ou nem olham para ele, ou começam a digitar qualquer coisa ali.

Como ler a lista

  • *.local significa todos os endereços que terminam em .local. São dispositivos da sua rede doméstica: impressora, disco de rede, outros Macs. Não dá para acessá-los através de um proxy externo, então a entrada é necessária.
  • 169.254/16 significa a faixa de endereços de serviço que o Mac atribui a si mesmo quando não recebe um endereço do roteador. Também é uma questão local.
  • As entradas são separadas por vírgulas. Espaços depois das vírgulas são permitidos.
  • O asterisco substitui qualquer parte do nome. A entrada *.example.com exclui todos os subdomínios de example.com, mas não o próprio example.com. Para ele, é preciso uma entrada separada.
  • É possível informar endereços IP e sub-redes no formato endereço/máscara, por exemplo 192.168.0.0/16 para toda a rede de casa.

O que vale a pena adicionar

  1. Clique no campo de exceções após a última entrada.
  2. Adicione, separados por vírgula, localhost e 127.0.0.1. Sem eles, servidores web locais de desenvolvedores e painéis administrativos no seu Mac vão tentar passar pelo proxy móvel e vão falhar.
  3. Se você usa dispositivos domésticos por IP, adicione sua sub-rede local. Geralmente é 192.168.0.0/16 ou 10.0.0.0/8. Para ver seu endereço local, confira na tela TCP/IP na mesma janela.
  4. Clique em OK.

A lista final para a maioria dos usuários fica assim: *.local, 169.254/16, localhost, 127.0.0.1, 192.168.0.0/16.

O que não convém adicionar

Aqui começa o que no título foi chamado de contorno das exceções. Trata-se das situações em que o tráfego passa fora do proxy não porque você quis, mas porque a lista foi montada sem cuidado.

  • Não insira um asterisco sozinho nem *.com. Essa máscara vai desligar o proxy para praticamente toda a internet, e os botões vão continuar azuis, e você vai achar que está tudo funcionando.
  • Não insira domínios dos serviços com os quais você trabalha. Se você adicionar *.facebook.com para acelerar o carregamento, o site vai ver o seu IP real. Para tarefas de múltiplas contas, isso é crítico.
  • Não insira o host do próprio proxy. Não faz sentido: a conexão com o proxy já acontece de forma direta.
  • Não remova *.local e 169.254/16. Vai quebrar o AirDrop, a impressão, o acesso ao roteador.

Atenção: A lista de exceções nos ajustes do sistema funciona apenas para aplicativos que usam o proxy do sistema. O Terminal, o curl, o git e scripts em Python não a veem. Eles têm sua própria lista, a variável no_proxy, configurada separadamente. Vamos chegar nela no Passo 5. Se você espera que uma entrada na lista do sistema afete um script, vai se decepcionar.

Dica: Abra periodicamente a lista de exceções e verifique-a a olho. Alguns utilitários corporativos e agentes de gerenciamento de dispositivos adicionam seus domínios na instalação. Descobrir uma máscara desnecessária como *.com em dez segundos é mais fácil do que passar uma semana procurando a causa do vazamento de IP.

Verificação: Abra no navegador o endereço http://localhost ou qualquer página local que você tenha. Ela deve abrir instantaneamente, sem erro de proxy. Depois abra um serviço externo de verificação de IP: ele ainda deve mostrar o IP do proxy móvel.

Passo 4: Gerenciamos o proxy pelo Terminal com o comando networksetup

Objetivo desta etapa: aprender a ligar, desligar e trocar o proxy do sistema com um único comando, sem mouse e sem dez cliques nas configurações. É aquela habilidade que, em um mês, paga o tempo gasto lendo esta seção.

O macOS tem um utilitário nativo, o networksetup. Ele faz exatamente o mesmo que os Ajustes do Sistema, mas pela linha de comando. Tudo o que você configurou no Passo 2 pode ser repetido, alterado ou cancelado com uma linha.

Descobrimos o nome exato do serviço de rede

  1. No Terminal, digite o comando e pressione Enter:
networksetup -listallnetworkservices

Você verá uma lista como: Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB. Encontre aquele pelo qual você está conectado. Daqui em diante nos comandos usaremos Wi-Fi. Se o seu serviço tiver outro nome, substitua pelo nome dele. Se o nome tiver espaço, como Thunderbolt Bridge, coloque-o entre aspas duplas.

Vemos as configurações atuais

networksetup -getwebproxy Wi-Fi

Como resposta, você verá quatro linhas: Enabled: Yes ou No, Server, Port, Authenticated Proxy Enabled. Se você executou o Passo 2, Enabled será Yes, e o servidor e a porta coincidirão com o que foi digitado. O mesmo vale para HTTPS:

networksetup -getsecurewebproxy Wi-Fi

Ativamos o HTTP e o HTTPS com um único comando

O formato do comando é: networksetup, ação, serviço, host, porta, ativar autorização, login, senha.

networksetup -setwebproxy Wi-Fi proxy.example.net 10000 on user123 pass456
networksetup -setsecurewebproxy Wi-Fi proxy.example.net 10000 on user123 pass456

Digite os dois comandos, um após o outro. Após cada um, o sistema pode pedir a senha do usuário Mac. Digite-a, os caracteres não aparecem na tela, é normal. Pressione Enter.

A palavra on depois da porta ativa a autorização. Se o seu proxy usar autenticação por IP, e não por login, escreva off e não informe login nem senha.

Desligamos e ligamos o proxy sem perder as configurações

O par de comandos mais útil. Eles não apagam host nem porta, apenas movem o botão:

networksetup -setwebproxystate Wi-Fi off
networksetup -setsecurewebproxystate Wi-Fi off

Para ligar de novo, troque off por on. Assim você coloca o Mac em modo de conexão direta e volta em dois segundos.

Gerenciamos a lista de exceções pelo Terminal

Ver a lista atual:

networksetup -getproxybypassdomains Wi-Fi

Definir uma nova lista inteira. O comando substitui todas as entradas, então liste o conjunto completo separado por espaços:

networksetup -setproxybypassdomains Wi-Fi "*.local" "169.254/16" localhost 127.0.0.1 "192.168.0.0/16"

As entradas com asterisco e barra vão entre aspas para o shell não tentar interpretá-las. Limpar a lista por completo pode ser feito com a palavra Empty no lugar dos domínios, mas lembre-se: nesse caso os endereços locais vão passar pelo proxy e vão parar de funcionar.

Comando universal de visualização

O utilitário scutil mostra todas as configurações de proxy em um só lugar, incluindo as exceções:

scutil --proxy

Procure as linhas HTTPEnable, HTTPProxy, HTTPPort, HTTPSEnable, ExceptionsList. O valor 1 significa ligado, 0 desligado. Foi exatamente esse comando que usamos para o backup.

Dica: Abra os Ajustes do Sistema na tela Proxy e execute qualquer comando networksetup no Terminal do lado. Você vai ver os botões mudarem em tempo real. Essa é a melhor forma de confirmar que o Terminal e a interface gráfica gerenciam os mesmos dados.

Possíveis problemas

  • Erro: Wi-Fi is not a recognized network service. O serviço tem outro nome. Execute networksetup -listallnetworkservices e copie o nome exato.
  • O comando funcionou, mas nada mudou nas configurações. Feche e reabra a janela dos Ajustes do Sistema, ela nem sempre atualiza na hora.
  • Pede senha e diz Sorry, try again. Está sendo pedida a senha do usuário Mac, não a senha do proxy. Os caracteres não aparecem, basta digitar e pressionar Enter.

Verificação: Execute networksetup -setwebproxystate Wi-Fi off, atualize o serviço de verificação de IP no navegador e veja seu IP de casa. Execute o mesmo comando com on, atualize a página e veja o IP do proxy. Se a alternância funcionar nos dois sentidos, esta etapa está concluída.

Passo 5: Configuramos o proxy para curl, git, Homebrew, pip e npm

Objetivo desta etapa: fazer as ferramentas de linha de comando funcionarem através do proxy. É aqui que se perde mais tráfego, porque esses programas não olham para as configurações do sistema.

Por que o proxy do sistema não funciona aqui

Utilitários como curl, wget, git, pip, npm, brew foram escritos para funcionar em todos os sistemas Unix. Eles não sabem do macOS nem dos seus Ajustes do Sistema. Em vez disso, leem variáveis de ambiente com os nomes http_proxy, https_proxy, all_proxy e no_proxy. Se as variáveis não existem, o tráfego vai direto. Os botões nas configurações podem estar azuis o quanto quiserem.

Ativação temporária na janela atual do Terminal

Digite os três comandos em sequência:

export http_proxy=http://user123:pass456@proxy.example.net:10000
export https_proxy=http://user123:pass456@proxy.example.net:10000
export no_proxy=localhost,127.0.0.1,*.local

O primeiro direciona o tráfego HTTP para o proxy. O segundo direciona o tráfego HTTPS para o mesmo lugar. Atenção: no valor de https_proxy o protocolo também é http, porque é o protocolo de comunicação com o proxy, e não com o site. O terceiro define exceções para o Terminal. Essa é justamente a lista separada de que falamos no Passo 3.

Alguns programas leem as variáveis apenas em maiúsculas. Para não ficar na dúvida, defina também essas:

export HTTP_PROXY=$http_proxy HTTPS_PROXY=$https_proxy NO_PROXY=$no_proxy

Agora teste sem a opção -x:

curl https://ifconfig.me

Se retornou o IP do proxy, as variáveis funcionam. Todos os programas iniciados a partir desta janela do Terminal agora vão passar pelo proxy móvel. Se você fechar a janela, as variáveis desaparecem.

Ativação permanente pelo arquivo de configuração do shell

No macOS moderno, o shell padrão é o zsh, e suas configurações ficam no arquivo .zshrc na sua pasta pessoal. Tudo o que está gravado ali é executado ao abrir cada nova janela do Terminal.

  1. Abra o arquivo no editor nano com o comando:
nano ~/.zshrc
  1. Com as setas, desça até o final do arquivo.
  2. Cole as linhas export da seção anterior.
  3. Pressione Control e O, depois Enter, para salvar. Pressione Control e X para sair.
  4. Aplique as mudanças sem reiniciar:
source ~/.zshrc

Atenção: No .zshrc a senha fica armazenada em texto aberto. Se o Mac for compartilhado ou se você mantém o arquivo em sincronização na nuvem, pense duas vezes. A alternativa intermediária está descrita no bloco de configurações avançadas: aliases que ativam o proxy por um comando curto, em vez de automaticamente.

Git

O Git sabe ler variáveis de ambiente, mas é mais confiável definir as configurações na configuração dele:

git config --global http.proxy http://user123:pass456@proxy.example.net:10000

Desativar:

git config --global --unset http.proxy

Essa configuração afeta as operações clone, pull, push por HTTPS. Para acesso SSH a repositórios é preciso outra abordagem, que está no bloco avançado.

Homebrew

O Brew depende inteiramente das variáveis de ambiente. Se você as definiu no .zshrc, não precisa fazer nada a mais. Verifique com o comando brew update: a atualização deve passar sem erro de conexão.

pip

O instalador do Python também lê variáveis de ambiente. Para uma execução única através do proxy, sem variáveis, use a opção:

pip install --proxy http://user123:pass456@proxy.example.net:10000 requests

npm

O gerenciador de pacotes do Node.js armazena as configurações separadamente:

npm config set proxy http://user123:pass456@proxy.example.net:10000
npm config set https-proxy http://user123:pass456@proxy.example.net:10000

Desativar: npm config delete proxy e npm config delete https-proxy.

SOCKS5 para o Terminal

Se você quer passar o tráfego do terminal pela porta SOCKS5, em vez de http_proxy e https_proxy defina uma única variável:

export all_proxy=socks5h://user123:pass456@proxy.example.net:10001

O curl e muitos utilitários a entendem. Mas não todos: o git por HTTPS nem sempre lê a variável all_proxy, e o pip não entende SOCKS sem pacote adicional. Para universalidade, recomendamos a opção HTTP para iniciantes.

Dica: Adicione ao .zshrc a linha alias myip='curl -s https://ifconfig.me; echo' e depois digite myip para ver o IP atual do Terminal em um segundo. Isso economiza dezenas de verificações por dia.

Verificação: Abra uma nova janela do Terminal. Execute curl https://ifconfig.me e git config --global --get http.proxy. O primeiro comando retorna o IP do proxy, o segundo mostra o endereço do proxy. Isso significa que as ferramentas estão configuradas e as configurações sobrevivem ao reinício.

Passo 6: Encontramos o tráfego que passa fora do proxy e corrigimos

Objetivo desta etapa: confirmar que nenhum aplicativo do seu conjunto de trabalho acessa a internet diretamente sem o seu conhecimento. Aqui vamos sistematizar todas as causas de vazamento e verificar cada uma.

Causa 1: aplicativo com configurações de proxy próprias

Alguns programas ignoram o proxy do sistema e as variáveis de ambiente porque têm suas próprias configurações. Exemplos clássicos: Telegram Desktop, Firefox, Discord, alguns clientes de e-mail, clientes de torrent, navegadores antidetect. Cada um deles tem uma seção Rede ou Proxy nas configurações.

  1. Faça uma lista dos aplicativos com os quais você trabalha.
  2. Abra cada um e encontre a seção de configurações de rede. Se houver a opção Usar configurações de proxy do sistema, escolha-a. Se houver apenas entrada manual, informe host, porta, login e senha.
  3. Verifique o IP dentro do aplicativo, se ele permitir, ou através de um serviço de verificação aberto nesse aplicativo.

As configurações de navegadores específicos e de antidetects são tratadas separadamente no blog, aqui não as repetimos. O importante é entender o princípio: em cada aplicativo é preciso verificar de onde ele tira o proxy.

Causa 2: aplicativo iniciado fora do Terminal

As variáveis de ambiente do .zshrc valem apenas para programas iniciados a partir do Terminal. Se você inicia um script com duplo clique, pela IDE ou por um agendador, as variáveis não serão captadas. Solução: defina o proxy dentro do script de forma explícita, ou inicie o script pelo Terminal, ou informe as variáveis nas configurações da sua IDE.

Causa 3: serviço de rede incorreto

Você configurou o Wi-Fi, mas o Mac se conectou pelo cabo porque você plugou uma dock station. Ou o contrário. A verificação é simples: networksetup -listallnetworkservices mostra todos os serviços, e a seção Rede nos ajustes destaca o ativo. Configure o proxy para cada serviço que você usa. Os comandos networksetup do Passo 4 precisam ser repetidos, trocando Wi-Fi por Ethernet.

Causa 4: máscaras desnecessárias na lista de exceções

Falamos disso no Passo 3. Execute networksetup -getproxybypassdomains Wi-Fi e confirme que não há asterisco sozinho, máscaras como *.com, *.ru, *.net nem domínios dos serviços com os quais você trabalha. Verifique o mesmo na variável no_proxy com o comando echo $no_proxy.

Causa 5: IPv6

Se o seu provedor de casa fornece endereço IPv6 e o proxy funciona por IPv4, alguns aplicativos podem tentar acessar por IPv6 diretamente. Para aplicativos do sistema isso é raro, mas para utilitários acontece. Verifique se o serviço de verificação de IP não mostra um endereço longo com dois-pontos. Se mostrar, abra as configurações do serviço, aba TCP/IP, e mude Configurar IPv6 para Apenas link-local.

Causa 6: HTTPS ativado e HTTP não, ou o contrário

Nos ajustes do sistema são dois botões independentes. Você esqueceu um, e metade do tráfego vaza. Execute scutil --proxy e confirme que HTTPEnable e HTTPSEnable são ambos 1.

Causa 7: cache do navegador e conexões abertas

O navegador que estava aberto antes da alteração das configurações pode manter conexões antigas por mais alguns minutos. Feche completamente o aplicativo com Command e Q, e não pelo X, e abra de novo.

Dica: Faça uma varredura de controle. Abra um serviço de verificação de IP no Safari, no Chrome, via curl no Terminal e dentro de cada aplicativo de trabalho. Anote os quatro resultados lado a lado. Se todos coincidirem com o IP do proxy móvel, não há vazamentos. Repita essa varredura após cada troca de proxy ou atualização do sistema.

Verificação: Todos os pontos de controle da lista acima mostram o mesmo IP do proxy móvel. Endereços locais abrem diretamente. Nenhum botão ficou desligado por acidente.

Verificação do resultado: checklist final

Percorra a lista e marque cada item. Se algum não for atendido, volte ao passo correspondente.

Nível do sistema

  • Nos Ajustes do Sistema, na tela Proxy, estão ativados Proxy web (HTTP) e Proxy web seguro (HTTPS), ambos com o mesmo host e a mesma porta.
  • A autorização está ativada, login e senha salvos, a janela de senha não aparece mais.
  • O Safari mostra o IP do proxy móvel e a operadora de celular.
  • A lista de exceções contém *.local, 169.254/16, localhost, 127.0.0.1 e sua sub-rede local. Não há máscaras desnecessárias.
  • Endereços locais abrem sem erro.

Terminal

  • O comando networksetup -getwebproxy Wi-Fi mostra Enabled: Yes e o servidor correto.
  • Os comandos de ligar e desligar via networksetup funcionam nos dois sentidos.
  • Em uma nova janela do Terminal, echo $http_proxy mostra o endereço do proxy.
  • curl https://ifconfig.me sem a opção -x retorna o IP do proxy.
  • echo $no_proxy mostra a lista de exceções locais.

Ferramentas

  • git config --global --get http.proxy retorna o endereço do proxy.
  • brew update termina sem erros de conexão.
  • npm config get proxy retorna o endereço do proxy, se você trabalha com Node.js.
  • Todos os aplicativos de trabalho com configurações de rede próprias foram apontados para o proxy do sistema ou configurados manualmente.

Como testar por completo

  1. Desligue o proxy do sistema com os comandos networksetup -setwebproxystate Wi-Fi off e networksetup -setsecurewebproxystate Wi-Fi off.
  2. Atualize o serviço de verificação de IP no navegador. Deve aparecer o IP de casa.
  3. Execute curl https://ifconfig.me no Terminal. Deve continuar aparecendo o IP do proxy, porque o Terminal usa variáveis, e não as configurações do sistema. Isso confirma que os níveis são independentes.
  4. Ligue o proxy do sistema de novo. Atualize o navegador. O IP do proxy deve voltar.
  5. Abra uma nova janela do Terminal, execute unset http_proxy https_proxy e depois curl de novo. Agora o Terminal vai mostrar o IP de casa. Feche a janela: na próxima, as variáveis serão recaptadas do .zshrc.

Se cada transição deu o resultado esperado, você controla totalmente o proxy no macOS em todos os níveis. Esse era o objetivo.

Erros comuns e soluções

O proxy está ligado, mas o IP não muda

Causa: a interface de rede configurada não é a certa, ou está ligado só um dos botões HTTP e HTTPS, ou o navegador não foi reiniciado.

Solução: verifique o serviço ativo na seção Rede, execute scutil --proxy e confirme que os dois Enable são 1, feche completamente o navegador com Command e Q.

Aparece sempre a janela pedindo a senha do proxy

Causa: erro no login ou na senha, espaço a mais depois de colar, ou dados antigos de um proxy anterior salvos no Acesso às Chaves.

Solução: apague o conteúdo dos campos e digite de novo manualmente. Abra o aplicativo Acesso às Chaves, encontre a entrada com o host do proxy e exclua-a, depois digite os dados de novo e marque Lembrar.

Parte dos sites abre pelo proxy, parte diretamente

Causa: está ligado só o HTTP ou só o HTTPS, ou apareceu uma máscara ampla na lista de exceções.

Solução: ligue os dois botões. Verifique a lista de exceções com o comando networksetup -getproxybypassdomains e remova tudo o que não se refere à rede local.

O Terminal ignora o proxy, mesmo com o sistema configurado

Causa: utilitários de linha de comando não leem as configurações do sistema. As variáveis de ambiente não foram definidas ou foram definidas em outra janela.

Solução: coloque as linhas export no .zshrc e execute source ~/.zshrc. Verifique com echo $http_proxy.

Erro 407 Proxy Authentication Required

Causa: o proxy não aceita login e senha. Muitas vezes o problema está nos caracteres especiais da senha dentro da string da URL.

Solução: codifique os caracteres especiais: arroba como %40, dois-pontos como %3A, cerquilha como %23. Confirme que no painel do provedor não está habilitada a autenticação por IP.

Serviços locais, impressora ou roteador pararam de funcionar

Causa: *.local e 169.254/16 foram removidos da lista de exceções, ou localhost e a sub-rede local não foram adicionados.

Solução: restaure a lista com o comando networksetup -setproxybypassdomains com o conjunto completo de entradas do Passo 3.

Depois de reiniciar o Mac, o proxy do Terminal desapareceu

Causa: as variáveis foram definidas apenas com export na janela aberta, e não no .zshrc.

Solução: abra nano ~/.zshrc, adicione as linhas e salve. Se você usa outro shell, como bash, o arquivo se chama .bash_profile.

Tudo funcionava, mas quebrou depois de uma atualização do macOS

Causa: grandes atualizações do sistema às vezes redefinem as configurações dos serviços de rede ou os renomeiam.

Solução: abra o arquivo proxy_backup.txt na Mesa, confira os valores e repita o Passo 4 com os comandos networksetup. Verifique a lista de serviços: pode ter aparecido um novo.

Carregamento lento das páginas

Causa: isso é comportamento normal de proxies móveis, a rede celular é mais lenta que o provedor de casa. Mas às vezes a causa é que estão ligados ao mesmo tempo o proxy HTTP e o SOCKS, e os aplicativos tentam estabelecer a conexão duas vezes.

Solução: desligue o SOCKS do sistema, deixe apenas HTTP e HTTPS. Se a velocidade continuar baixa, tente trocar o IP pelo link de rotação.

Recursos adicionais para usuários avançados

A configuração básica está feita. A seguir, algumas técnicas que transformam o trabalho manual em um sistema prático.

Localizações de rede: dois perfis, uma troca

O macOS permite criar vários conjuntos de configurações de rede e alternar entre eles por inteiro. Isso é mais prático do que mover botões toda vez.

  1. Abra os Ajustes do Sistema, seção Rede.
  2. Clique no botão com três pontos na parte de baixo da lista de serviços e escolha Localizações, depois Editar localizações.
  3. Clique no sinal de mais, dê o nome Proxy à nova localização. Clique em Concluído.
  4. Selecione a localização criada na lista. Configure o proxy para Wi-Fi e Ethernet, como no Passo 2.
  5. Deixe a localização original Automático sem proxy.

Agora a troca pode ser feita pelo menu Apple, item Localização, ou por um comando no Terminal:

networksetup -switchtolocation Прокси

E de volta: networksetup -switchtolocation Автоматически. Todos os serviços são trocados ao mesmo tempo e não haverá erros por interface incorreta.

Aliases para ligar e desligar rápido no Terminal

Se você não quer manter o proxy ligado o tempo todo, adicione ao .zshrc duas funções em vez de export diretos:

proxyon() { export http_proxy=http://user123:pass456@proxy.example.net:10000; export https_proxy=$http_proxy; export no_proxy=localhost,127.0.0.1,*.local; echo Proxy ON; }
proxyoff() { unset http_proxy https_proxy all_proxy no_proxy HTTP_PROXY HTTPS_PROXY; echo Proxy OFF; }

Depois de source ~/.zshrc, o comando proxyon liga o proxy na janela atual, e proxyoff desliga. A senha continua no arquivo, mas o proxy não é ativado sem a sua decisão.

Comando único para o sistema e o Terminal

Amplie a função proxyon adicionando dentro dela as linhas networksetup -setwebproxystate Wi-Fi on e networksetup -setsecurewebproxystate Wi-Fi on. Assim um único comando liga o proxy para navegadores e para o Terminal. No proxyoff, adicione os mesmos comandos com off. O sistema vai pedir a senha de administrador uma vez por sessão.

Troca de IP do proxy móvel pelo Terminal

A maioria dos provedores de proxies móveis fornece um link para trocar o IP. Ele pode ser chamado via curl sem abrir o navegador:

curl -s "https://endereço-de-rotação-do-painel"

Envolva em uma função newip e adicione ao .zshrc. A combinação newip e depois myip mostra o novo endereço em dois segundos. Para afiliados que fazem dezenas de verificações por dia, é uma economia de tempo perceptível.

SSH através de proxy SOCKS5

Se você se conecta a servidores por SSH e quer que a conexão passe pelo proxy móvel, adicione ao arquivo ~/.ssh/config o bloco:

Host myserver
 HostName 203.0.113.10
 ProxyCommand nc -X 5 -x proxy.example.net:10001 %h %p

O utilitário nc já vem no macOS. A opção -X 5 significa SOCKS5, a opção -x define o endereço do proxy. O nc não suporta autenticação por login e senha, então esse método serve para proxies com autenticação por IP.

Arquivo PAC para regras flexíveis

O botão Configuração automática de proxy aceita o endereço de um arquivo PAC: um script em JavaScript que decide, para cada endereço, se passa pelo proxy ou vai direto. Essa é a forma de implementar exceções complexas que não se expressam por máscaras. O arquivo pode ser armazenado localmente e indicado como file:/

Sobre o autor

Roman Melnikov

Roman Melnikov

Technical Writer and System Administrator

Experiência profissional: Technical writer and DevOps engineer with 9 years of experience. Created over 50 detailed guides on system configuration and administration. His instructions helped thousands of professionals successfully solve technical tasks. Popular author on Habr and YouTube.
Formação: Bauman Moscow State Technical University. Information Systems and Technologies
Especialização:
Technical Documentation DevOps System Administration Linux Docker and Kubernetes CI/CD Infrastructure Automation Cloud Technologies System Monitoring Bash and Python Scripting

Compartilhe este artigo: