Introducción: qué obtendrás como resultado

Si trabajas con proxies móviles en Mac, tarde o temprano te topas con la misma situación. Escribes la dirección y el puerto en los ajustes de Wi-Fi, el sitio muestra una nueva IP y te alegras. Pero luego descubres que la Terminal descarga paquetes directamente, que git sigue usando la dirección antigua y que la mitad de las aplicaciones ni se enteraron del cambio. Esta guía resuelve el problema por completo.

Después de leer y completar todos los pasos, tendrás un proxy configurado en macOS que funciona en tres niveles a la vez:

  • A nivel del sistema: Safari, Chrome, correo, mensajeros y otras aplicaciones que respetan los ajustes del sistema.
  • A nivel de la Terminal: comandos networksetup para activar, desactivar y cambiar el proxy sin un solo clic del ratón.
  • A nivel de herramientas de desarrollo: curl, git, Homebrew, pip, npm y otras utilidades que leen variables de entorno, no los ajustes del sistema.

Aparte, analizaremos la lista de excepciones. Es ese campo por el cual una parte del tráfico se escapa del proxy aunque no hayas configurado nada especial. Entenderás cómo funciona, qué añadir, qué quitar y cómo verificar que ninguna solicitud se filtre directamente donde no debería.

Para quién es esta guía

El manual está escrito para principiantes. Si nunca abriste la Terminal, no pasa nada: cada comando lo analizaremos letra por letra y explicaremos qué hace. La guía será útil para:

  • especialistas en marketing y redes sociales que gestionan varios proyectos desde diferentes IP;
  • media buyers que necesitan cambiar de geolocalización y probar creatividades rápidamente;
  • desarrolladores que prueban aplicaciones y API a través de proxies móviles;
  • dueños de negocios que quieren entenderlo una vez y no llamar a un especialista cada vez que cambian de proxy.

Para usuarios avanzados hay un bloque al final con técnicas avanzadas: ubicaciones de red, archivos PAC, alias en el shell y scripts de rotación automática.

Qué necesitas saber de antemano

Nada complicado. Basta con saber abrir los Ajustes del Sistema y copiar texto. Todo lo demás se explica sobre la marcha. No tocamos la configuración de navegadores específicos ni de navegadores antidetect: a eso están dedicados materiales aparte en el blog. Aquí solo macOS como sistema y sus herramientas integradas.

Cuánto tiempo tomará

La configuración básica mediante Ajustes del Sistema toma 10 minutos. La configuración de la Terminal y las herramientas de desarrollo otros 15-20 minutos. La verificación completa y el análisis de excepciones unos 10 minutos. En total 30-40 minutos si haces todo con calma y con verificaciones.

Preparación previa

Antes de cambiar algo en el sistema, reunamos todo lo necesario. Una buena preparación ahorra más tiempo que cualquier truco.

Qué necesitarás

  • Mac con macOS Ventura 13 o posterior. Todos los ejemplos están verificados en macOS Sonoma 14, Sequoia 15 y Tahoe 26. En versiones anteriores con la app Ajustes del Sistema en forma de cuadrícula de iconos, la ruta al proxy es algo diferente; indicaremos la diferencia aparte.
  • Datos del proxy móvil. Son la dirección del servidor (dominio o IP), el puerto, el usuario y la contraseña. Los proxies móviles normalmente tienen dos puertos: uno para el protocolo HTTP y otro para SOCKS5. Ten ambos a mano.
  • Enlace de cambio de IP, si tu proveedor lo proporciona. Te servirá en la sección de automatización.
  • Permisos de administrador en el Mac. Para cambiar el proxy del sistema mediante la Terminal, macOS pedirá la contraseña del usuario.
  • Editor de texto para notas. Sirve el TextEdit estándar o Notas.

Qué debes verificar antes de empezar

  1. Asegúrate de que internet funciona sin proxy. Abre cualquier sitio en Safari. Si no abre, primero resuelve el problema de red, de lo contrario después no quedará claro qué se rompió.
  2. Averigua por qué interfaz estás conectado: Wi-Fi o cable Ethernet. Abre Ajustes del Sistema, sección Red. La conexión activa está marcada con un punto verde y la palabra Conectado. Anota el nombre: normalmente es Wi-Fi o Ethernet.
  3. Verifica tu IP actual sin proxy. Abre en el navegador cualquier servicio de verificación de IP y anota la dirección. Con ella compararemos el resultado.

Copia de seguridad de los ajustes actuales

Los ajustes de proxy en macOS se revierten fácilmente, pero es mejor fijar el estado inicial. Sobre todo si trabajas en un Mac corporativo donde el administrador del sistema pudo haber configurado algo de antemano.

  1. Abre la Terminal. Pulsa Command y espacio, escribe la palabra Terminal y pulsa Enter.
  2. Copia y pega el comando, luego pulsa Enter:
scutil --proxy > ~/Desktop/proxy_backup.txt

En el Escritorio aparecerá el archivo proxy_backup.txt con la descripción completa de los ajustes de proxy actuales. Si estropeas algo, siempre podrás comparar los valores con este archivo.

