Поделиться через


Использование прокси-сервера разработки с PowerShell

На первый взгляд
Цель: Настройка PowerShell для работы с прокси-сервером разработки
Время: 5 минут
Предварительные требования:настройка прокси-сервера разработки

Прокси-сервер разработки работает с PowerShell во всех операционных системах. В macOS и Linux PowerShell правильно обнаруживает изменения системного прокси-сервера и дополнительная конфигурация не требуется. В Windows PowerShell кэширует параметры прокси-сервера, которые требуют дополнительных действий.

macOS и Linux

В macOS и Linux PowerShell автоматически обнаруживает изменения системного прокси-сервера. Запустите прокси-сервер разработки и используйте PowerShell, как правило, запросы перехватываются без дополнительной настройки.

Виндоус

При использовании прокси-сервера разработки с PowerShell в Windows могут возникнуть проблемы, когда PowerShell не обнаруживает время запуска или остановки системного прокси-сервера. Эта проблема влияет на Windows PowerShell (5.1) и PowerShell 7+ (Core).

Проблема

В Windows сеансы PowerShell кэшируют параметры системного прокси-сервера при запуске. Это означает, что если вы:

  1. Открытие сеанса PowerShell
  2. Запуск прокси-сервера разработки (который настраивает себя в качестве системного прокси-сервера)
  3. Создание HTTP-запросов из исходного сеанса PowerShell

Запросы не направляются через прокси-сервер разработки, так как PowerShell использует кэшированные параметры прокси-сервера при запуске сеанса.

Аналогичным образом, если вы:

  1. Запуск прокси-сервера разработки
  2. Откройте сеанс PowerShell и выполните запросы (они перехватываются корректно)
  3. Остановка прокси-сервера разработки
  4. Выполнение запросов из одного сеанса PowerShell

Запросы завершаются ошибкой, так как PowerShell по-прежнему пытается использовать прокси-сервер, который больше не существует.

Обходное решение. Перезапуск сеанса PowerShell

Проще всего перезапустить сеанс PowerShell после запуска или остановки прокси-сервера разработки. Перезапуск сеанса гарантирует, что PowerShell выбирает текущие параметры прокси-сервера системы.

Альтернатива. Настройка прокси-сервера вручную

Вместо того чтобы полагаться на обнаружение системного прокси-сервера, вы можете настроить прокси-сервер Dev, чтобы он не регистрировался в качестве системного прокси, и вручную настроить прокси в PowerShell.

Шаг 1. Запуск прокси-сервера разработки без системного прокси-сервера

Запустите прокси-сервер разработки с параметром --as-system-proxy false :

devproxy --as-system-proxy false

Шаг 2. Установка переменной среды прокси-сервера в PowerShell

В сеансе PowerShell задайте HTTPS_PROXY переменную среды:

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

Если вам также нужно перехватывать HTTP-запросы:

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

Шаг 3. Очистка прокси-сервера при завершении

Когда вы закончите работу с помощью прокси-сервера разработки, очистите переменные среды:

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

Использование профиля PowerShell

Чтобы упростить настройку прокси-сервера, можно создать функции в профиле PowerShell. Добавьте следующее в ваш файл $PROFILE.

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

Затем можно использовать Set-DevProxy и Clear-DevProxy команды для быстрого включения или отключения прокси-сервера в сеансе PowerShell.