Comment puis-je configurer le proxy pour des réseaux particuliers afin qu'il fonctionne correctement sur toutes les applications ?
Vous avez configuré plusieurs proxies dans les préférences système, et c'est la bonne façon de procéder (c'est pourquoi l'application App Store et Safari fonctionnent bien). Malheureusement, le terminal est une exception et nécessite ses propres paramètres de proxy.
Pourquoi ça ? Le terminal est simplement un conteneur qui exécute un coquille . Un shell est un programme qui, en termes simples, affiche une invite et attend patiemment que vous exécutiez des commandes telles que ls
y rm
.
Les shells sont antérieurs à MacOS et ont leurs propres règles pour configurer les proxies. . Les shells ne connaissent pas les paramètres de proxy dans les Préférences Système, et ils doivent être configurés séparément.
Le shell par défaut de MacOS est Bash (vous pouvez savoir quel shell vous exécutez en exécutant echo $0
à l'invite), je vais donc vous expliquer comment définir le proxy en Bash.
La solution simple
-
Lancez le Terminal et tapez cette commande pour changer de répertoire vers notre répertoire personnel :
cd ~
-
Tapez ces commandes pour ouvrir .bash_profile
avec TextEdit :
touch .bash_profile
open -a TextEdit .bash_profile
-
Définir le proxy variables d'environnement en tapant le texte suivant dans TextEdit et en remplaçant <your http proxy>
, <your https proxy>
y <your ftp proxy>
avec votre serveur proxy (si TextEdit contient déjà du texte, ajoutez le texte ci-dessous à la fin du fichier) :
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 vous avez configuré dans les Préférences Système une liste d'hôtes et de domaines qui doivent être contactés directement en contournant le proxy, ajoutez-les comme suit :
export NO_PROXY="<comma-separated list of hosts>"
export no_proxy=$NO_PROXY
Par exemple :
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
-
Enregistrez le fichier avec S et fermez TextEdit.
-
Fermez le terminal et rouvrez-le. Maintenant, les paramètres du proxy devraient fonctionner correctement.
Une solution plus élaborée
La méthode ci-dessus présente un inconvénient : vous devez conserver deux configurations, celle qui se trouve dans les Préférences Système et celle qui se trouve dans les .bash_profile
.
Heureusement, comme expliqué sur Le blog de Derek Morgan , vous pouvez demander à Bash d'importer les paramètres du proxy des Préférences Système à l'aide de la fonction scutil
commande . Suivez simplement les étapes détaillées dans la section précédente, mais à l'étape 3, définissez les variables d'environnement du proxy http/https/ftp comme suit :
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
Dans les définitions ci-dessus, j'ai mis http://
comme schéma pour tous les serveurs proxy, vous pouvez être amené à les modifier pour socks5://
pour SOCKS ou https://
pour HTTPS si nécessaire.