Consejo: Crea de inmediato en Notas una ficha con los datos del proxy: host, puerto HTTP, puerto SOCKS5, usuario, contraseña, enlace de rotación. La consultarás decenas de veces. No guardes la contraseña en texto plano en documentos compartidos.

Conceptos básicos: qué hay que entender antes de empezar

Aquí van algunos términos sin los cuales los pasos siguientes se convertirán en magia. Lectura obligatoria, aunque creas que ya los conoces.

Servidor proxy

Es un intermediario entre tu Mac e internet. En lugar de ir al sitio directamente, tu solicitud primero va al servidor proxy y desde allí al sitio. El sitio ve la dirección IP del proxy, no la tuya. Un proxy móvil se distingue porque su IP pertenece a un operador de telefonía celular, y para los sitios pareces un usuario normal de smartphone.

Proxy HTTP y proxy SOCKS5

Son dos formas distintas de comunicarse con el servidor proxy. El proxy HTTP entiende el tráfico web, funciona con sitios y la mayoría de las aplicaciones. En macOS está dividido en dos interruptores: Proxy web (HTTP) para sitios normales y Proxy web seguro (HTTPS) para sitios con cifrado. En la práctica, en ambos campos se escribe la misma dirección y puerto.

El proxy SOCKS5 funciona más abajo, a nivel de conexiones, y deja pasar cualquier tráfico, no solo web. Es útil para la Terminal, mensajeros, juegos. Un matiz importante de macOS: los ajustes del sistema permiten indicar usuario y contraseña para SOCKS, pero muchas aplicaciones no admiten esa autenticación a través del SOCKS del sistema. Por eso en los ajustes del sistema usaremos HTTP, y SOCKS5 lo dejaremos para la Terminal y programas concretos.

Proxy del sistema

Son los ajustes que macOS guarda para una interfaz de red concreta. Safari, Chrome, Mail, App Store y la mayoría de las aplicaciones en Swift y Objective-C los leen automáticamente. Pero no todas. Los programas escritos en Python, Go, Node.js, así como las utilidades Unix clásicas como curl y git, ignoran los ajustes del sistema. Ellos miran las variables de entorno.

Variables de entorno

Son valores con nombre que viven en tu sesión de Terminal. Por ejemplo, la variable http_proxy les dice a las utilidades: envía todo el tráfico HTTP aquí. Las variables existen solo en la ventana abierta de la Terminal, si no las escribes en el archivo de configuración del shell. Sobre eso habrá un paso aparte.

Lista de excepciones

En macOS se llama No usar proxy para estos hosts y dominios. Todas las direcciones de esta lista el sistema las envía directamente, evitando el proxy. Por defecto ya hay entradas *.local y 169.254/16, que se encargan de la red local y no deben eliminarse. El problema empieza cuando en la lista aparecen máscaras de más o cuando esperas que las excepciones funcionen en la Terminal. No funcionarán: la Terminal tiene su propia lista, la variable no_proxy. Todo esto lo analizaremos.

Servicio de red

Así llama macOS a cada interfaz: Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB. El proxy se configura por separado para cada servicio. Si configuraste Wi-Fi y luego conectaste el cable, el proxy dejará de funcionar. Esta es una de las causas más frecuentes de la pregunta de por qué el proxy en macOS a veces funciona y a veces no.

Paso 1: Verificamos los datos del proxy antes de configurar el sistema

Objetivo de la etapa: asegurarte de que el proxy está vivo y el usuario y la contraseña son correctos. Esto te evitará media hora buscando un error en los ajustes cuando el problema era un error tipográfico en la contraseña.

Verificaremos con curl. Esta utilidad ya está en macOS, no hay que instalar nada.

  1. Abre la Terminal, si aún no está abierta.
  2. Toma de tu ficha los datos del proxy. Para el ejemplo usaremos valores ficticios: host proxy.example.net, puerto HTTP 10000, puerto SOCKS5 10001, usuario user123, contraseña pass456. Sustituye estos por tus datos reales.
  3. Introduce el comando para verificar el puerto HTTP y pulsa Enter:
curl -x http://user123:pass456@proxy.example.net:10000 https://ifconfig.me

Analicemos qué dice aquí. La clave -x le indica a curl la dirección del proxy. Después va el protocolo http, luego el usuario, dos puntos, la contraseña, el símbolo arroba, el host, dos puntos, el puerto. Al final la dirección del servicio que en respuesta devuelve la IP desde la que llegó la solicitud.

  1. En 1-3 segundos aparecerá en la Terminal una dirección IP. Es la IP de tu proxy móvil. Si es distinta de la que anotaste en la preparación, todo funciona.
  2. Ahora verifica el puerto SOCKS5 con el mismo comando, cambiando el protocolo y el puerto:
curl -x socks5h://user123:pass456@proxy.example.net:10001 https://ifconfig.me

Fíjate en la letra h en la palabra socks5h. Significa que los nombres de dominio se resolverán del lado del proxy, no en tu Mac. Para proxies móviles esta es la opción correcta: así no dejas solicitudes DNS de tu proveedor doméstico.

Atención: Si la contraseña contiene los símbolos arroba, dos puntos, barra, numeral, signo de interrogación o porcentaje, hay que codificarlos. La arroba se reemplaza por %40, los dos puntos por %3A, el numeral por %23, el signo de interrogación por %3F, el porcentaje por %25. De lo contrario curl dividirá mal la cadena y decidirá que la contraseña terminó antes de tiempo.

