Commande de gestion de proxy sous Windows 10

Retour aux articles Dans #blog le 31/05/2017 par Emmanuel BALLERY

Commande de gestion de proxy sous Windows 10

Lors de mes activités - notamment de formation - je suis amené à changer mes paramètres de proxy relativement souvent sous Windows 10. Cependant, je ne me limite pas à naviguer sur le web, j'utilise aussi beaucoup d'outils en ligne de commande et ce paramétrage n'est pas toujours simple à appliquer globalement sur le système. Des outils comme git, npm, composer (...) ne prennent pas toujours en compte le paramétrage fait via la fenêtre Windows 10 suivante :

Configuration du Proxy sous Windows 10

Ces paramètres sont principalement lus par vos navigateurs web (Edge, Chrome, Firefox, ...). Il faudra donc configurer les autres outils via d'autres configurations ou unitairement.

Mon but est donc de maintenir un script de configuration. En arrivant sur certains lieux de formation/travail, je pourrai choisir la configuration à appliquer et le script l'appliquera à toute ma machine. Ce script me permettra aussi de désactiver l'usage du proxy une fois que je quitterai le réseau.

Dans ce fichier de configuration, je m'attaque à ma stack de travail : php (pour utiliser symfony.phar et composer.phar), npm, git. Je n'ai cependant pas pu configurer automatiquement le proxy de PHPStorm (la partie configuration du mot de passe est trop floue pour moi).

Définition des variables

La première partie consiste à variabiliser le script pour pouvoir changer mes identifiants en fonction des environements/réseaux sur lesquels je me connecte. Les éléments nécessaire sont les suivant :

  • HTTP_PROXY_USERNAME : identifiant pour la connexion au proxy ;
  • HTTP_PROXY_PASSWORD : mot de passe du proxy ;
  • HTTP_PROXY_HOST : host du proxy ;
  • HTTP_PROXY_PORT : port du proxy ;
  • HTTP_PROXY_WHITELIST : liste blanche des URLs ne devant pas passer par le proxy ;

Je concatène le tout dans une écriture plus compacte de la forme :

http://username:password@host:port

Ma liste blanche des URLs ne devant pas passer par le proxy est la suivante :

  • Le domaine localhost et mon IP locale 127.0.0.1 : correspond à ma machine ;
  • Les domaines se terminant par .dev (tous mes projets respectent cette convention) ;
  • Toutes les IPs associées à un réseau privé selon la RFC 1918 :
    • 192.168.*
    • 172.16.*
    • 10.*

Configuration pour les navigateurs

Pour configurer le proxy (sans passer par la fenètre Windows 10), il est possible de modifier directemment les clés du registre. Les clés utiles pour cette tâche se trouvent dans HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings :

Configuration du proxy Windows 10 par le registre

En ligne de commande, on peut modifier ces clés de registre de la façon suivante :

Et pour supprimer le proxy :

Configuration pour les outils en ligne de commande

Windows - comme les autres OS - repose sur l'existence de variables d'environements pour configurer le proxy à utiliser par les commandes. Les variables globales attendues sont les suivantes :

  • HTTP_PROXY
  • HTTPS_PROXY

Ces variables se configurent avec une interface "Variables d'environnement" :

Interface des variables d'environnement de Windows 10

En ligne de commande, on peut modifier ces variables d'environnement de la façon suivante :

Et pour supprimer le proxy :

La valeur est mise à une chaîne de caractère vide pour désactiver le proxy. Vous pouvez cependant supprimer la clé si vous préférez, en la supprimant du registre :

Configuration npm

La documentation de npm explique en détail comment procéder à la configuration du proxy :

Et pour supprimer le proxy :

Configuration git

Même constat pour git via la documentation. Dans ce cas précis, nous donnons la configuration complète du proxy à git pour éviter qu'il nous demande le username/password à chaque interaction :

Et pour supprimer le proxy :

Scripts finaux

Le fichier final de configuration du proxy est le suivant :

Le fichier final de suppression du proxy est le suivant :

Retour aux articles