Introduction : ce que vous obtiendrez au final

Si vous travaillez avec des proxys mobiles sur Mac, tôt ou tard vous tombez dans la même situation. Vous avez entré l'adresse et le port dans les réglages Wi-Fi, le site a affiché une nouvelle IP, vous étiez content. Puis vous découvrez que le Terminal télécharge les paquets en direct, que git passe par l'ancienne adresse, et que la moitié des applications n'a même pas remarqué le changement. Ce guide résout le problème entièrement.

Après avoir lu et suivi toutes les étapes, vous aurez un proxy configuré sur macOS qui fonctionne à trois niveaux simultanément :

  • Au niveau système : Safari, Chrome, Mail, les messageries et autres programmes qui respectent les réglages système.
  • Au niveau du Terminal : commandes networksetup pour activer, désactiver et changer le proxy sans un seul clic de souris.
  • Au niveau des outils de développement : curl, git, Homebrew, pip, npm et autres utilitaires qui lisent les variables d'environnement, pas les réglages système.

Nous examinerons séparément la liste d'exceptions. C'est ce fameux champ à cause duquel une partie du trafic passe à côté du proxy, alors que vous n'avez rien configuré de spécial. Vous comprendrez comment il fonctionne, ce qu'il faut y ajouter, ce qu'il faut en retirer, et comment vérifier qu'aucune requête ne passe en direct là où ce n'est pas souhaité.

À qui s'adresse ce guide

Le guide est écrit pour les débutants. Si vous n'avez jamais ouvert le Terminal, ce n'est pas grave : chaque commande sera décortiquée lettre par lettre et nous expliquerons ce qu'elle fait. Ce guide sera utile :

  • aux marketeurs et spécialistes SMM qui gèrent plusieurs projets depuis différentes IP ;
  • aux arbitragistes qui doivent changer rapidement de géo et tester des créas ;
  • aux développeurs qui testent des applications et des API via des proxys mobiles ;
  • aux chefs d'entreprise qui veulent comprendre une bonne fois pour toutes et ne plus appeler un spécialiste à chaque changement de proxy.

Pour les utilisateurs expérimentés, il y a un bloc avec des techniques avancées en fin d'article : emplacements réseau, fichiers PAC, alias dans le shell et scripts de rotation automatique.

Ce qu'il faut savoir à l'avance

Rien de compliqué. Il suffit de savoir ouvrir les Réglages Système et copier du texte. Tout le reste est expliqué au fur et à mesure. Nous n'abordons pas les réglages de navigateurs spécifiques ni des navigateurs anti-détection : d'autres articles du blog y sont consacrés. Ici, uniquement macOS en tant que système et ses outils intégrés.

Combien de temps cela prendra

La configuration de base via les Réglages Système prend 10 minutes. La configuration du Terminal et des outils de développement encore 15-20 minutes. La vérification complète et l'analyse des exceptions environ 10 minutes. Au total 30-40 minutes, si vous faites tout tranquillement et avec des vérifications.

Préparation préalable

Avant de modifier quoi que ce soit dans le système, rassemblons tout le nécessaire. Une bonne préparation fait gagner plus de temps que n'importe quelle astuce.

Ce dont vous aurez besoin

  • Un Mac avec macOS Ventura 13 ou plus récent. Tous les exemples ont été vérifiés sur macOS Sonoma 14, Sequoia 15 et Tahoe 26. Sur les anciennes versions avec l'application Réglages Système sous forme de grille d'icônes, le chemin vers le proxy est légèrement différent, nous indiquerons la différence séparément.
  • Les données du proxy mobile. C'est l'adresse du serveur (domaine ou IP), le port, l'identifiant et le mot de passe. Les proxys mobiles ont généralement deux ports : un pour le protocole HTTP, un autre pour SOCKS5. Gardez les deux sous la main.
  • Le lien de changement d'IP, si votre fournisseur en propose un. Il sera utile dans la section sur l'automatisation.
  • Les droits administrateur sur le Mac. Pour changer le proxy système via le Terminal, macOS demandera le mot de passe utilisateur.
  • Un éditeur de texte pour les notes. TextEdit ou Notes feront l'affaire.

Ce qu'il faut vérifier avant de commencer

  1. Assurez-vous qu'Internet fonctionne sans proxy. Ouvrez n'importe quel site dans Safari. S'il ne s'ouvre pas, résolvez d'abord le problème de réseau, sinon vous ne comprendrez pas ce qui a cassé ensuite.
  2. Déterminez par quelle interface vous êtes connecté : Wi-Fi ou câble Ethernet. Ouvrez les Réglages Système, section Réseau. La connexion active est marquée d'un point vert et du mot Connecté. Notez le nom : généralement Wi-Fi ou Ethernet.
  3. Vérifiez votre IP actuelle sans proxy. Ouvrez dans le navigateur n'importe quel service de vérification d'IP et notez l'adresse. C'est avec elle que nous comparerons le résultat.

Sauvegarde des réglages actuels

Les réglages proxy dans macOS se réinitialisent facilement, mais il vaut mieux fixer l'état initial. Surtout si vous travaillez sur un Mac d'entreprise où l'administrateur système a pu configurer quelque chose à l'avance.

  1. Ouvrez le Terminal. Appuyez sur Command et Espace, tapez le mot Terminal et appuyez sur Entrée.
  2. Copiez et collez la commande, puis appuyez sur Entrée :
scutil --proxy > ~/Desktop/proxy_backup.txt

Un fichier proxy_backup.txt apparaîtra sur le Bureau avec la description complète des réglages proxy actuels. Si vous faites une erreur, vous pourrez toujours comparer les valeurs avec ce fichier.