Posibles problemas en este paso

  • Respuesta Received HTTP code 407 from proxy after CONNECT. El proxy rechaza la autenticación. Verifica el usuario y la contraseña, revisa los caracteres especiales. Asegúrate de que en el panel del proveedor no esté activada la autenticación por IP en lugar de usuario y contraseña.
  • Respuesta Failed to connect o Connection timed out. Host o puerto incorrecto, o el proxy está apagado. Consulta el panel del proveedor. Prueba otro puerto.
  • El comando se quedó colgado sin salida. Espera 30 segundos. Las redes móviles a veces son lentas. Si no pasó nada, pulsa Control y C para interrumpir, y verifica los datos.

Verificación: Ambos comandos curl devolvieron una dirección IP distinta de la tuya doméstica. Puedes pasar al siguiente paso. Si al menos uno no funcionó, seguir adelante no tiene sentido: el sistema usará los mismos datos.

Paso 2: Configuramos el proxy mediante Ajustes del Sistema de macOS

Objetivo de la etapa: hacer que Safari, Chrome y todas las aplicaciones que respetan el proxy del sistema naveguen por internet a través de tu proxy móvil.

Abrimos la pantalla necesaria

  1. Haz clic en el icono de Apple en la esquina superior izquierda de la pantalla y elige Ajustes del Sistema.
  2. En la columna izquierda pulsa Wi-Fi si estás conectado por red inalámbrica. Si es por cable, pulsa Red, luego Ethernet.
  3. Encuentra el nombre de tu red. A su derecha hay un botón Detalles con tres puntos o con texto. Púlsalo.
  4. Se abrirá una ventana con los parámetros de conexión. En la columna izquierda de esa ventana elige el apartado Proxy. Está al final de la lista, después de TCP/IP, DNS y WINS.

Verás una lista de interruptores: Descubrimiento automático de proxy, Configuración automática de proxy, Proxy web (HTTP), Proxy web seguro (HTTPS), Proxy FTP, Proxy SOCKS, Proxy de transmisión (RTSP), Proxy Gopher. Abajo el campo No usar proxy para estos hosts y dominios.

Si tienes un macOS antiguo, donde Ajustes del Sistema parece una cuadrícula de iconos, la ruta es: Ajustes del Sistema, Red, elige la interfaz a la izquierda, botón Avanzado, pestaña Proxies. Después todo coincide.

Activamos el proxy HTTP

  1. Pulsa el interruptor Proxy web (HTTP). Se pondrá azul y aparecerán campos de entrada abajo.
  2. En el campo Servidor introduce el host de tu proxy, por ejemplo proxy.example.net. Sin http://, sin barras, solo el host.
  3. En el campo Puerto a la derecha introduce el puerto HTTP, por ejemplo 10000.
  4. Activa el interruptor El servidor proxy requiere contraseña.
  5. En el campo Nombre de usuario introduce el usuario. En el campo Contraseña introduce la contraseña. Aquí no hay que codificar caracteres especiales, introduce tal cual.

Activamos el proxy HTTPS

La mayoría de los sitios hoy funcionan por HTTPS, así que este apartado es obligatorio. Sin él, el tráfico cifrado irá directamente y te preguntarás por qué unos sitios ven el proxy y otros tu IP real.

  1. Pulsa el interruptor Proxy web seguro (HTTPS).
  2. Introduce el mismo host y el mismo puerto que para HTTP. Los proxies móviles procesan ambos tipos de tráfico en un mismo puerto.
  3. Activa El servidor proxy requiere contraseña, introduce el usuario y la contraseña de nuevo.

Sobre el proxy SOCKS y los demás interruptores

El interruptor Proxy SOCKS en los ajustes del sistema déjalo apagado si tienes HTTP y HTTPS activados. La razón es que con el SOCKS del sistema activado algunas aplicaciones empiezan a preferirlo, y la autenticación mediante el SOCKS del sistema no la admiten todas. Resultado: parte de los programas pierde acceso a la red. FTP, RTSP y Gopher no hace falta tocarlos, son protocolos obsoletos. Descubrimiento automático y Configuración automática también déjalos apagados, de lo contrario pueden sobrescribir tus valores manuales.

Guardamos

  1. Pulsa el botón OK en la esquina inferior derecha de la ventana.
  2. Si el sistema pide la contraseña de tu usuario de Mac, introdúcela. Es normal: cambiar los ajustes de red requiere permisos de administrador.
  3. Cierra Safari o Chrome por completo y vuelve a abrirlos. Los navegadores almacenan en caché los ajustes de proxy al iniciarse.

Consejo: En la primera solicitud a través del proxy, macOS puede mostrar una ventana del sistema pidiendo usuario y contraseña del proxy, aunque ya los hayas escrito. Introduce los datos y marca la casilla Recordar en el llavero. Después de eso la ventana no volverá a aparecer.

Verificación: Abre en Safari un servicio de verificación de IP. La dirección debe coincidir con la que devolvió el comando curl en el Paso 1. Verifica también la página con la determinación del operador: debe mostrarse el operador celular, no tu proveedor doméstico.

