¿Cómo configuro el proxy para redes particulares para que funcione bien en todas las aplicaciones?
Ha configurado varios servidores proxy en las Preferencias del sistema, y esa es la forma correcta de hacerlo (por eso la aplicación App Store y Safari funcionan bien). Desafortunadamente, Terminal es una excepción y necesita su propia configuración de proxy.
¿Por qué es eso? Terminal es simplemente un contenedor que ejecuta un shell . Un shell es un programa que, en pocas palabras, muestra un aviso y espera pacientemente a que ejecutes comandos como ls
y rm
.
Los shells son anteriores a macOS y tienen sus propias reglas para configurar proxies . Shells no sabe nada acerca de la configuración del proxy en las Preferencias del sistema, y deben configurarse por separado.
el shell predeterminado de macOS es Bash (puede averiguar qué shell está ejecutando ejecutando echo $0
en el indicador), así que le explicaré cómo configurar el proxy en Bash.
La solución simple
-
Inicie Terminal y escriba este comando para cambiar el directorio a nuestro directorio principal:
cd ~
-
Escriba estos comandos para abrir .bash_profile
con TextEdit:
touch .bash_profile
open -a TextEdit .bash_profile
-
Establezca el proxy variables de entorno escribiendo el siguiente texto en TextEdit y reemplace <your http proxy>
, <your https proxy>
y <your ftp proxy>
con su servidor proxy (si TextEdit ya contiene texto, agregue el siguiente texto al final del archivo):
export HTTP_PROXY="<your http proxy>"
export http_proxy=$HTTP_PROXY
export HTTPS_PROXY="<your https proxy>"
export http_proxy=$HTTP_PROXY
export FTP_PROXY="<your ftp proxy>"
export ftp_proxy=$FTP_PROXY
Si ha configurado en Preferencias del sistema una lista de hosts y dominios con los que se debe contactar directamente omitiendo el proxy, agréguelos de esta manera:
export NO_PROXY="<comma-separated list of hosts>"
export no_proxy=$NO_PROXY
Por ejemplo:
export HTTP_PROXY="http://10.11.0.1:8080"
export http_proxy=$HTTP_PROXY
export HTTPS_PROXY="http://10.11.0.1:8080"
export http_proxy=$HTTP_PROXY
export FTP_PROXY="http://10.11.0.1:8080"
export ftp_proxy=$FTP_PROXY
export NO_PROXY="localhost,127.0.0.1"
export no_proxy=$NO_PROXY
-
Guarde el archivo con ⌘ S y cierre TextEdit.
- Cierre la Terminal y vuelva a abrirla. Ahora la configuración del proxy debería funcionar correctamente.
Una solución más elaborada
El método anterior tiene un inconveniente : debe mantener dos configuraciones, la de Preferencias del sistema y la de .bash_profile
.
Afortunadamente, como se explica en blog de Derek Morgan , puede hacer que Bash importe el Preferencias del sistema, configuración de proxy mediante el comando scutil
. Simplemente siga los pasos detallados en la sección anterior, pero en el paso 3 configure las variables de entorno proxy http / https / ftp de la siguiente manera:
export HTTP_PROXY=$(scutil --proxy | awk '\
/HTTPEnable/ { enabled = $3; } \
/HTTPProxy/ { server = $3; } \
/HTTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export http_proxy=$HTTP_PROXY
export HTTPS_PROXY=$(scutil --proxy | awk '\
/HTTPSEnable/ { enabled = $3; } \
/HTTPSProxy/ { server = $3; } \
/HTTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export https_proxy=$HTTP_PROXY
export FTP_PROXY=$(scutil --proxy | awk '\
/FTPEnable/ { enabled = $3; } \
/FTPProxy/ { server = $3; } \
/FTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export ftp_proxy=$FTP_PROXY
En las definiciones anteriores, establezco http://
como el esquema para todos los servidores proxy, es posible que necesite modificarlos a socks5://
para SOCKS o https://
para HTTPS según sea necesario.