Conseil : Créez immédiatement dans Notes une fiche avec les données du proxy : hôte, port HTTP, port SOCKS5, identifiant, mot de passe, lien de rotation. Vous vous y référerez des dizaines de fois. Ne stockez pas le mot de passe en clair dans des documents partagés.

Notions de base : ce qu'il faut comprendre avant de commencer

Voici quelques termes sans lesquels les étapes suivantes deviendront de la magie. Lecture obligatoire, même si vous pensez les connaître.

Serveur proxy

C'est un intermédiaire entre votre Mac et Internet. Au lieu d'aller directement vers le site, votre requête passe d'abord par le serveur proxy, puis de là vers le site. Le site voit l'adresse IP du proxy, pas la vôtre. Un proxy mobile se distingue par le fait que son IP appartient à un opérateur de téléphonie mobile, et pour les sites vous ressemblez à un utilisateur ordinaire de smartphone.

Proxy HTTP et proxy SOCKS5

Ce sont deux façons différentes de communiquer avec le serveur proxy. Le proxy HTTP comprend le trafic web, fonctionne avec les sites et la majorité des applications. Dans macOS, il est divisé en deux interrupteurs : Proxy web (HTTP) pour les sites ordinaires et Proxy web sécurisé (HTTPS) pour les sites chiffrés. En pratique, on saisit la même adresse et le même port dans les deux champs.

Le proxy SOCKS5 fonctionne plus bas, au niveau des connexions, et fait passer n'importe quel trafic, pas seulement le web. Il est utile pour le Terminal, les messageries, les jeux. Un détail important de macOS : les réglages système permettent d'indiquer un identifiant et un mot de passe pour SOCKS, mais beaucoup d'applications ne supportent pas cette autorisation via le SOCKS système. C'est pourquoi dans les réglages système nous utiliserons HTTP, et nous réserverons SOCKS5 au Terminal et à certaines applications.

Proxy système

Ce sont les réglages stockés dans macOS pour une interface réseau donnée. Safari, Chrome, Mail, l'App Store et la plupart des applications en Swift et Objective-C les lisent automatiquement. Mais pas toutes. Les programmes écrits en Python, Go, Node.js, ainsi que les utilitaires Unix classiques comme curl et git ignorent les réglages système. Ils regardent les variables d'environnement.

Variables d'environnement

Ce sont des valeurs nommées qui vivent dans votre session Terminal. Par exemple, la variable http_proxy dit aux utilitaires : envoie tout le trafic HTTP ici. Les variables n'existent que dans la fenêtre Terminal ouverte, sauf si vous les écrivez dans un fichier de configuration du shell. Une étape y sera consacrée.

Liste d'exceptions

Dans macOS, elle s'appelle Ne pas utiliser de proxy pour ces hôtes et domaines. Toutes les adresses de cette liste sont envoyées directement par le système, sans passer par le proxy. Par défaut, il y a déjà des entrées *.local et 169.254/16, qui concernent le réseau local et ne doivent pas être supprimées. Le problème commence quand des masques inutiles entrent dans la liste ou quand vous attendez que les exceptions fonctionnent dans le Terminal. Elles ne fonctionneront pas : le Terminal a sa propre liste, la variable no_proxy. Nous allons tout examiner.

Service réseau

C'est ainsi que macOS nomme chaque interface : Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB. Le proxy se configure séparément pour chaque service. Si vous avez configuré le Wi-Fi, puis branché un câble, le proxy cessera de fonctionner. C'est l'une des causes les plus fréquentes de la question : pourquoi le proxy sur macOS fonctionne parfois et parfois non.

Étape 1 : Vérifier les données du proxy avant de configurer le système

Objectif de cette étape : s'assurer que le proxy est vivant et que l'identifiant et le mot de passe sont corrects. Cela évitera une demi-heure de recherche d'erreur dans les réglages alors que le problème était une faute de frappe dans le mot de passe.

Nous vérifierons avec curl. Cet utilitaire est déjà présent dans macOS, rien à installer.

  1. Ouvrez le Terminal, s'il n'est pas encore ouvert.
  2. Prenez les données du proxy dans votre fiche. Pour l'exemple, nous utiliserons des valeurs fictives : hôte proxy.example.net, port HTTP 10000, port SOCKS5 10001, identifiant user123, mot de passe pass456. Remplacez par vos vraies données à la place de celles-ci.
  3. Saisissez la commande pour tester le port HTTP et appuyez sur Entrée :
curl -x http://user123:pass456@proxy.example.net:10000 https://ifconfig.me

Décortiquons ce qui est écrit. L'option -x indique à curl l'adresse du proxy. Ensuite vient le protocole http, puis l'identifiant, deux-points, le mot de passe, le symbole arobase, l'hôte, deux-points, le port. À la fin, l'adresse du service qui renvoie en réponse l'IP d'où provient la requête.

  1. Après 1 à 3 secondes, une adresse IP apparaîtra dans le Terminal. C'est l'IP de votre proxy mobile. Si elle diffère de celle que vous avez notée lors de la préparation, tout fonctionne.
  2. Vérifiez maintenant le port SOCKS5 avec la même commande, en remplaçant le protocole et le port :
curl -x socks5h://user123:pass456@proxy.example.net:10001 https://ifconfig.me

Remarquez la lettre h dans socks5h. Elle signifie que les noms de domaine seront résolus du côté du proxy, et non sur votre Mac. Pour les proxys mobiles, c'est la bonne option : vous ne laissez pas de requêtes DNS à votre fournisseur domestique.