Posibles problemas

  • Los sitios no abren en absoluto. Verifica que activaste HTTP y HTTPS, y no FTP o SOCKS. Verifica el puerto. Desactiva temporalmente ambos interruptores y asegúrate de que el internet volvió: así entenderás que el problema está en los ajustes del proxy, no en la red.
  • Aparece constantemente la ventana de entrada de contraseña. La contraseña está mal introducida o contiene un espacio al final por copiar y pegar. Borra el contenido del campo, introduce la contraseña de nuevo manualmente.
  • La IP no cambió. Probablemente configuraste la interfaz equivocada. Vuelve a la sección Red y verifica qué servicio está marcado como Conectado.

Paso 3: Configuramos la lista de excepciones correctamente

Objetivo de la etapa: entender qué tráfico deja pasar el sistema sin proxy y configurar la lista de modo que los servicios locales funcionen y el tráfico externo no se filtre.

El campo No usar proxy para estos hosts y dominios está abajo en la pantalla Proxy. Por defecto contiene: *.local, 169.254/16. Muchos usuarios o no lo miran en absoluto o empiezan a escribir todo allí.

Cómo leer la lista

  • *.local significa todas las direcciones que terminan en .local. Son los dispositivos de tu red doméstica: impresora, disco de red, otros Mac. No se pueden abrir a través de un proxy externo físicamente, por eso la entrada es necesaria.
  • 169.254/16 significa el rango de direcciones de servicio que el Mac se asigna cuando no recibió dirección del router. También es historia local.
  • Las entradas se separan por comas. Los espacios después de las comas son admisibles.
  • El asterisco reemplaza cualquier parte del nombre. La entrada *.example.com excluirá todos los subdominios de example.com, pero no el propio example.com. Para él hace falta una entrada aparte.
  • Se pueden indicar direcciones IP y subredes en formato dirección/máscara, por ejemplo 192.168.0.0/16 para toda la red doméstica.

Qué conviene añadir

  1. Pulsa en el campo de excepciones después de la última entrada.
  2. Añade separados por comas localhost y 127.0.0.1. Sin ellos, los servidores web locales de desarrolladores y paneles de administración en tu Mac intentarán ir a través del proxy móvil y caerán.
  3. Si usas dispositivos domésticos por IP, añade tu subred local. Por lo general es 192.168.0.0/16 o 10.0.0.0/8. Puedes ver tu dirección local en la pantalla TCP/IP en la misma ventana.
  4. Pulsa OK.

La lista final para la mayoría de los usuarios queda así: *.local, 169.254/16, localhost, 127.0.0.1, 192.168.0.0/16.

Qué no conviene añadir

Aquí empieza lo que en el título se llama saltarse las excepciones. Se trata de situaciones en las que el tráfico se escapa del proxy no porque tú lo quisieras, sino porque la lista está mal compuesta.

  • No escribas un solo asterisco ni *.com. Esa máscara desactivará el proxy prácticamente para todo internet, mientras los interruptores seguirán azules y pensarás que todo funciona.
  • No escribas dominios de los servicios con los que trabajas. Si añades *.facebook.com para acelerar la carga, el sitio verá tu IP real. Para tareas de multitud de cuentas esto es crítico.
  • No escribas el host del propio proxy. No tiene sentido: la conexión al proxy ya va directamente.
  • No elimines *.local y 169.254/16. Se romperá AirDrop, la impresión, el acceso al router.

Atención: La lista de excepciones en los ajustes del sistema solo actúa sobre las aplicaciones que usan el proxy del sistema. La Terminal, curl, git y los scripts en Python no la ven. Ellos tienen su propia lista, la variable no_proxy, y se configura aparte. Llegaremos a ella en el Paso 5. Si esperas que una entrada en la lista del sistema afecte a un script, te decepcionarás.

Consejo: Abre periódicamente la lista de excepciones y revísala con la vista. Algunas utilidades corporativas y agentes de gestión de dispositivos añaden allí sus dominios durante la instalación. Descubrir una máscara de más del tipo *.com en diez segundos es más fácil que buscar durante una semana la causa de una filtración de IP.

Verificación: Abre en el navegador la dirección http://localhost o cualquier página local que tengas. Debe abrirse al instante sin error de proxy. Luego abre un servicio externo de verificación de IP: debe seguir mostrando la IP del proxy móvil.

Paso 4: Gestionamos el proxy desde la Terminal con el comando networksetup

Objetivo de la etapa: aprender a activar, desactivar y cambiar el proxy del sistema con un solo comando, sin ratón y sin diez clics en los ajustes. Esa es la habilidad que en un mes amortiza el tiempo dedicado a leer esta sección.

En macOS hay una utilidad integrada, networksetup. Hace exactamente lo mismo que los Ajustes del Sistema, pero desde la línea de comandos. Todo lo que configuraste en el Paso 2 se puede repetir, cambiar o cancelar con una línea.

Averiguamos el nombre exacto del servicio de red

  1. En la Terminal introduce el comando y pulsa Enter:
networksetup -listallnetworkservices

Verás una lista como: Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB. Encuentra aquel por el que estás conectado. En los siguientes comandos usaremos Wi-Fi. Si tu servicio se llama de otra forma, sustituye su nombre. Si el nombre contiene un espacio, por ejemplo Thunderbolt Bridge, ponlo entre comillas dobles.

