Usar Dev Proxy com PowerShell

De relance
Objetivo: Configurar o PowerShell para funcionar com o Proxy de Desenvolvimento
Tempo: 5 minutos
Pré-requisitos:Configurar o Proxy de Desenvolvimento

Dev Proxy funciona com PowerShell em todos os sistemas operativos. No macOS e Linux, o PowerShell deteta corretamente alterações ao proxy do sistema e não é necessária qualquer configuração adicional. No Windows, o PowerShell armazena em cache as definições do proxy, o que requer passos extra.

macOS e Linux

No macOS e Linux, o PowerShell deteta automaticamente alterações ao proxy do sistema. Inicia o Dev Proxy e usa o PowerShell como normalmente farias — os pedidos são interceptados sem qualquer configuração adicional.

Windows

Quando usas Dev Proxy com PowerShell no Windows, podes encontrar problemas em que o PowerShell não deteta quando o proxy do sistema começa ou termina. Este problema afeta tanto o Windows PowerShell (5.1) como o PowerShell 7+ (Core).

A questão

No Windows, as sessões PowerShell armazenam em cache as definições do proxy do sistema quando começam. Isto significa que se você:

  1. Abrir uma sessão do PowerShell
  2. Iniciar Proxy de Desenvolvimento (que se configura como proxy do sistema)
  3. Faça pedidos HTTP a partir da sessão original do PowerShell

Os pedidos não são encaminhados através do Dev Proxy porque o PowerShell usa as definições do proxy em cache desde o início da sessão.

De forma semelhante, se você:

  1. Iniciar Dev Proxy
  2. Abre uma sessão PowerShell e faz pedidos (são interceptados corretamente)
  3. Stop Dev Proxy
  4. Faça pedidos a partir da mesma sessão PowerShell

Os pedidos falham porque o PowerShell continua a tentar usar o proxy que já não existe.

Solução alternativa: Reiniciar a sessão do PowerShell

A solução mais simples é reiniciar a tua sessão PowerShell depois de iniciar ou parar o Dev Proxy. Reiniciar a sessão garante que o PowerShell capta as definições atuais do proxy do sistema.

Alternativa: Definir o proxy manualmente

Em vez de depender da deteção de proxy do sistema, podes configurar o Proxy de Desenvolvimento para não ser registado como proxy do sistema e definir o proxy manualmente no PowerShell.

Passo 1: Iniciar Proxy de Desenvolvimento sem proxy de sistema

Iniciar Dev Proxy com a opção --as-system-proxy false:

devproxy --as-system-proxy false

Passo 2: Definir a variável de ambiente proxy no PowerShell

Na sua sessão PowerShell, defina a HTTPS_PROXY variável de ambiente:

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

Se também precisares de intercetar pedidos HTTP:

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

Passo 3: Limpar o proxy quando terminar

Quando terminares de usar o Dev Proxy, limpa as variáveis do ambiente:

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

Usar um perfil PowerShell

Para simplificar a definição do proxy, podes criar funções no teu perfil PowerShell. Adicione o seguinte ao seu $PROFILE ficheiro:

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

Depois podes usar os comandos Set-DevProxy e Clear-DevProxy para ativar ou desativar rapidamente o proxy na tua sessão PowerShell.