Attention : Si le mot de passe contient des caractères arobase, deux-points, slash, dièse, point d'interrogation ou pourcentage, il faut les encoder. Remplacez l'arobase par %40, le deux-points par %3A, le dièse par %23, le point d'interrogation par %3F, le pourcentage par %25. Sinon curl découpera mal la chaîne et pensera que le mot de passe s'est terminé trop tôt.

Problèmes possibles à cette étape

  • Réponse Received HTTP code 407 from proxy after CONNECT. Le proxy refuse l'autorisation. Vérifiez l'identifiant et le mot de passe, regardez les caractères spéciaux. Assurez-vous que dans l'espace client du fournisseur, l'autorisation par IP n'est pas activée à la place de l'identifiant et du mot de passe.
  • Réponse Failed to connect ou Connection timed out. Hôte ou port incorrect, ou proxy éteint. Vérifiez dans l'espace client. Essayez un autre port.
  • La commande s'est figée sans sortie. Attendez 30 secondes. Les réseaux mobiles sont parfois lents. Si rien ne se passe, appuyez sur Control et C pour interrompre, et vérifiez les données.

Vérification : Les deux commandes curl ont renvoyé une adresse IP différente de votre IP domestique. Vous pouvez passer à la suite. Si au moins une n'a pas fonctionné, continuer n'a pas de sens : le système utilisera les mêmes données.

Étape 2 : Configurer le proxy via les Réglages Système de macOS

Objectif de cette étape : faire en sorte que Safari, Chrome et toutes les applications qui respectent le proxy système passent par votre proxy mobile.

Ouvrir le bon écran

  1. Cliquez sur l'icône Apple dans le coin supérieur gauche de l'écran et choisissez Réglages Système.
  2. Dans la colonne de gauche, cliquez sur Wi-Fi si vous êtes connecté en sans fil. Si par câble, cliquez sur Réseau, puis Ethernet.
  3. Trouvez le nom de votre réseau. À sa droite, il y a un bouton Détails avec trois points ou une inscription. Cliquez dessus.
  4. Une fenêtre avec les paramètres de connexion s'ouvrira. Dans la colonne de gauche de cette fenêtre, choisissez l'élément Proxy. Il se trouve tout en bas de la liste, après TCP/IP, DNS et WINS.

Vous verrez une liste d'interrupteurs : Détection automatique du proxy, Configuration automatique du proxy, Proxy web (HTTP), Proxy web sécurisé (HTTPS), Proxy FTP, Proxy SOCKS, Proxy de flux (RTSP), Proxy Gopher. En bas, le champ Ne pas utiliser de proxy pour ces hôtes et domaines.

Si vous avez un ancien macOS où les Réglages Système ressemblent à une grille d'icônes, le chemin est : Réglages Système, Réseau, choisissez l'interface à gauche, bouton Avancé, onglet Proxys. Ensuite tout est identique.

Activer le proxy HTTP

  1. Cliquez sur l'interrupteur Proxy web (HTTP). Il deviendra bleu, et des champs de saisie apparaîtront en dessous.
  2. Dans le champ Serveur, saisissez l'hôte de votre proxy, par exemple proxy.example.net. Sans http://, sans slash, seulement l'hôte.
  3. Dans le champ Port à droite, saisissez le port HTTP, par exemple 10000.
  4. Activez l'interrupteur Le proxy nécessite un mot de passe.
  5. Dans le champ Nom d'utilisateur, saisissez l'identifiant. Dans le champ Mot de passe, saisissez le mot de passe. Ici, inutile d'encoder les caractères spéciaux, saisissez-les tels quels.

Activer le proxy HTTPS

La plupart des sites fonctionnent aujourd'hui en HTTPS, donc cet élément est obligatoire. Sans lui, le trafic chiffré passera en direct, et vous vous demanderez pourquoi certains sites voient le proxy et d'autres votre IP réelle.

  1. Cliquez sur l'interrupteur Proxy web sécurisé (HTTPS).
  2. Saisissez exactement le même hôte et le même port que pour HTTP. Les proxys mobiles traitent les deux types de trafic sur le même port.
  3. Activez Le proxy nécessite un mot de passe, saisissez l'identifiant et le mot de passe à nouveau.

À propos du proxy SOCKS et des autres interrupteurs

Laissez l'interrupteur Proxy SOCKS désactivé dans les réglages système si vous avez activé HTTP et HTTPS. La raison est qu'avec le SOCKS système activé, certaines applications commencent à le préférer, et l'autorisation via le SOCKS système n'est pas supportée par toutes. Résultat : certains programmes perdent l'accès au réseau. FTP, RTSP et Gopher ne doivent pas être touchés, ce sont des protocoles obsolètes. Laissez aussi Détection automatique et Configuration automatique désactivés, sinon ils peuvent écraser vos valeurs manuelles.

Enregistrer

  1. Cliquez sur le bouton OK dans le coin inférieur droit de la fenêtre.
  2. Si le système demande le mot de passe de votre utilisateur Mac, saisissez-le. C'est normal : modifier les réglages réseau nécessite les droits administrateur.
  3. Fermez complètement Safari ou Chrome et rouvrez-les. Les navigateurs mettent en cache les réglages proxy au démarrage.

Conseil : Lors de la première requête via le proxy, macOS peut afficher une fenêtre système demandant de saisir l'identifiant et le mot de passe du proxy, même si vous les avez déjà entrés. Saisissez les données et cochez Se souvenir dans le trousseau. Après cela, la fenêtre ne réapparaîtra plus.

Vérification : Ouvrez dans Safari un service de vérification d'IP. L'adresse doit correspondre à celle renvoyée par la commande curl à l'Étape 1. Vérifiez aussi la page de détection de l'opérateur : un opérateur mobile doit s'afficher, pas votre fournisseur domestique.

