Utiliser le proxy de développement avec PowerShell

En un clin d’œil
Objectif: Configurer PowerShell pour qu’il fonctionne avec le proxy de développement
Heure : 5 minutes
Prérequis :configurer le proxy de développement

Le proxy de développement fonctionne avec PowerShell sur tous les systèmes d’exploitation. Sur macOS, PowerShell détecte correctement les modifications du proxy système et aucune configuration supplémentaire n’est nécessaire. Sur Linux, Dev Proxy ne configure pas le proxy système. Vous devez donc définir les variables d’environnement proxy. Sur Windows, PowerShell met en cache les paramètres de proxy, ce qui nécessite des étapes supplémentaires.

macOS

Sur macOS, PowerShell détecte automatiquement les modifications du proxy système. Démarrez le proxy de développement et utilisez PowerShell comme vous le feriez normalement : les requêtes sont interceptées sans aucune configuration supplémentaire.

Linux

Sur Linux, Dev Proxy ne s’inscrit pas en tant que proxy système et PowerShell lit uniquement les paramètres de proxy à partir de variables d’environnement. Après avoir démarré le proxy de développement, définissez les variables d’environnement HTTPS_PROXY et HTTP_PROXY dans votre session PowerShell :

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
$env:HTTP_PROXY = "http://127.0.0.1:8000"

Lorsque vous avez terminé d’utiliser le proxy de développement, effacez les variables d’environnement :

$env:HTTPS_PROXY = $null
$env:HTTP_PROXY = $null

Fenêtres

Lorsque vous utilisez le proxy de développement avec PowerShell sur Windows, vous pouvez rencontrer des problèmes où PowerShell ne détecte pas quand le proxy système démarre ou s’arrête. Ce problème affecte Windows PowerShell (5.1) et PowerShell 7+ (Core).

Le problème

Sur Windows, les sessions PowerShell mettent en cache les paramètres du proxy système au démarrage. Cela signifie que si vous :

  1. Ouvrir une session PowerShell
  2. Démarrer le proxy de développement (qui se configure en tant que proxy système)
  3. Effectuer des requêtes HTTP à partir de la session PowerShell d’origine

Les requêtes ne sont pas routées via le proxy de développement, car PowerShell utilise les paramètres de proxy mis en cache à partir du démarrage de la session.

De même, si vous :

  1. Démarrer le proxy de développement
  2. Ouvrez une session PowerShell et effectuez des demandes (elles sont interceptées correctement)
  3. Arrêter le proxy de développement
  4. Effectuer des requêtes à partir de la même session PowerShell

Les requêtes échouent, car PowerShell tente toujours d’utiliser le proxy qui n’existe plus.

Solution de contournement : Redémarrer une session PowerShell

La solution de contournement la plus simple consiste à redémarrer votre session PowerShell après le démarrage ou l’arrêt du proxy de développement. Le redémarrage de la session garantit que PowerShell récupère les paramètres actuels du proxy système.

Alternative : Définir le proxy manuellement

Au lieu de vous appuyer sur la détection du proxy système, vous pouvez configurer le proxy de développement pour ne pas s’inscrire en tant que proxy système et définir le proxy manuellement dans PowerShell.

Étape 1 : Démarrer le proxy de développement sans proxy système

Démarrez le proxy de développement avec l’option --as-system-proxy false :

devproxy --as-system-proxy false

Étape 2 : Définir la variable d’environnement proxy dans PowerShell

Dans votre session PowerShell, définissez la variable d’environnement HTTPS_PROXY :

$env:HTTPS_PROXY = "http://127.0.0.1:8000"

Si vous devez également intercepter les requêtes HTTP :

$env:HTTP_PROXY = "http://127.0.0.1:8000"

Étape 3 : Effacer le proxy lorsque vous avez terminé

Lorsque vous avez terminé d’utiliser le proxy de développement, effacez les variables d’environnement :

$env:HTTPS_PROXY = $null
$env:HTTP_PROXY = $null

Utiliser un profil PowerShell

Pour simplifier la définition du proxy, vous pouvez créer des fonctions dans votre profil PowerShell. Ajoutez ce qui suit à votre $PROFILE fichier :

function Set-DevProxy {
    $env:HTTP_PROXY = "http://127.0.0.1:8000"
    $env:HTTPS_PROXY = "http://127.0.0.1:8000"
    Write-Host "Dev Proxy enabled"
}

function Clear-DevProxy {
    $env:HTTP_PROXY = $null
    $env:HTTPS_PROXY = $null
    Write-Host "Dev Proxy disabled"
}

Vous pouvez ensuite utiliser Set-DevProxy et Clear-DevProxy commandes pour activer ou désactiver rapidement le proxy dans votre session PowerShell.