Как использовать прокси на Android (и почему настройки прокси Wi-Fi предлагают только HTTP, а не SOCKS5)
Встроенный диалог настройки прокси Wi-Fi в Android не имеет выбора протокола, потому что он поддерживает только HTTP. Вот что это означает для SOCKS5, почему некоторые приложения игнорируют эту настройку, и практические способы получить прокси-трафик на Android.
Долгое нажатие на вашу сеть Wi-Fi в Android, нажмите Изменить сеть, разверните Дополнительные параметры, установите Прокси в Вручную, и вы получите поле имени хоста, поле порта и список обхода. Вот и всё. Никакого выпадающего списка протоколов, никакой опции SOCKS5, никакого запроса аутентификации.
Если вы искали, как использовать прокси на Android, и задавались вопросом, почему SOCKS5 никогда не появляется, вот причина: встроенная настройка прокси Wi-Fi в Android — это HTTP-прокси, а не универсальный клиент SOCKS5.
Что на самом деле поддерживает встроенная настройка прокси в Android
- Только HTTP и HTTPS. HTTPS-трафик туннелируется с помощью HTTP-запроса
CONNECT, поэтому HTTPS-сайты работают, даже если сам прокси является HTTP. - Нет SOCKS4, SOCKS5 или SOCKS5h. Для них просто нет поля.
- Нет UDP. Всё, что основано на UDP — QUIC, игровой трафик, DNS по тому же пути — не будет проходить через него.
- Для каждой сети отдельно. Настройка сохраняется для отредактированной сети Wi-Fi, поэтому она не применяется при переключении сетей или использовании мобильных данных.
- Рекомендательный, а не принудительный. Android передаёт конфигурацию прокси приложениям, но приложения вольны её игнорировать.
Этот последний пункт больше всего удивляет людей. Браузер обычно уважает системный прокси; многие другие приложения, особенно те, которые включают свой собственный HTTP-клиент или сетевую библиотеку, подключаются напрямую и вообще не используют прокси. Мобильные данные на большинстве устройств не имеют аналогичного поля прокси, доступного пользователю, так что там тоже нечего настраивать.
Почему SOCKS5 на Android обычно тупик со встроенными инструментами
Даже когда приложение предлагает свое собственное поле SOCKS5, обычно случаются три проблемы:
- Где разрешается DNS. В SOCKS5 есть вариант, который разрешает имена хостов удалённо, обычно обозначаемый как
socks5h. Если приложение сначала разрешает имена локально, ваши DNS-запросы идут к вашему интернет-провайдеру, в то время как трафик выходит в другом месте — частичная утечка. - Поддержка UDP. SOCKS5 действительно определяет UDP-ассоциацию, но поддержка клиентами непоследовательна, и собственный стек Android не предоставляет её через системный прокси.
- Аутентификация. Аутентификация по имени пользователя и паролю является частью рукопожатия SOCKS5, но то, отображает ли приложение эти поля, зависит от разработчика.
Практические способы получить прокси-трафик на Android
Вариант 1: Встроенный HTTP-прокси (самый быстрый, но самый ограниченный)
- Откройте Настройки, затем Сеть и интернет, затем Интернет (на старых версиях обозначается как Wi-Fi).
- Долгое нажатие на вашу сеть и выберите Изменить сеть.
- Разверните Дополнительные параметры и установите Прокси в Вручную.
- Введите имя хоста и порт прокси. В некоторых версиях также отображается список обхода — добавьте туда локальные адреса.
- Сохраните, затем переподключитесь к сети.
Проверьте это, посетив страницу проверки IP в вашем браузере и сравнив результат с выключенным прокси. Если браузер показывает IP прокси, а приложение всё ещё показывает ваш реальный, значит, это приложение игнорирует системный прокси.
Вариант 2: Приложение, создающее локальный VPN-интерфейс
Приложения, создающие локальный VPN-туннель, могут перехватывать трафик устройства и перенаправлять его на прокси-эндпоинт, что обходит ограничение только-HTTP. Две вещи, которые нужно понять, прежде чем идти этим путём:
- Android допускает только один активный VPN одновременно, поэтому это конкурирует с любым VPN-приложением, которое вы уже используете.
- Приложение теперь находится на пути трафика для всего, что оно перехватывает. Выбирайте его так же тщательно, как выбирали бы VPN-провайдера.
Вариант 3: Завершение прокси в другом месте
Вместо того чтобы заставлять Android говорить на SOCKS5, поместите клиент SOCKS5 на машину, которую вы контролируете — домашний сервер, роутер или небольшой облачный инстанс — и подключите Android к нему. Завершение SOCKS5 в SSH-туннеле с динамической переадресацией (ssh -D) на десктопе и совместное использование этого соединения — распространённый подход.
Вариант 4: Перенаправление на уровне root
С root перенаправление на уровне ядра может отправлять весь TCP-трафик на SOCKS5-прокси, полностью обходя поддержку прокси в отдельных приложениях. Это связано с реальным риском нарушения подключения и не является простым вариантом.
Проверьте это как следует из командной строки
Если у вас есть приложение терминала на устройстве, проверьте прокси независимо от браузера:
# Проверка IP, который представляет прокси
curl -s --proxy socks5h://user:[email protected]:1080 https://api.ipify.org; echo
# Тот же прокси, вывод в JSON для скриптов
curl -s --proxy socks5h://user:[email protected]:1080 "https://api.ipify.org?format=json"
Если эти команды показывают адрес прокси, а ваш браузер — нет, проблема в конфигурации на уровне приложения, а не в самом прокси.
Замечания по безопасности, которые стоит воспринимать серьёзно
- HTTP-прокси видит пункт назначения каждого запроса. HTTPS сохраняет содержимое зашифрованным, но метаданные всё ещё видны тому, кто управляет прокси.
- Бесплатные публичные прокси на любой платформе следует рассматривать как враждебные. Никогда не отправляйте через них учётные данные или сессионные cookie.
- Если прокси прозрачный, бесплатный и не требует учётной записи, спросите, какова бизнес-модель, прежде чем направлять через него что-либо конфиденциальное.
Вывод
Диалог настройки прокси Wi-Fi в Android — это удобство только для HTTP, а не клиент SOCKS5 — это ограничение платформы, а не ошибка конфигурации на вашей стороне. Используйте встроенную настройку для простого HTTP-проксирования на уровне браузера, используйте приложение с локальным VPN-туннелированием, когда вам нужна маршрутизация всего устройства к SOCKS5-эндпоинту, и рассмотрите возможность завершения SOCKS5 в другом месте, например, в SSH-туннеле или на контролируемом вами роутере, если вы хотите гибкость без root. Какой бы путь вы ни выбрали, проверьте его с помощью проверки IP как из браузера, так и из командной строки, прежде чем доверять ему.