Problèmes possibles

  • Les sites ne s'ouvrent pas du tout. Vérifiez que vous avez bien activé HTTP et HTTPS, et non FTP ou SOCKS. Vérifiez le port. Désactivez temporairement les deux interrupteurs et assurez-vous qu'Internet est revenu : vous comprendrez ainsi que le problème vient des réglages proxy et non du réseau.
  • La fenêtre de saisie du mot de passe s'affiche en permanence. Le mot de passe a été saisi avec une erreur ou contient un espace à la fin après un copier-coller. Effacez le contenu du champ, saisissez le mot de passe à nouveau manuellement.
  • L'IP n'a pas changé. Vous avez probablement configuré la mauvaise interface. Revenez dans la section Réseau et vérifiez quel service est marqué comme Connecté.

Étape 3 : Configurer correctement la liste d'exceptions

Objectif de cette étape : comprendre quel trafic le système fait passer à côté du proxy, et configurer la liste de manière à ce que les services locaux fonctionnent et que le trafic externe ne fuie pas.

Le champ Ne pas utiliser de proxy pour ces hôtes et domaines se trouve en bas de l'écran Proxy. Par défaut, on y lit : *.local, 169.254/16. Beaucoup d'utilisateurs soit ne le regardent pas du tout, soit commencent à y inscrire n'importe quoi.

Comment lire la liste

  • *.local signifie toutes les adresses se terminant par .local. Ce sont les appareils de votre réseau domestique : imprimante, disque réseau, autres Mac. On ne peut pas les ouvrir via un proxy externe physiquement, donc cette entrée est nécessaire.
  • 169.254/16 désigne la plage d'adresses de service que le Mac s'attribue lorsqu'il n'a pas reçu d'adresse du routeur. Encore une histoire locale.
  • Les entrées sont séparées par des virgules. Les espaces après les virgules sont autorisés.
  • L'astérisque remplace n'importe quelle partie du nom. L'entrée *.example.com exclura tous les sous-domaines d'example.com, mais pas example.com lui-même. Pour celui-ci, une entrée séparée est nécessaire.
  • On peut indiquer des adresses IP et des sous-réseaux au format adresse/masque, par exemple 192.168.0.0/16 pour tout le réseau domestique.

Ce qu'il faut ajouter

  1. Cliquez dans le champ des exceptions après la dernière entrée.
  2. Ajoutez séparés par des virgules localhost et 127.0.0.1. Sans eux, les serveurs web locaux des développeurs et les panneaux d'administration sur votre Mac essaieront de passer par le proxy mobile et planteront.
  3. Si vous utilisez des appareils domestiques par IP, ajoutez votre sous-réseau local. Généralement c'est 192.168.0.0/16 ou 10.0.0.0/8. Vous pouvez voir votre adresse locale sur l'écran TCP/IP dans la même fenêtre.
  4. Cliquez sur OK.

La liste finale pour la plupart des utilisateurs ressemble à ceci : *.local, 169.254/16, localhost, 127.0.0.1, 192.168.0.0/16.

Ce qu'il ne faut pas ajouter

C'est ici que commence ce que le titre appelle le contournement des exceptions. Il s'agit des situations où le trafic passe à côté du proxy non pas parce que vous le vouliez, mais parce que la liste est mal composée.

  • N'inscrivez pas un astérisque seul ou *.com. Un tel masque désactivera le proxy pour pratiquement tout Internet, alors que les interrupteurs resteront bleus et vous penserez que tout fonctionne.
  • N'inscrivez pas les domaines des services avec lesquels vous travaillez. Si vous ajoutez *.facebook.com pour accélérer le chargement, le site verra votre IP réelle. Pour les tâches de multi-comptes, c'est critique.
  • N'inscrivez pas l'hôte du proxy lui-même. Cela n'a pas de sens : la connexion au proxy se fait de toute façon en direct.
  • Ne supprimez pas *.local et 169.254/16. AirDrop, l'impression, l'accès au routeur se casseraient.

Attention : La liste d'exceptions dans les réglages système n'agit que sur les applications qui utilisent le proxy système. Le Terminal, curl, git et les scripts Python ne la voient pas. Ils ont leur propre liste, la variable no_proxy, et elle se configure séparément. Nous y arriverons à l'Étape 5. Si vous attendez qu'une entrée de la liste système influence un script, vous serez déçu.

Conseil : Ouvrez périodiquement la liste d'exceptions et vérifiez-la à l'œil. Certains utilitaires d'entreprise et agents de gestion d'appareils y ajoutent leurs propres domaines lors de l'installation. Détecter un masque superflu du type *.com en dix secondes est plus simple que chercher pendant une semaine la cause d'une fuite d'IP.

Vérification : Ouvrez dans le navigateur l'adresse http://localhost ou n'importe quelle page locale que vous avez. Elle doit s'ouvrir instantanément sans erreur de proxy. Ouvrez ensuite un service externe de vérification d'IP : il doit toujours afficher l'IP du proxy mobile.

Étape 4 : Gérer le proxy depuis le Terminal avec la commande networksetup

Objectif de cette étape : apprendre à activer, désactiver et changer le proxy système d'une seule commande, sans souris et sans dix clics dans les réglages. C'est la compétence qui rembourse en un mois le temps passé à lire cette section.

macOS dispose de l'utilitaire intégré networksetup. Il fait exactement la même chose que les Réglages Système, mais en ligne de commande. Tout ce que vous avez configuré à l'Étape 2 peut être répété, modifié ou annulé en une seule ligne.

Connaître le nom exact du service réseau

  1. Dans le Terminal, saisissez la commande et appuyez sur Entrée :
networksetup -listallnetworkservices

