Найти, кто занял порт
- Откройте терминал. Win + X → «Терминал» или «Командная строка». Прав администратора для просмотра обычно достаточно обычных.
- Посмотрите, кто слушает порт: netstat -ano | findstr:<порт> Подставьте номер порта из настроек приложения. В конце строки будет число - идентификатор процесса (PID).
- Узнайте имя процесса по PID: tasklist | findstr <PID> Либо откройте диспетчер задач, вкладку «Подробности», и найдите строку с этим PID.
Три способа решить
| Ситуация | Решение |
|---|---|
| Порт держит вторая копия того же приложения | Завершить лишний процесс в диспетчере задач |
| Порт держит другой прокси-клиент | Не запускать их одновременно: конфликт |
| Порт занят посторонней программой | Сменить порт в настройках Happ |
| Порт занят системным процессом | Сменить порт: спорить с системой бессмысленно |
| Процесс не находится, но порт занят | Перезагрузиться: остались висящие соединения |
Про «зарезервированные диапазоны»
Windows иногда резервирует диапазоны портов под собственные нужды (это видно командой netsh int ipv4 show excludedportrange protocol=tcp). Если ваш порт попал в такой диапазон, слушать его не выйдет - просто выберите другой номер, например выше 10000.
Как сменить порт
В настройках приложения найдите номера локальных портов SOCKS и HTTP и укажите свободные. После смены обязательно обновите настройки во всех программах, где порт был прописан вручную: браузер с ручной настройкой SOCKS, мессенджеры, переменные окружения. Где что смотреть - локальный SOCKS и HTTP.
Если включён системный прокси, приложение перепишет системную настройку само. Проверить можно в Параметрах Windows: адрес должен указывать на новый порт.
Можно ли завершить процесс, который занял порт, командой?
Да: taskkill /PID <номер> /F. Но сначала убедитесь, что это не системный процесс, - иначе получите неожиданные последствия.
Ошибка появляется при каждом запуске
Значит, порт занимает программа, стартующая раньше. Проще сменить порт в Happ, чем воевать с чужой автозагрузкой.
Что за порт вообще нужен приложению?
Локальный, на 127.0.0.1 - через него программы отдают трафик в туннель. Наружу этот порт по умолчанию не смотрит.