Vemos los ajustes actuales

networksetup -getwebproxy Wi-Fi

En respuesta verás cuatro líneas: Enabled: Yes o No, Server, Port, Authenticated Proxy Enabled. Si completaste el Paso 2, Enabled será Yes, y el servidor y el puerto coincidirán con los introducidos. Análogamente para HTTPS:

networksetup -getsecurewebproxy Wi-Fi

Activamos los proxies HTTP y HTTPS con un solo comando

El formato del comando: networksetup, acción, servicio, host, puerto, activar autorización, usuario, contraseña.

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

Introduce ambos comandos por turno. Después de cada uno el sistema puede pedir la contraseña del usuario de Mac. Introdúcela, los símbolos no se muestran al escribir, es normal. Pulsa Enter.

La palabra on después del puerto activa la autorización. Si tu proxy tiene autorización por IP en lugar de por usuario, escribe off y no indiques usuario ni contraseña.

Apagamos y encendemos el proxy sin perder los ajustes

El par de comandos más útil. No borran el host ni el puerto, solo mueven el interruptor:

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

Para volver a activar, sustituye off por on. Así en dos segundos pones el Mac en modo de conexión directa y lo devuelves.

Gestionamos la lista de excepciones desde la Terminal

Ver la lista actual:

networksetup -getproxybypassdomains Wi-Fi

Definir una nueva lista completa. El comando reemplaza todas las entradas, así que enumera el conjunto completo separado por espacios:

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

Las entradas con asterisco y barra las ponemos entre comillas para que el shell no intente interpretarlas. Vaciar la lista por completo se puede con la palabra Empty en lugar de los dominios, pero recuerda: entonces las direcciones locales irán a través del proxy y dejarán de funcionar.

Comando universal de visualización

La utilidad scutil muestra todos los ajustes de proxy en un solo lugar, incluidas las excepciones:

scutil --proxy

Busca las líneas HTTPEnable, HTTPProxy, HTTPPort, HTTPSEnable, ExceptionsList. El valor 1 significa activado, 0 desactivado. Precisamente este comando usamos para la copia de seguridad.

Consejo: Abre los Ajustes del Sistema en la pantalla Proxy y ejecuta cualquier comando networksetup en la Terminal al lado. Verás cómo los interruptores cambian en tiempo real. Es la mejor forma de asegurarte de que la Terminal y la interfaz gráfica gestionan los mismos datos.

Posibles problemas

  • Error: Wi-Fi is not a recognized network service. El servicio se llama de otra forma. Ejecuta networksetup -listallnetworkservices y copia el nombre exacto.
  • El comando pasó, pero en los ajustes no cambió nada. Cierra y vuelve a abrir la ventana de Ajustes del Sistema, no siempre se actualiza al instante.
  • Pide contraseña y escribe Sorry, try again. Se introduce la contraseña del usuario de Mac, no la del proxy. Los símbolos no se muestran, solo escribe y pulsa Enter.

Verificación: Ejecuta networksetup -setwebproxystate Wi-Fi off, actualiza el servicio de verificación de IP en el navegador, verás tu IP doméstica. Ejecuta el mismo comando con on, actualiza la página, verás la IP del proxy. Si el cambio funciona en ambos sentidos, la etapa está superada.

Paso 5: Configuramos el proxy para curl, git, Homebrew, pip y npm

Objetivo de la etapa: hacer que las herramientas de línea de comandos funcionen a través del proxy. Aquí es donde más tráfico se filtra, porque estos programas no miran los ajustes del sistema.

Por qué el proxy del sistema no funciona aquí

Las utilidades como curl, wget, git, pip, npm, brew están escritas para funcionar en todos los sistemas Unix. No conocen macOS ni sus Ajustes del Sistema. En su lugar leen variables de entorno con nombres http_proxy, https_proxy, all_proxy y no_proxy. Si las variables no están, el tráfico va directamente. Los interruptores en los ajustes pueden estar azules todo lo que quieran.

Activación temporal en la ventana actual de Terminal

Introduce tres comandos por turno:

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

El primero dirige el tráfico HTTP al proxy. El segundo dirige el tráfico HTTPS al mismo lugar. Fíjate: en el valor de https_proxy el protocolo sigue siendo http, porque es el protocolo de comunicación con el proxy, no con el sitio. El tercero define excepciones para la Terminal. Esa es la lista aparte de la que hablamos en el Paso 3.

Algunos programas leen las variables solo en mayúsculas. Para no adivinar, define también esas:

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

Ahora verifica sin la clave -x:

curl https://ifconfig.me

Si devolvió la IP del proxy, las variables funcionan. Todos los programas lanzados desde esta ventana de Terminal irán ahora a través del proxy móvil. Cuando cierres la ventana, las variables desaparecerán.

Activación permanente mediante el archivo de configuración del shell

En el macOS moderno el shell por defecto es zsh, y su configuración se guarda en el archivo .zshrc en tu carpeta de inicio. Todo lo que allí está escrito se ejecuta al abrir cada nueva ventana de Terminal.

  1. Abre el archivo en el editor nano con el comando:
nano ~/.zshrc
  1. Con las flechas baja al final del archivo.
  2. Pega las líneas export de la sección anterior.
  3. Pulsa Control y O, luego Enter, para guardar. Pulsa Control y X para salir.
  4. Aplica los cambios sin reiniciar:
source ~/.zshrc

Atención: En .zshrc la contraseña se guarda en texto plano. Si el Mac es compartido o guardas el archivo en sincronización en la nube, piénsalo dos veces. La opción de compromiso se describe en el bloque de ajustes avanzados: alias que activan el proxy con un comando corto, en lugar de automáticamente.

Git

Git sabe leer variables de entorno, pero es más fiable definir los ajustes en su configuración:

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

Desactivar:

git config --global --unset http.proxy

Este ajuste afecta a las operaciones clone, pull, push por HTTPS. Para el acceso SSH a repositorios hace falta otro enfoque, está en el bloque avanzado.

Homebrew

Brew se apoya completamente en las variables de entorno. Si las definiste en .zshrc, no hace falta hacer nada adicional. Verifica con el comando brew update: la actualización debe pasar sin errores de conexión.

pip

El instalador de Python también lee variables de entorno. Para una ejecución puntual a través del proxy sin variables usa la clave:

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

npm

El gestor de paquetes de Node.js guarda los ajustes aparte:

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

Desactivar: npm config delete proxy y npm config delete https-proxy.

SOCKS5 para la Terminal

Si quieres enviar el tráfico de la terminal a través del puerto SOCKS5, en lugar de http_proxy y https_proxy define una sola variable:

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

Curl y muchas utilidades la entienden. Pero no todas: git por HTTPS no siempre lee la variable all_proxy, y pip no entiende SOCKS sin un paquete adicional. Para mayor universalidad, a los principiantes les recomendamos la opción HTTP.

Consejo: Añade en .zshrc la línea alias myip='curl -s https://ifconfig.me; echo' y después escribe myip para ver en un segundo la IP actual de la Terminal. Esto ahorra decenas de verificaciones al día.

Verificación: Abre una nueva ventana de Terminal. Ejecuta curl https://ifconfig.me y git config --global --get http.proxy. El primer comando devuelve la IP del proxy, el segundo muestra la dirección del proxy. Significa que las herramientas están configuradas y los ajustes sobreviven al reinicio.

Paso 6: Encontramos el tráfico que va sin proxy y lo corregimos

Objetivo de la etapa: asegurarte de que ninguna aplicación de tu conjunto de trabajo va a internet directamente sin tu conocimiento. Aquí sistematizamos todas las causas de filtraciones y verificamos cada una.

Causa 1: aplicación con sus propios ajustes de proxy

Algunos programas ignoran el proxy del sistema y las variables de entorno porque tienen sus propios ajustes. Ejemplos clásicos: Telegram Desktop, Firefox, Discord, algunos clientes de correo, clientes de torrent, navegadores antidetect. Cada uno de ellos tiene en los ajustes una sección Red o Proxy.

  1. Haz una lista de las aplicaciones con las que trabajas.
  2. Abre cada una y busca la sección de ajustes de red. Si allí hay una opción Usar los ajustes de proxy del sistema, elígela. Si solo hay entrada manual, escribe el host, el puerto, el usuario y la contraseña.
  3. Verifica la IP dentro de la aplicación, si lo permite, o a través del servicio de verificación abierto en esa aplicación.

Los ajustes de navegadores concretos y antidetects están analizados aparte en el blog, aquí no los repetimos. Es importante entender el principio: en cada aplicación hay que verificar de dónde toma el proxy.

Causa 2: aplicación lanzada fuera de la Terminal

Las variables de entorno de .zshrc actúan solo sobre los programas lanzados desde la Terminal. Si lanzas el script con doble clic, desde el editor de código o el planificador, las variables no se captarán. Solución: define el proxy dentro del script explícitamente, o lanza el script desde la Terminal, o indica las variables en los ajustes de tu editor de código.

Causa 3: servicio de red incorrecto

Configuraste Wi-Fi y el Mac se conectó por cable porque enchufaste la estación de acoplamiento. O al revés. La verificación es simple: networksetup -listallnetworkservices mostrará todos los servicios, y la sección Red en los ajustes resaltará el activo. Configura el proxy para cada servicio que uses. Los comandos networksetup del Paso 4 hay que repetirlos sustituyendo Wi-Fi por Ethernet.

Causa 4: máscaras de más en la lista de excepciones

Hablamos de esto en el Paso 3. Ejecuta networksetup -getproxybypassdomains Wi-Fi y asegúrate de que allí no haya un solo asterisco, máscaras del tipo *.com, *.ru, *.net ni dominios de servicios de trabajo. Lo mismo verifica en la variable no_proxy con el comando echo $no_proxy.

Causa 5: IPv6

Si tu proveedor doméstico asigna una dirección IPv6 y el proxy funciona por IPv4, algunas aplicaciones pueden intentar ir por IPv6 directamente. Para las aplicaciones del sistema es raro, pero para las utilidades ocurre. Verifica que el servicio de verificación de IP no muestre una dirección larga con dos puntos. Si la muestra, abre los ajustes del servicio, la pestaña TCP/IP y cambia Configurar IPv6 a Solo enlace local.