Vous verrez une liste comme : Wi-Fi, Ethernet, Thunderbolt Bridge, iPhone USB. Trouvez celui par lequel vous êtes connecté. Dans les commandes suivantes, nous utiliserons Wi-Fi. Si votre service s'appelle autrement, remplacez son nom. Si le nom contient un espace, par exemple Thunderbolt Bridge, mettez-le entre guillemets doubles.

Consulter les réglages actuels

networksetup -getwebproxy Wi-Fi

En réponse, vous verrez quatre lignes : Enabled: Yes ou No, Server, Port, Authenticated Proxy Enabled. Si vous avez fait l'Étape 2, Enabled sera Yes, et le serveur et le port correspondront à ceux saisis. Idem pour HTTPS :

networksetup -getsecurewebproxy Wi-Fi

Activer les proxys HTTP et HTTPS en une commande

Format de la commande : networksetup, action, service, hôte, port, activer l'autorisation, identifiant, mot de passe.

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

Saisissez les deux commandes l'une après l'autre. Après chacune, le système peut demander le mot de passe de l'utilisateur Mac. Saisissez-le, les caractères ne s'affichent pas lors de la saisie, c'est normal. Appuyez sur Entrée.

Le mot on après le port active l'autorisation. Si votre proxy utilise l'autorisation par IP et non par identifiant, écrivez off et n'indiquez ni identifiant ni mot de passe.

Désactiver et activer le proxy sans perdre les réglages

La paire de commandes la plus utile. Elles n'effacent pas l'hôte et le port, elles déplacent seulement l'interrupteur :

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

Pour réactiver, remplacez off par on. Ainsi, en deux secondes, vous basculez le Mac en mode connexion directe et inversement.

Gérer la liste d'exceptions depuis le Terminal

Consulter la liste actuelle :

networksetup -getproxybypassdomains Wi-Fi

Définir une nouvelle liste complète. La commande remplace toutes les entrées, donc énumérez l'ensemble complet séparé par des espaces :

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

Les entrées avec astérisque et slash sont mises entre guillemets pour que le shell n'essaie pas de les interpréter. On peut vider complètement la liste avec le mot Empty à la place des domaines, mais souvenez-vous : alors les adresses locales passeront par le proxy et cesseront de fonctionner.

Commande universelle de consultation

L'utilitaire scutil affiche tous les réglages proxy au même endroit, y compris les exceptions :

scutil --proxy

Cherchez les lignes HTTPEnable, HTTPProxy, HTTPPort, HTTPSEnable, ExceptionsList. La valeur 1 signifie activé, 0 désactivé. C'est précisément cette commande que nous avons utilisée pour la sauvegarde.

Conseil : Ouvrez les Réglages Système sur l'écran Proxy et exécutez une commande networksetup dans le Terminal à côté. Vous verrez les interrupteurs changer en temps réel. C'est la meilleure façon de s'assurer que le Terminal et l'interface graphique gèrent les mêmes données.

Problèmes possibles

  • Erreur : Wi-Fi is not a recognized network service. Le service s'appelle autrement. Exécutez networksetup -listallnetworkservices et copiez le nom exact.
  • La commande a réussi, mais rien n'a changé dans les réglages. Fermez et rouvrez la fenêtre des Réglages Système, elle ne se met pas toujours à jour instantanément.
  • Il demande le mot de passe et écrit Sorry, try again. C'est le mot de passe de l'utilisateur Mac qui est saisi, pas celui du proxy. Les caractères ne s'affichent pas, tapez simplement et appuyez sur Entrée.

Vérification : Exécutez networksetup -setwebproxystate Wi-Fi off, actualisez le service de vérification d'IP dans le navigateur, vous verrez votre IP domestique. Exécutez la même commande avec on, actualisez la page, vous verrez l'IP du proxy. Si le basculement fonctionne dans les deux sens, cette étape est franchie.

Étape 5 : Configurer le proxy pour curl, git, Homebrew, pip et npm

Objectif de cette étape : faire en sorte que les outils en ligne de commande fonctionnent via le proxy. C'est précisément ici que fuit le plus de trafic, car ces programmes ne regardent pas les réglages système.

Pourquoi le proxy système ne fonctionne pas ici

Les utilitaires comme curl, wget, git, pip, npm, brew sont conçus pour fonctionner sur tous les systèmes Unix. Ils ne connaissent pas macOS et ses Réglages Système. À la place, ils lisent les variables d'environnement nommées http_proxy, https_proxy, all_proxy et no_proxy. Si les variables sont absentes, le trafic passe en direct. Les interrupteurs dans les réglages peuvent être bleus tant que vous voulez.

Activation temporaire dans la fenêtre Terminal actuelle

Saisissez trois commandes l'une après l'autre :

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

La première dirige le trafic HTTP vers le proxy. La deuxième dirige le trafic HTTPS au même endroit. Remarquez : dans la valeur https_proxy, le protocole reste http, car c'est le protocole de communication avec le proxy, pas avec le site. La troisième définit les exceptions pour le Terminal. C'est cette fameuse liste séparée dont nous parlions à l'Étape 3.

Certains programmes ne lisent les variables qu'en majuscules. Pour ne pas avoir à deviner, définissez-les aussi :

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

Vérifiez maintenant sans l'option -x :

curl https://ifconfig.me

Si l'IP du proxy est revenue, les variables fonctionnent. Tous les programmes lancés depuis cette fenêtre Terminal passeront désormais par le proxy mobile. Fermez la fenêtre, les variables disparaîtront.

Activation permanente via le fichier de configuration du shell

