Настройка мобильного прокси в 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 будет использовать собственные настройки прокси данного сервиса, которые являются пустыми. Прокси не перестал работать; вы просто используете другой интерфейс, который никогда не настраивался. Настройте каждый сервис, которым вы действительно пользуетесь.
Автоматическая настройка прокси — это отдельный флажок
На панели «Прокси» также указана опция «Автоматическая настройка прокси», которая использует URL-адрес файла PAC вместо указания сервера и порта. Файл PAC представляет собой небольшую функцию JavaScript под названием FindProxyForURL, которую macOS вызывает один раз для каждого запроса, чтобы определить, должен ли данный хост проходить через прокси, через другой прокси или напрямую — это полезно для маршрутизации внутренних хостов в обход мобильного прокси без необходимости вручную вести список исключений. Она настраивается независимо от ручных записей, расположенных выше, и одновременное включение обоих вариантов допустимо, но сбивает с толку: эти два параметра редко сходятся во мнениях о том, какой из них должен преобладать для конкретного запроса, а macOS не предупреждает вас в случае их конфликта.
From the command line, networksetup -setautoproxyurl "Wi-Fi" http://example.net/proxy.pac writes the URL and turns the option on in one step. There is no matching command to remove it again — networksetup can set an automatic proxy but not unset one — so clearing it means unchecking the box in the pane by hand, or pushing an empty proxy payload through a configuration profile on a managed Mac.
Именно благодаря такой структуре 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:s3cret@proxy.example.net: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 взаимодействует напрямую, без необходимости установки какого-либо клиента.
Получить мобильный прокси