Настройка мобильного прокси в macOS
macOS сохраняет настройки прокси отдельно для каждой сетевой службы, а Терминал их вообще не учитывает. В этом руководстве рассказывается о панели «Прокси», о том, какие браузеры следуют этим настройкам, как автоматизировать их с помощью networksetup и что делать с теми приложениями, которые их игнорируют.
- Прокси-серверы относятся к сетевому сервису — настройки привязаны к каждому подключению Wi-Fi или Ethernet отдельно, а не к самому Mac.
- В Safari нет собственных настроек прокси — он полностью следует настройкам системной панели, что делает его идеальным инструментом для тестирования.
- Терминал игнорирует эту панель — вместо этого curl, git, npm и wget используют переменные среды.
- Скрипты networksetup, которые все настраивают — полезно, если вы регулярно переключаетесь между подключением через прокси и прямым подключением.
macOS поддерживает протоколы HTTP(S) и SOCKS5 без установки дополнительного программного обеспечения.
Команда `networksetup` преобразует всю конфигурацию в две строки.
Панель «Прокси» и к какому интерфейсу она относится
В macOS настройки прокси хранятся в одном очевидном месте, благодаря чему система кажется проще, чем Windows. В основном это действительно так — за исключением одной структурной особенности, которая заставляет пользователей натыкаться на проблемы даже спустя долгое время после успешной первоначальной настройки: эти настройки относятся к сетевой службе, а не к самому Mac.
Откройте «Настройки системы», перейдите в раздел «Сеть» и выберите подключение, которое вы используете в данный момент. Нажмите «Подробнее», а затем «Прокси». Вы увидите список типов прокси с флажками. Включите нужный тип, введите адрес сервера и номер порта, установите флажок «Аутентификация», если для вашего прокси требуются учетные данные, и нажмите «ОК», а затем «Применить».
| Запись в панели | Что именно настраивается | Используйте его, когда |
|---|---|---|
| Веб-прокси (HTTP) | Обычные HTTP-запросы | Всегда, наряду с безопасным доступом — большая часть трафика проходит по HTTPS, но часть — нет |
| Безопасный веб-прокси (HTTPS) | Туннель, используемый для запросов HTTPS | Всегда. Именно из-за того, что это не указано, одни сайты загружаются, а другие — нет |
| Прокси-сервер SOCKS | Чистый TCP, а не только веб-трафик | Для протоколов, не связанных с Интернетом, или если ваш провайдер предоставляет порт SOCKS5 |
| Список исключений | Хосты, которые должны подключаться напрямую | Локальные адреса и внутренние имена хостов, к которым прокси-сервер не имеет доступа |
Эти настройки применяются к выбранной вами сетевой службе — например, к Wi-Fi. Подключите кабель Ethernet, установите модемное соединение с телефоном или подключите USB-адаптер, и macOS будет использовать собственные настройки прокси данного сервиса, которые являются пустыми. Прокси не перестал работать; вы просто используете другой интерфейс, который никогда не настраивался. Настройте каждый сервис, которым вы действительно пользуетесь.
Именно благодаря такой структуре macOS удобно использовать в скриптах. Поскольку каждый сервис обращается по имени, для включения прокси достаточно двух команд, а для отключения — тоже двух, что гораздо удобнее, чем каждый раз переключаться в панели.
networksetup -listallnetworkservices networksetup -setwebproxy "Wi-Fi" proxy.example.net 8000 on user123 s3cret networksetup -setsecurewebproxy "Wi-Fi" proxy.example.net 8000 on user123 s3cret networksetup -setsocksfirewallproxy "Wi-Fi" proxy.example.net 1080 on user123 s3cret networksetup -getwebproxy "Wi-Fi" networksetup -setwebproxystate "Wi-Fi" off
Команды системы отключают прокси-сервер, не очищая введенные вами данные, поэтому для переключения между режимами работы через прокси и напрямую достаточно одной команды, а не повторного ввода четырёх значений.
Safari, Chrome и браузеры, которые используют настройки системы
В Safari нет собственных настроек прокси. Совсем нет — нет никакого диалогового окна, которое можно было бы найти, и ничего, что можно было бы настроить неправильно. Каждый запрос, отправляемый Safari, соответствует настройкам панели «Прокси». Это настолько необычно, что стоит этим воспользоваться: Safari — самый точный способ проверить правильность конфигурации на системном уровне, поскольку её невозможно переопределить с помощью настроек приложения, о которых вы, возможно, забыли.
Chrome по умолчанию также следует настройкам системной панели, и его кнопка настроек прокси просто открывает настройки сети macOS, а не предлагает собственные. Это поведение можно переопределить при запуске с помощью параметра командной строки, что иногда бывает полезно для запуска одного браузера через прокси, в то время как остальные программы системы подключаются напрямую.
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --proxy-server="http://proxy.example.net:8000" \ --user-data-dir="/tmp/chrome-proxied"
Firefox — это исключение, как и везде: он сохраняет собственные настройки подключения и использует их, а не системные. Если Safari подключается через прокси, а Firefox — нет, то именно в этом диалоговом окне и следует искать причину.
Для одновременного запуска нескольких профилей через разные прокси-серверы настроек браузера уже недостаточно — именно это браузеры с функцией защиты от обнаружения для чего существуют.
Терминал не считывает данные панели «Прокси»
Именно это ставит всех в тупик. curl, wget, git, npm, pip и практически все инструменты командной строки в macOS полностью игнорируют панель «Прокси». Они считывают переменные среды точно так же, как и в Linux, а macOS не предоставляет никакого моста между этими двумя системами.
Это не ошибка, и настроек, позволяющих изменить такое поведение, нет. В этом окне настроек конфигурируется сетевой уровень системы, который используют приложения Cocoa; инструменты командной строки унаследовали конвенцию Unix, которая появилась ещё до этого.
export http_proxy="http://user123:[email protected]:8000" export https_proxy="$http_proxy" export no_proxy="localhost,127.0.0.1,::1" # Verify without touching the shell environment curl -x "$http_proxy" https://api.ipify.org ; echo curl https://api.ipify.org ; echo
В macOS безопаснее использовать строчные буквы. Некоторые инструменты распознают только имена в строчных буквах, некоторые — только в заглавных, и установка обоих вариантов является распространенной практикой — однако следует иметь в виду, что значение HTTPS_PROXY, записанное заглавными буквами, по замыслу игнорируется командой curl, чтобы избежать проблемы с внедрением заголовков. Использование пары имен в нижнем регистре обеспечивает совместимость с наибольшим количеством программ.
Как и в любой другой системе, указание пароля в профиле оболочки означает, что каждый запускаемый вами процесс сможет его прочитать. Если у вашего Mac есть постоянный IP-адрес, попросите своего провайдера внести его в белый список и полностью отказаться от использования учетных данных.
Диагностика прокси-сервера, который, по данным macOS, настроен
Наличие галочки в панели «Прокси» не является доказательством того, что интересующее вас приложение использует именно этот прокси. Начинайте анализ с уровня, а не с учетных данных.
| Симптом | Наиболее вероятная причина |
|---|---|
| Вчера работал, а сегодня — нет | Вы подключены к другому сетевому сервису. Проверьте, какой интерфейс активен. |
| Safari работает через прокси, а Terminal — нет | Работает так, как и задумано. Экспортируйте переменные среды. |
| Некоторые сайты загружаются, а другие зависают | Веб-прокси включен, но безопасный веб-прокси отключен, поэтому для HTTPS нет маршрута. |
| Только Firefox обходит прокси-сервер | Его собственные настройки подключения имеют приоритет над системными. |
| Учетные данные неоднократно отклонялись | Укажите учетные данные SOCKS в полях веб-прокси. Для этих двух портов требуются отдельные логины. |
Самый быстрый способ проверить это — открыть Safari и загрузить страницу, на которой отображается ваш общедоступный адрес. Поскольку Safari невозможно настроить отдельно, то, что он показывает, является достоверной информацией о прокси на системном уровне — и если он работает через прокси, а какое-то другое приложение — нет, значит, система работает нормально, а другое приложение обращается к другому уровню.
Вы также можете проверить сам конечный пункт с помощью бесплатный инструмент для проверки прокси-серверов PXM2, в котором указываются тип обнаруженного прокси-сервера и страна, из которой осуществляется выход.
Получите мобильный прокси для macOS
Активные локации PXM2 — выберите страну, в которой вам нужен выходной IP-адрес, и настройте его, следуя инструкциям на этой странице:
Великобритания
Испания
Индия
Часто задаваемые вопросы
Как настроить прокси в macOS?
Откройте «Настройки системы», перейдите в раздел «Сеть», выберите используемое соединение, нажмите «Подробнее», а затем «Прокси». Включите «Веб-прокси» для HTTP, «Безопасный веб-прокси» для HTTPS или «SOCKS-прокси», введите имя хоста и порт, добавьте свои учетные данные, если прокси их требует, и нажмите «ОК». Safari и Chrome сразу же начнут использовать эти настройки.
Почему мой прокси перестает работать, когда я переключаюсь с Wi-Fi на Ethernet?
Дело в том, что macOS сохраняет настройки прокси отдельно для каждого сетевого сервиса, а не глобально. Настройка панели «Прокси» при подключении к Wi-Fi применяется только к Wi-Fi, а при подключении через Ethernet или другой адаптер используются собственные настройки этого адаптера, которые по умолчанию пусты. Настройте каждый сервис, которым вы действительно пользуетесь, или автоматизируйте этот процесс с помощью команды `networksetup`.
Есть ли у Safari собственные настройки прокси?
Нет. В Safari вообще нет отдельной настройки прокси — каждый его запрос проходит через панель «Прокси» в настройках «Сеть». Это делает его действительно полезным инструментом для диагностики: если Safari проходит через прокси, а другое приложение — нет, значит, системные настройки в порядке, а другое приложение обращается к какому-то другому источнику.
Почему curl игнорирует мои настройки прокси в macOS?
Дело в том, что curl никогда не считывает данные из панели «Прокси». Он использует переменные окружения http_proxy и https_proxy, так же как wget, git и npm. Необходимо экспортировать их в профиле оболочки или явно передать прокси-сервер в командной строке curl. Это скорее особенность реализации, а не ошибка, и почти каждый сталкивается с этим хотя бы раз.
Как настроить прокси в macOS из командной строки?
Используйте команду `networksetup`, указав название сетевой службы точно так, как оно отображается в настройках сети — например, `networksetup -setwebproxy "Wi-Fi" host port`. Существуют соответствующие команды для безопасного веб-прокси и SOCKS-прокси, а также команды состояния, позволяющие отключить каждый из них, не удаляя введенные данные.
Связанные руководства по мобильным прокси-серверам
Windows и Linux по-разному подходят к решению одной и той же проблемы — обе системы заслуживают внимания, если вы работаете на разных компьютерах.
Руководства по настройке
Основные руководства по мобильным прокси-серверам
Используйте свой Mac через IP-адрес реального интернет-провайдера
Специализированные модемы 4G/5G с неограниченной пропускной способностью и неограниченным количеством смен — конечные точки HTTP(S) и SOCKS5, с которыми macOS взаимодействует напрямую, без необходимости установки какого-либо клиента.
Получить мобильный прокси