Sur macOS moderne, le shell par défaut est zsh, et sa configuration est stockée dans le fichier .zshrc dans votre dossier personnel. Tout ce qui y est écrit s'exécute à l'ouverture de chaque nouvelle fenêtre Terminal.

  1. Ouvrez le fichier dans l'éditeur nano avec la commande :
nano ~/.zshrc
  1. Avec les flèches, descendez à la fin du fichier.
  2. Collez les lignes export de la section précédente.
  3. Appuyez sur Control et O, puis Entrée, pour enregistrer. Appuyez sur Control et X pour quitter.
  4. Appliquez les changements sans redémarrer :
source ~/.zshrc

Attention : Dans .zshrc, le mot de passe est stocké en clair. Si le Mac est partagé ou si vous synchronisez le fichier dans le cloud, réfléchissez à deux fois. Une variante de compromis est décrite dans le bloc des réglages avancés : des alias qui activent le proxy par une commande courte, et non automatiquement.

Git

Git sait lire les variables d'environnement, mais il est plus fiable de définir les réglages dans sa configuration :

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

Désactiver :

git config --global --unset http.proxy

Ce réglage affecte les opérations clone, pull, push via HTTPS. Pour l'accès SSH aux dépôts, une autre approche est nécessaire, elle est dans le bloc avancé.

Homebrew

Brew se repose entièrement sur les variables d'environnement. Si vous les avez définies dans .zshrc, rien de plus à faire. Vérifiez avec la commande brew update : la mise à jour doit se faire sans erreur de connexion.

pip

L'installateur Python lit aussi les variables d'environnement. Pour un lancement ponctuel via le proxy sans variables, utilisez l'option :

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

npm

Le gestionnaire de paquets Node.js stocke ses réglages séparément :

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

Désactiver : npm config delete proxy et npm config delete https-proxy.

SOCKS5 pour le Terminal

Si vous voulez faire passer le trafic du Terminal par le port SOCKS5, au lieu de http_proxy et https_proxy, définissez une seule variable :

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

Curl et beaucoup d'utilitaires la comprennent. Mais pas tous : git via HTTPS ne lit pas toujours la variable all_proxy, et pip ne comprend pas SOCKS sans paquet supplémentaire. Pour l'universalité, nous recommandons aux débutants la variante HTTP.

Conseil : Ajoutez dans .zshrc la ligne alias myip='curl -s https://ifconfig.me; echo' et ensuite tapez myip pour voir en une seconde l'IP actuelle du Terminal. Cela économise des dizaines de vérifications par jour.

Vérification : Ouvrez une nouvelle fenêtre Terminal. Exécutez curl https://ifconfig.me et git config --global --get http.proxy. La première commande renvoie l'IP du proxy, la seconde affiche l'adresse du proxy. Cela signifie que les outils sont configurés et que les réglages survivent au redémarrage.

Étape 6 : Trouver le trafic qui passe à côté du proxy et le corriger

Objectif de cette étape : s'assurer qu'aucune application de votre ensemble de travail ne va sur Internet directement à votre insu. Ici, nous systématisons toutes les causes de fuites et vérifions chacune.

Cause 1 : une application avec ses propres réglages proxy

Certains programmes ignorent le proxy système et les variables d'environnement, parce qu'ils ont leurs propres réglages. Exemples classiques : Telegram Desktop, Firefox, Discord, certains clients mail, clients torrent, navigateurs anti-détection. Chacun a une section Réseau ou Proxy dans ses réglages.

  1. Dressez la liste des applications avec lesquelles vous travaillez.
  2. Ouvrez chacune et trouvez la section des réglages réseau. S'il y a un choix Utiliser les réglages proxy système, choisissez-le. S'il n'y a qu'une saisie manuelle, entrez l'hôte, le port, l'identifiant et le mot de passe.
  3. Vérifiez l'IP dans l'application, si elle le permet, ou via un service de vérification ouvert dans cette application.

Les réglages des navigateurs spécifiques et des anti-détections sont traités séparément dans le blog, nous ne les répétons pas ici. L'important est de comprendre le principe : pour chaque application, il faut vérifier d'où elle tire son proxy.

Cause 2 : une application lancée hors Terminal

Les variables d'environnement de .zshrc n'agissent que sur les programmes lancés depuis le Terminal. Si vous lancez un script par double-clic, via un éditeur de code ou un planificateur, les variables ne seront pas prises en compte. Solution : définissez le proxy dans le script explicitement, ou lancez le script depuis le Terminal, ou indiquez les variables dans les réglages de votre éditeur de code.

Cause 3 : mauvais service réseau

Vous avez configuré le Wi-Fi, mais le Mac s'est connecté par câble parce que vous avez branché une station d'accueil. Ou l'inverse. La vérification est simple : networksetup -listallnetworkservices affichera tous les services, et la section Réseau dans les réglages mettra en évidence l'actif. Configurez le proxy pour chaque service que vous utilisez. Les commandes networksetup de l'Étape 4 doivent être répétées en remplaçant Wi-Fi par Ethernet.

Cause 4 : masques superflus dans la liste d'exceptions

Nous en avons parlé à l'Étape 3. Exécutez networksetup -getproxybypassdomains Wi-Fi et assurez-vous qu'il n'y a pas d'astérisque seul, de masques du type *.com, *.ru, *.net et de domaines de services de travail. Vérifiez la même chose dans la variable no_proxy avec la commande echo $no_proxy.

Cause 5 : IPv6

Si votre fournisseur domestique attribue une adresse IPv6 et que le proxy fonctionne en IPv4, certaines applications peuvent essayer de passer en IPv6 en direct. Pour les applications système, c'est rare, mais pour les utilitaires, cela arrive. Vérifiez que le service de vérification d'IP n'affiche pas une longue adresse avec des deux-points. S'il en affiche une, ouvrez les réglages du service, l'onglet TCP/IP et basculez Configurer IPv6 sur Liaison locale uniquement.

