Браузер давно за прокси, а git clone всё ползёт. Консольные утилиты не читают настройку прокси ОС — они уважают переменные окружения и собственные конфиги, и больше ничего. Настроим все ходовые инструменты. В примерах — стандартный смешанный порт Clash Verge 7897; меняли — подставьте свой.

Переменные прокси в PowerShell и bash с проверкой через curl
Переменные окружения покрывают большинство утилит и действуют мгновенно

Универсальный способ: переменные окружения

PowerShell (Windows)

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

bash / zsh (macOS, Linux)

export http_proxy="http://127.0.0.1:7897"
export https_proxy="http://127.0.0.1:7897"
export all_proxy="socks5://127.0.0.1:7897"

Область действия — текущая сессия терминала: закрыли окно — всё забылось. Обычно это плюс: остальная система не затронута. Проверка:

curl -I https://www.google.com   # HTTP/2 200 = работает

Включение одним словом

Каждый раз набирать надоедает. В ~/.bashrc / ~/.zshrc:

alias pon='export http_proxy=http://127.0.0.1:7897 https_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897'
alias poff='unset http_proxy https_proxy all_proxy'

В PowerShell — аналогичные функции в $PROFILE. Дальше: pon — включить, poff — выключить.

Утилиты со своим конфигом

git

git config --global http.proxy http://127.0.0.1:7897
# отменить:
git config --global --unset http.proxy

Это касается только HTTPS-репозиториев. SSH-адреса ([email protected]) требуют ProxyCommand в ~/.ssh/config — либо просто смените адрес на HTTPS.

npm / pnpm

npm config set proxy http://127.0.0.1:7897
npm config set https-proxy http://127.0.0.1:7897

pip

pip install пакет --proxy http://127.0.0.1:7897

pip читает и переменные окружения — обычно отдельная настройка не нужна.

docker

Два разных места, вечная путаница: docker pull ходит через демон — настраивайте Docker Desktop → Settings → Resources → Proxies. А трафик при сборке внутри контейнера получает прокси через --build-arg HTTP_PROXY=….

Альтернатива без настройки: TUN

С режимом TUN весь терминальный трафик идёт через прокси без единой строчки из этой статьи. Плата — глобальность; точечная избирательность остаётся за переменными окружения. Работает и обратный подход: TUN на всё плюс правила по процессам для исключений.

Классические грабли: localhost вместо 127.0.0.1. Часть утилит резолвит localhost в IPv6 ::1, а ядро слушает только IPv4 — симптом «прописал прокси и пропала вся сеть». Пишите 127.0.0.1.