Causa 6: HTTPS activado y HTTP no, o al revés

En los ajustes del sistema son dos interruptores independientes. Olvidaste uno y la mitad del tráfico se filtra. Ejecuta scutil --proxy y asegúrate de que HTTPEnable y HTTPSEnable sean ambos 1.

Causa 7: caché del navegador y conexiones abiertas

El navegador que se lanzó antes de cambiar los ajustes puede mantener las conexiones antiguas durante varios minutos más. Cierra la aplicación por completo con Command y Q, no con la cruz, y vuelve a abrirla.

Consejo: Hazte un recorrido de control. Abre el servicio de verificación de IP en Safari, en Chrome, mediante curl en la Terminal y dentro de cada aplicación de trabajo. Anota los cuatro resultados uno al lado del otro. Si todos coinciden con la IP del proxy móvil, no hay filtraciones. Repite este recorrido después de cada cambio de proxy o actualización del sistema.

Verificación: Todos los puntos de control de la lista de arriba muestran la misma IP del proxy móvil. Las direcciones locales abren directamente. Ningún interruptor se quedó apagado por accidente.

Verificación del resultado: checklist final

Recorre la lista y marca cada punto. Si alguno no se cumple, vuelve al paso correspondiente.

Nivel del sistema

  • En los Ajustes del Sistema, en la pantalla Proxy, están activados Proxy web (HTTP) y Proxy web seguro (HTTPS), ambos con el mismo host y puerto.
  • La autorización está activada, el usuario y la contraseña se guardaron, la ventana de entrada de contraseña ya no aparece.
  • Safari muestra la IP del proxy móvil y el operador celular.
  • La lista de excepciones contiene *.local, 169.254/16, localhost, 127.0.0.1 y tu subred local. No hay máscaras de más.
  • Las direcciones locales abren sin errores.

Terminal

  • El comando networksetup -getwebproxy Wi-Fi muestra Enabled: Yes y el servidor correcto.
  • Los comandos de activación y desactivación mediante networksetup funcionan en ambos sentidos.
  • En una nueva ventana de Terminal, echo $http_proxy muestra la dirección del proxy.
  • curl https://ifconfig.me sin la clave -x devuelve la IP del proxy.
  • echo $no_proxy muestra la lista de excepciones locales.

Herramientas

  • git config --global --get http.proxy devuelve la dirección del proxy.
  • brew update termina sin errores de conexión.
  • npm config get proxy devuelve la dirección del proxy si trabajas con Node.js.
  • Todas las aplicaciones de trabajo con ajustes de red propios están puestas al proxy del sistema o configuradas manualmente.

Cómo probar todo por completo

  1. Desactiva el proxy del sistema con los comandos networksetup -setwebproxystate Wi-Fi off y networksetup -setsecurewebproxystate Wi-Fi off.
  2. Actualiza el servicio de verificación de IP en el navegador. Debe aparecer tu IP doméstica.
  3. Ejecuta curl https://ifconfig.me en la Terminal. Debe seguir apareciendo la IP del proxy, porque la Terminal usa variables, no los ajustes del sistema. Esto confirma que los niveles son independientes.
  4. Activa el proxy del sistema de nuevo. Actualiza el navegador. Debe volver la IP del proxy.
  5. Abre una nueva ventana de Terminal, ejecuta unset http_proxy https_proxy y curl otra vez. Ahora la Terminal mostrará tu IP doméstica. Cierra la ventana: en la siguiente las variables volverán a captarse de .zshrc.

Si cada transición dio el resultado esperado, controlas por completo el proxy en macOS en todos los niveles. Ese era el objetivo.

Errores típicos y soluciones

El proxy está activado, pero la IP no cambia

Causa: está configurada la interfaz de red equivocada, o solo está activado uno de los interruptores HTTP y HTTPS, o el navegador no se reinició.

Solución: verifica el servicio activo en la sección Red, ejecuta scutil --proxy y asegúrate de que ambos Enable sean 1, cierra el navegador por completo con Command y Q.

Aparece constantemente la ventana pidiendo la contraseña del proxy

Causa: error en el usuario o la contraseña, espacio de más al pegar, o en el llavero hay datos antiguos del proxy anterior.

Solución: borra el contenido de los campos e introdúcelos de nuevo manualmente. Abre la app Llavero, busca la entrada con el host del proxy y bórrala, luego introduce los datos otra vez y marca la casilla Recordar.

Parte de los sitios abren vía proxy, parte directamente

Causa: está activado solo HTTP o solo HTTPS, o en la lista de excepciones apareció una máscara amplia.

Solución: activa ambos interruptores. Verifica la lista de excepciones con el comando networksetup -getproxybypassdomains y elimina todo lo que no se refiera a la red local.

La Terminal ignora el proxy, aunque el sistema esté configurado

Causa: las utilidades de línea de comandos no leen los ajustes del sistema. Las variables de entorno no están definidas o están definidas en otra ventana.

Solución: escribe las líneas export en .zshrc y ejecuta source ~/.zshrc. Verifica con echo $http_proxy.

Error 407 Proxy Authentication Required

Causa: el proxy no acepta el usuario y la contraseña. A menudo el problema está en los caracteres especiales de la contraseña dentro de la cadena URL.