Cause 6 : HTTPS activé, mais HTTP non, ou l'inverse

Dans les réglages système, ce sont deux interrupteurs indépendants. Vous en avez oublié un, et la moitié du trafic fuit. Exécutez scutil --proxy et assurez-vous que HTTPEnable et HTTPSEnable sont tous deux égaux à 1.

Cause 7 : cache du navigateur et connexions ouvertes

Un navigateur lancé avant la modification des réglages peut conserver d'anciennes connexions encore quelques minutes. Fermez complètement l'application avec Command et Q, pas avec la croix, et rouvrez-la.

Conseil : Organisez-vous un tour de contrôle. Ouvrez un service de vérification d'IP dans Safari, dans Chrome, via curl dans le Terminal et à l'intérieur de chaque application de travail. Notez les quatre résultats côte à côte. Si tous correspondent à l'IP du proxy mobile, il n'y a pas de fuite. Répétez ce tour après chaque changement de proxy ou mise à jour du système.

Vérification : Tous les points de contrôle de la liste ci-dessus affichent la même IP de proxy mobile. Les adresses locales s'ouvrent en direct. Aucun interrupteur n'est resté accidentellement désactivé.

Vérification du résultat : checklist finale

Parcourez la liste et cochez chaque point. Si l'un ne s'applique pas, revenez à l'étape correspondante.

Niveau système

  • Dans les Réglages Système, sur l'écran Proxy, Proxy web (HTTP) et Proxy web sécurisé (HTTPS) sont activés, les deux avec le même hôte et le même port.
  • L'autorisation est activée, l'identifiant et le mot de passe sont enregistrés, la fenêtre de saisie du mot de passe n'apparaît plus.
  • Safari affiche l'IP du proxy mobile et l'opérateur mobile.
  • La liste d'exceptions contient *.local, 169.254/16, localhost, 127.0.0.1 et votre sous-réseau local. Aucun masque superflu.
  • Les adresses locales s'ouvrent sans erreur.

Terminal

  • La commande networksetup -getwebproxy Wi-Fi affiche Enabled: Yes et le bon serveur.
  • Les commandes d'activation et de désactivation via networksetup fonctionnent dans les deux sens.
  • Dans une nouvelle fenêtre Terminal, echo $http_proxy affiche l'adresse du proxy.
  • curl https://ifconfig.me sans l'option -x renvoie l'IP du proxy.
  • echo $no_proxy affiche la liste des exceptions locales.

Outils

  • git config --global --get http.proxy renvoie l'adresse du proxy.
  • brew update se termine sans erreur de connexion.
  • npm config get proxy renvoie l'adresse du proxy, si vous travaillez avec Node.js.
  • Toutes les applications de travail avec leurs propres réglages réseau sont basculées sur le proxy système ou configurées manuellement.

Comment tester l'ensemble

  1. Désactivez le proxy système avec les commandes networksetup -setwebproxystate Wi-Fi off et networksetup -setsecurewebproxystate Wi-Fi off.
  2. Actualisez le service de vérification d'IP dans le navigateur. L'IP domestique doit apparaître.
  3. Exécutez curl https://ifconfig.me dans le Terminal. L'IP du proxy doit rester, car le Terminal utilise les variables, pas les réglages système. Cela confirme que les niveaux sont indépendants.
  4. Réactivez le proxy système. Actualisez le navigateur. L'IP du proxy doit revenir.
  5. Ouvrez une nouvelle fenêtre Terminal, exécutez unset http_proxy https_proxy et de nouveau curl. Maintenant le Terminal affichera l'IP domestique. Fermez la fenêtre : dans la suivante, les variables seront à nouveau reprises depuis .zshrc.

Si chaque transition a donné le résultat attendu, vous contrôlez entièrement le proxy sur macOS à tous les niveaux. C'était l'objectif.

Erreurs typiques et solutions

Le proxy est activé, mais l'IP ne change pas

Cause : mauvaise interface réseau configurée, ou un seul des interrupteurs HTTP et HTTPS activé, ou navigateur non redémarré.

Solution : vérifiez le service actif dans la section Réseau, exécutez scutil --proxy et assurez-vous que les deux Enable valent 1, fermez complètement le navigateur avec Command et Q.

La fenêtre demandant le mot de passe du proxy apparaît en permanence

Cause : erreur dans l'identifiant ou le mot de passe, espace superflu après un copier-coller, ou anciennes données d'un proxy précédent enregistrées dans le trousseau.

Solution : effacez le contenu des champs et saisissez à nouveau manuellement. Ouvrez l'application Trousseau d'accès, trouvez l'entrée avec l'hôte du proxy et supprimez-la, puis saisissez à nouveau les données et cochez Se souvenir.

Certains sites s'ouvrent via le proxy, d'autres en direct

Cause : seul HTTP ou seul HTTPS est activé, ou un masque large est apparu dans la liste d'exceptions.

Solution : activez les deux interrupteurs. Vérifiez la liste d'exceptions avec la commande networksetup -getproxybypassdomains et supprimez tout ce qui ne concerne pas le réseau local.

Le Terminal ignore le proxy, alors que le système est configuré

Cause : les utilitaires en ligne de commande ne lisent pas les réglages système. Les variables d'environnement ne sont pas définies ou le sont dans une autre fenêtre.

Solution : inscrivez les lignes export dans .zshrc et exécutez source ~/.zshrc. Vérifiez echo $http_proxy.

Erreur 407 Proxy Authentication Required

Cause : le proxy n'accepte pas l'identifiant et le mot de passe. Souvent, c'est à cause des caractères spéciaux du mot de passe dans la chaîne URL.

Solution : encodez les caractères spéciaux : arobase en %40, deux-points en %3A, dièse en %23. Assurez-vous que dans l'espace client du fournisseur, l'autorisation par IP n'est pas activée.

Les services locaux, l'imprimante ou le routeur ont cessé de fonctionner

Cause : *.local et 169.254/16 ont été supprimés de la liste d'exceptions, ou localhost et le sous-réseau local n'ont pas été ajoutés.

Solution : restaurez la liste avec la commande networksetup -setproxybypassdomains avec l'ensemble complet des entrées de l'Étape 3.

Après le redémarrage du Mac, le proxy a disparu dans le Terminal

Cause : les variables ont été définies uniquement via export dans une fenêtre ouverte, et non dans .zshrc.

Solution : ouvrez nano ~/.zshrc, ajoutez les lignes et enregistrez. Si vous avez un autre shell, par exemple bash, le fichier s'appelle .bash_profile.

Tout fonctionnait, puis après une mise à jour macOS, tout s'est cassé

Cause : les grandes mises à jour du système réinitialisent parfois les réglages des services réseau ou les renomment.

Solution : ouvrez le fichier proxy_backup.txt sur le Bureau, comparez les valeurs et répétez l'Étape 4 avec les commandes networksetup. Vérifiez la liste des services : un nouveau est peut-être apparu.

Chargement lent des pages

Cause : c'est le comportement normal des proxys mobiles, le réseau cellulaire est plus lent que le fournisseur domestique. Mais parfois la cause est que le proxy HTTP et SOCKS sont activés simultanément, et les applications tentent deux fois d'établir une connexion.

Solution : désactivez le SOCKS système, ne laissez que HTTP et HTTPS. Si la vitesse reste faible, essayez de changer d'IP via le lien de rotation.

Fonctionnalités supplémentaires pour utilisateurs avancés

La configuration de base est faite. Voici quelques techniques qui transforment le travail manuel en système pratique.

Emplacements réseau : deux profils, un seul basculement

macOS permet de créer plusieurs ensembles de réglages réseau et de basculer entre eux entièrement. C'est plus pratique que de déplacer chaque fois les interrupteurs.

  1. Ouvrez les Réglages Système, section Réseau.
  2. Cliquez sur le bouton à trois points en bas de la liste des services et choisissez Emplacements, puis Modifier les emplacements.
  3. Cliquez sur le plus, nommez le nouvel emplacement Proxy. Cliquez sur OK.
  4. Sélectionnez l'emplacement créé dans la liste. Configurez le proxy pour Wi-Fi et Ethernet, comme à l'Étape 2.
  5. Laissez l'emplacement d'origine Automatique sans proxy.

Désormais, on peut basculer via le menu Apple, élément Emplacement, ou par une commande dans le Terminal :

networksetup -switchtolocation Прокси

Et inversement : networksetup -switchtolocation Автоматически. Tous les services basculent simultanément, pas d'erreur avec la mauvaise interface.

Alias pour activer et désactiver rapidement dans le Terminal

Si vous ne voulez pas garder le proxy activé en permanence, ajoutez dans .zshrc deux fonctions à la place des export directs :

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

Après source ~/.zshrc, la commande proxyon active le proxy dans la fenêtre actuelle, proxyoff le désactive. Le mot de passe est toujours dans le fichier, mais le proxy ne s'active pas sans votre décision.

Commande unique pour le système et le Terminal

Étendez la fonction proxyon en y ajoutant les lignes networksetup -setwebproxystate Wi-Fi on et networksetup -setsecurewebproxystate Wi-Fi on. Alors une seule commande activera le proxy à la fois pour les navigateurs et le Terminal. Dans proxyoff, ajoutez les mêmes commandes avec off. Le système demandera le mot de passe administrateur une fois par session.

Changer l'IP du proxy mobile depuis le Terminal

La plupart des fournisseurs de proxys mobiles proposent un lien pour changer d'IP. On peut le déclencher via curl sans ouvrir le navigateur :

curl -s "https://адрес-ротации-из-личного-кабинета"

Enveloppez-le dans une fonction newip et ajoutez-la dans .zshrc. La combinaison newip, puis myip affichera la nouvelle adresse en deux secondes. Pour les arbitragistes qui font des dizaines de vérifications par jour, c'est un gain de temps notable.

SSH via un proxy SOCKS5

Si vous vous connectez à des serveurs en SSH et voulez que la connexion passe par le proxy mobile, ajoutez dans le fichier ~/.ssh/config un bloc :

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

L'utilitaire nc est intégré à macOS. L'option -X 5 signifie SOCKS5, l'option -x définit l'adresse du proxy. nc ne supporte pas l'autorisation par identifiant et mot de passe, donc cette méthode convient aux proxys avec autorisation par IP.

Fichier PAC pour des règles flexibles

L'interrupteur Configuration automatique du proxy accepte l'adresse d'un fichier PAC : un script JavaScript qui décide pour chaque adresse s'il faut passer par le proxy ou aller en direct. C'est un moyen de mettre en œuvre des exceptions complexes qui ne s'expriment pas par des masques. On peut stocker le fichier localement et l'indiquer comme file:/

À propos de l'auteur

Roman Melnikov

Roman Melnikov

Technical Writer and System Administrator

Expérience professionnelle : 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.
Formation : Bauman Moscow State Technical University. Information Systems and Technologies
Expertise :
Technical Documentation DevOps System Administration Linux Docker and Kubernetes CI/CD Infrastructure Automation Cloud Technologies System Monitoring Bash and Python Scripting

Partagez cet article :