Solución: codifica los caracteres especiales: arroba como %40, dos puntos como %3A, numeral como %23. Asegúrate de que en el panel del proveedor no esté activada la autorización por IP.

Los servicios locales, la impresora o el router dejaron de funcionar

Causa: se eliminaron de la lista de excepciones *.local y 169.254/16, o no se añadieron localhost y la subred local.

Solución: restaura la lista con el comando networksetup -setproxybypassdomains con el conjunto completo de entradas del Paso 3.

Después de reiniciar el Mac, el proxy en la Terminal desapareció

Causa: las variables se definieron solo con export en la ventana abierta, y no en .zshrc.

Solución: abre nano ~/.zshrc, añade las líneas y guarda. Si usas otro shell, por ejemplo bash, el archivo se llama .bash_profile.

Todo funcionaba y tras actualizar macOS se rompió

Causa: las actualizaciones grandes del sistema a veces restablecen los ajustes de los servicios de red o los renombran.

Solución: abre el archivo proxy_backup.txt del Escritorio, compara los valores y repite el Paso 4 con los comandos networksetup. Verifica la lista de servicios: puede que haya aparecido uno nuevo.

Carga lenta de las páginas

Causa: es el comportamiento normal de los proxies móviles, la red celular es más lenta que el proveedor doméstico. Pero a veces la causa es que están activados a la vez el proxy HTTP y SOCKS, y las aplicaciones intentan establecer la conexión dos veces.

Solución: desactiva el SOCKS del sistema, deja solo HTTP y HTTPS. Si la velocidad sigue siendo baja, intenta cambiar la IP a través del enlace de rotación.

Funciones adicionales para usuarios avanzados

La configuración básica está hecha. Ahora van algunas técnicas que convierten el trabajo manual en un sistema cómodo.

Ubicaciones de red: dos perfiles, un cambio

macOS permite crear varios conjuntos de ajustes de red y cambiar entre ellos por completo. Es más cómodo que mover los interruptores cada vez.

  1. Abre Ajustes del Sistema, sección Red.
  2. Pulsa el botón con tres puntos en la parte inferior de la lista de servicios y elige Ubicaciones, luego Editar ubicaciones.
  3. Pulsa el signo más, llama a la nueva ubicación Proxy. Pulsa Listo.
  4. Selecciona la ubicación creada en la lista. Configura el proxy para Wi-Fi y Ethernet, como en el Paso 2.
  5. Deja la ubicación original Automática sin proxy.

Ahora se puede cambiar a través del menú de Apple, apartado Ubicación, o con un comando en la Terminal:

networksetup -switchtolocation Proxy

Y de vuelta: networksetup -switchtolocation Automática. Todos los servicios se cambian a la vez, no habrá errores con la interfaz incorrecta.

Alias para activar y desactivar rápidamente en la Terminal

Si no quieres mantener el proxy activado permanentemente, añade en .zshrc dos funciones en lugar de export directos:

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; }

Después de source ~/.zshrc el comando proxyon activa el proxy en la ventana actual, proxyoff lo desactiva. La contraseña sigue estando en el archivo, pero el proxy no se activa sin tu decisión.

Un comando único para el sistema y la Terminal

Amplía la función proxyon añadiendo dentro las líneas networksetup -setwebproxystate Wi-Fi on y networksetup -setsecurewebproxystate Wi-Fi on. Entonces un comando activará el proxy tanto para navegadores como para la Terminal. En proxyoff añade los mismos comandos con off. El sistema pedirá la contraseña de administrador una vez por sesión.

Cambio de IP del proxy móvil desde la Terminal

La mayoría de los proveedores de proxies móviles dan un enlace para cambiar de IP. Se puede llamar a través de curl sin abrir el navegador:

curl -s "https://dirección-de-rotación-del-panel"

Envuelve en una función newip y añade a .zshrc. La combinación newip, luego myip, mostrará la nueva dirección en dos segundos. Para los media buyers que hacen decenas de verificaciones al día, esto ahorra tiempo de forma notable.

SSH a través del proxy SOCKS5

Si te conectas a servidores por SSH y quieres que la conexión vaya a través del proxy móvil, añade al archivo ~/.ssh/config el bloque:

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

La utilidad nc viene integrada en macOS. La clave -X 5 significa SOCKS5, la clave -x define la dirección del proxy. La autenticación por usuario y contraseña nc no la admite, por eso este método sirve para proxies con autorización por IP.

Archivo PAC para reglas flexibles

El interruptor Configuración automática de proxy acepta la dirección de un archivo PAC: un script en JavaScript que decide para cada dirección si ir a través del proxy o directamente. Es la forma de implementar excepciones complejas que no se expresan con máscaras. El archivo se puede guardar localmente y señalarlo como file:/

Sobre el autor

Roman Melnikov

Roman Melnikov

Technical Writer and System Administrator

Experiencia laboral: 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.
Formación académica: Bauman Moscow State Technical University. Information Systems and Technologies
Especialización:
Technical Documentation DevOps System Administration Linux Docker and Kubernetes CI/CD Infrastructure Automation Cloud Technologies System Monitoring Bash and Python Scripting

Comparte el artículo: