Справочник настроек прокси инструкции по программам

SwitchyOmega: настройка прокси в Chrome через профили и правила переключения

SwitchyOmega это расширение для Chrome и других браузеров на движке Chromium, которое хранит несколько именованных наборов параметров подключения и подставляет браузеру нужный набор по клику в панели либо автоматически, по адресу открываемой вкладки. Страница разбирает заведение сервера поле за полем, условия переключения, порядок их применения, перенос конфигурации на вторую машину и способы убедиться, что запросы ушли через посредник.

1. Что понадобится

Подойдёт любая сборка расширения: ветка 2.5.x под Manifest V2 и продолжение под названием ZeroOmega под Manifest V3. Раскладка страницы настроек у них совпадает почти до пиксела, названия полей одинаковые, поэтому все шаги ниже применимы к обеим. Браузер тоже любой на Chromium: Chrome, Edge, Vivaldi, Brave, Yandex.

Понадобится строка подключения. Поставщики отдают её двумя видами: IP:PORT и IP:PORT:LOGIN:PASS. Первый вид означает авторизацию по привязанному внешнему адресу вашей машины, второй по паре логина и пароля. Расширение принимает оба, поля для логина спрятаны за отдельным значком, и я показываю ниже, где именно. Все примеры я пишу на адресе 198.51.100.140, порт 3128 для HTTP и порт 1085 для SOCKS5. Подставляйте свои значения, структуру строк при этом менять не нужно.

Список у меня выгружается ссылкой сразу в обоих форматах, и строку я вставляю в поля копированием без ручной разборки. Такую выдачу дают приватные серверные адреса с выгрузкой списка: в пакет входят две привязки, менять их в кабинете можно свободно, включение занимает около 5 минут.

Страница настроек открывается двумя путями: правый клик по значку расширения и пункт «Настройки», либо адрес chrome-extension://<идентификатор>/options.html прямо в адресной строке. Второй путь пригодится, когда значок скрыт в выпадающем меню расширений.

2. Три вида профилей и что закрывает каждый

Профиль в терминах расширения это именованная конфигурация, которую браузер получает целиком. Слева на странице настроек стоит список профилей, снизу кнопка «Новый профиль». Два профиля встроены и удалению не подлежат: [Direct] и [System Proxy].

ПрофильЧто делаетКогда беру
[Direct]Прямое соединение, посредник игнорируется полностьюСравнение ответов сайта, отладка, работа с внутренними сервисами
[System Proxy]Отдаёт запросы системной настройке Windows или macOSМашина уже настроена на уровне системы, дублировать параметры незачем
Proxy ProfileФиксированный сервер: схема, адрес, порт, список исключенийОсновной рабочий режим, весь трафик вкладки идёт на один порт
Switch ProfileАвто-переключение: таблица условий, каждое ведёт на другой профильЧасть сайтов через посредник, остальное напрямую
Rule List ProfileЗагружает готовый список правил по ссылке и обновляет по расписаниюОбщий для команды набор доменов, правится в одном месте
PAC ProfileСценарий автонастройки на JavaScript, свой или по ссылкеЛогика сложнее сравнения строк: время суток, подсети, запасной порт
Virtual ProfileПсевдоним, который указывает на другой профильСмена порта во всех правилах одним переключателем

Прямое соединение стоит отдельного слова. [Direct] работает сразу в двух ролях: как режим отладки и как цель в правилах авто-переключения, когда домен обязан открываться с домашнего адреса. Банк, панель хостинга, корпоративный портал с проверкой по адресу источника, всё это я отправляю в [Direct] явным условием.

Фиксированный сервер закрывает случай, когда через посредник должна идти вся сессия. Переключил профиль в панели, открыл рабочие вкладки, отработал, вернул [Direct]. Этот режим я использую чаще прочих, потому что он предсказуем: у браузера ровно один выход наружу, и путаницы с тем, какая вкладка куда пошла, не возникает.

Авто-переключение снимает ручную работу, когда одновременно открыты и рабочие площадки, и обычные вкладки. Расширение сверяет адрес каждой вкладки с таблицей условий и молча подставляет нужный профиль. Для просмотра площадок с проверкой заголовков я подставляю в такие правила анонимные прокси без служебных заголовков, тогда сайт видит адрес посредника и ничего сверх этого.

3. Заведение сервера поле за полем и где вводится авторизация

Нажмите «Новый профиль», введите имя латиницей или кириллицей, выберите тип «Proxy Profile» и подтвердите создание. Откроется страница профиля с таблицей серверов сверху и текстовым полем исключений снизу.

ПолеЧто вноситьЧто ломается при ошибке
Имя профиляКороткое имя без пробелов: pool-http, pool-socksДлинное имя обрезается в панели, профиль трудно опознать
Scheme (схема)HTTP, HTTPS, SOCKS4 или SOCKS5При SOCKS4 имена сайтов разрешаются локально, домены утекают провайдеру
Protocol (протокол)По умолчанию (default), один набор на все протоколыРазведёте руками и забудете второй ряд, часть запросов пойдёт напрямую
Server (сервер)Только адрес или имя хоста: 198.51.100.140Схема http:// в этом поле даёт отказ на первом же запросе
Port (порт)Число: 3128 для HTTP, 1085 для SOCKS5Порт вписан вместе с двоеточием, поле принимает лишь цифры
Значок замка справа от рядаЛогин и пароль из третьей и четвёртой части строкиПропущен, и Chrome покажет системный запрос на каждой вкладке
Bypass List (исключения)По записи на строку, синтаксис нижеЗаписи через запятую в одну строку читаются как один хост
Кнопка «Применить изменения»Зелёная кнопка слева внизу, обязательнаПоля заполнены, изменения остались черновиком

Схему я выбираю по тому, что отдал поставщик. Порт HTTP обслуживает и обычные запросы, и туннель CONNECT для сайтов по HTTPS, поэтому одна строка закрывает весь веб. Порт SOCKS5 берёт любой TCP и заодно передаёт имя хоста на сторону посредника, поэтому запросы к DNS остаются внутри туннеля. Когда мне нужен один короткий порт под весь браузер, я подключаю HTTP-прокси для настройки браузера и заполняю ровно один ряд таблицы.

Теперь про авторизацию. Полей для логина в самой таблице нет, они спрятаны за значком замка в конце ряда с сервером. Нажатие открывает небольшое окно с двумя полями: «Username» и «Password». Введите третью и четвёртую части строки IP:PORT:LOGIN:PASS, сохраните, затем обязательно нажмите «Применить изменения». Расширение хранит пару в своей области и подставляет её на код ответа 407 Proxy Authentication Required само, системный запрос браузера при этом не всплывает.

Второй способ авторизации избавляет от пароля вовсе. Вы привязываете внешний адрес рабочей машины в кабинете, и порт пускает вас по адресу источника. Замок при этом остаётся пустым. Я держу так стационарные машины: ничего не хранится в профиле браузера, при экспорте конфигурации нечему утекать.

Поле исключений принимает записи по одной на строку. Синтаксис отличается от системного поля Windows: разделителем служит перевод строки, маски CIDR поддерживаются полноценно.

127.0.0.1
[::1]
localhost
*.internal.lan
192.168.0.0/16
10.0.0.0/8
<local>

Запись <local> покрывает короткие имена без точки. Звёздочка допустима с обеих сторон: *.internal.lan совпадает и с самим доменом, и со всеми поддоменами. Пустые строки расширение терпит.

4. Правила авто-переключения по домену и по шаблону

Создайте профиль типа «Switch Profile». Внутри появится таблица условий из трёх столбцов: «Condition Type», «Condition Details» и «Profile», плюс нижняя строка «По умолчанию», куда попадает всё, что ни под одно условие не подошло.

Тип условияЧто сравниваетсяПример записи
Host wildcardИмя хоста по шаблону со звёздочкой*.example.org
Host regexИмя хоста регулярным выражением`^(shop\cart)\..+\.org$`
Host levelsЧисло уровней в имени, от и доот 3 до 4
URL wildcardПолный адрес вместе со схемой и путёмhttps://example.org/admin/*
URL regexПолный адрес регулярным выражением\/api\/v[0-9]+\/
KeywordПодстрока в адресеsearch?q=
IP literalОбращение прямо по адресу без имени198.51.100.0/24
TimezoneДиапазон часов по локальному временис 9 до 19
WeekdayДни недели галочкамиПн, Вт, Ср, Чт, Пт
DisabledУсловие сохранено и временно выключеноОтладка таблицы

Правило по домену это «Host wildcard». Оно самое быстрое: сравнение идёт по строке, обращений в сеть нет. Одна тонкость в шаблонах со звёздочкой заслуживает внимания. Запись *.example.org в расширении совпадает и с www.example.org, и с голым example.org. Отдельную строку под корневой домен заводить незачем, я на этом однажды получил дубль условий и потом полчаса искал, какое из них срабатывает.

Правило по шаблону адреса это «URL wildcard». Оно смотрит на строку целиком, включая схему и путь, поэтому им удобно разводить части одного сайта. Публичный раздел площадки открывается напрямую, панель управления идёт через посредник, обе вкладки живут рядом в одном окне.

Регулярные выражения я держу для случаев, где шаблон бессилен. Например, нужно поймать все версии интерфейса программирования сразу: \/api\/v[0-9]+\/ берёт и v1, и v12, и любую следующую. Синтаксис обычный, JavaScript, экранирование косой черты обязательно. Расширение подсвечивает ошибочное выражение красной рамкой прямо в поле, до нажатия кнопки применения.

Условие «Host levels» пригождается на площадках с сотнями поддоменов. Диапазон от 3 до 4 уровней ловит a.b.example.org и оставляет корневой домен снаружи. Экономит десяток строк там, где иначе пришлось бы перечислять поддомены руками.

Каждое условие получает свой профиль назначения из выпадающего списка. Туда попадают все ваши профили плюс встроенные [Direct] и [System Proxy]. Строка «По умолчанию» задаёт поведение для всего остального трафика, и я обычно ставлю там [Direct].

5. Файл автонастройки и когда он нужен

Профиль типа «PAC Profile» принимает сценарий на JavaScript с одной обязательной функцией FindProxyForURL(url, host). Браузер вызывает её на каждый запрос и получает строку с указанием маршрута. Сценарий вносится двумя путями: текстом прямо в поле «PAC Script» либо ссылкой в поле «PAC URL» с кнопкой «Скачать сценарий сейчас».

Сценарий нужен там, где таблица условий начинает разрастаться. Три случая из моей практики: маршрут зависит от времени суток, запросы надо распределить по нескольким портам, при отказе первого порта соединение должно уйти на запасной.

function FindProxyForURL(url, host) {
  var ports = ["3128", "3129", "3130"];
  if (isPlainHostName(host) || shExpMatch(host, "*.internal.lan")) {
    return "DIRECT";
  }
  if (shExpMatch(url, "*/health*") || shExpMatch(url, "*/ping*")) {
    return "DIRECT";
  }
  var slot = host.length % ports.length;
  return "PROXY 198.51.100.140:" + ports[slot] + "; PROXY 198.51.100.140:3128";
}

Разберу строку возврата. Точка с запятой перечисляет запасные варианты по порядку: браузер пробует первый порт, при отказе переходит ко второму. Слово DIRECT в конце перечня отправляет запрос напрямую, и на рабочих профилях я его убираю, потому что отказ порта тогда становится заметен сразу. Схема SOCKS5 записывается словом SOCKS5, для порта 1085 строка выглядит как SOCKS5 198.51.100.140:1085.

Распределение по остатку от деления длины имени хоста даёт устойчивую привязку домена к порту: один и тот же сайт всегда попадает на один и тот же порт, пока имя не сменилось. Приём удобен, когда открыто 20 вкладок и нужно развести их по портам без ручного перечисления доменов.

Расширение выполняет сценарий внутри браузера. Ошибка в синтаксисе даёт красный значок на иконке, текст ошибки видно в консоли фонового процесса: chrome://extensions, режим разработчика, ссылка «Служебная страница». Результат вызова кэшируется на время сеанса, поэтому после правки текста я нажимаю «Применить изменения» и обновляю вкладку жёстким сочетанием клавиш, иначе правка остаётся невидимой.

Профиль «Rule List Profile» устроен проще: он забирает по ссылке готовый список доменов в формате AutoProxy или Switchy и обновляет его по расписанию, интервал задаётся в поле «Update interval». Правит список один человек, остальные получают обновление автоматически. Для команды из нескольких операторов это удобнее рассылки конфигурационных файлов.

6. Порядок применения правил и разбор конфликта

Условия сверяются сверху вниз, побеждает первое совпавшее. Всё, что стоит ниже, для этого адреса уже игнорируется. Отсюда единственное правило раскладки: узкие записи держим наверху, широкие внизу.

Покажу конфликт на конкретной таблице. Оператор завёл четыре условия и получил поведение, которого ждать было трудно.

ПорядокТипЗаписьПрофильРезультат для panel.example.org
1Host wildcard*.example.orgpool-httpСовпало, дальше сверка прекращена
2URL wildcardhttps://panel.example.org/*[Direct]Пропущено, до строки очередь не дошла
3Host levelsот 3 до 3pool-socksПропущено
4По умолчаниювсе прочие адреса[Direct]Пропущено

Панель управления обязана открываться с домашнего адреса. По этой таблице она уходит через посредник. Причина в порядке: широкая запись со звёздочкой стоит первой и забирает весь домен вместе с поддоменами. Правится перестановкой второй строки на первое место, кнопкой со стрелкой в конце ряда либо перетаскиванием за левый край.

Второй частый конфликт возникает из смешения типов. Условие «Host wildcard» смотрит только на имя хоста, путь и параметры адреса ему невидимы. Оператор пишет example.org/admin в поле хоста и ждёт совпадения по пути. Совпадения не будет никогда: в имени хоста косой черты не бывает. Под путь берётся «URL wildcard» с полной записью вместе со схемой.

Третий источник неожиданностей это профиль «Rule List Profile», подключённый условием внутри таблицы. Он занимает одну строку, при этом содержит сотни правил, и они сверяются в позиции этой строки. Поставили список наверх, и он перехватывает адреса раньше ваших ручных условий.

Найти виновное условие проще всего через панель расширения, о ней раздел ниже: она прямо называет строку, по которой вкладка получила профиль. Я открываю панель на спорной вкладке первым делом, до чтения таблицы глазами. Экономит минуты на каждой правке.

7. Перенос настроек между машинами через экспорт

Раздел «Импорт и экспорт» стоит слева внизу страницы настроек, под группой «Настройки». Внутри четыре кнопки.

КнопкаЧто делаетФормат
«Создать резервную копию»Выгружает все профили и условия одним файлом.sao, внутри обычный JSON
«Восстановить из файла»Читает выгрузку с диска и заменяет конфигурацию.sao
«Восстановить по ссылке»Забирает выгрузку по адресу в сетиСсылка на файл
«Экспорт файла автонастройки»Собирает вашу таблицу условий в готовый сценарий.pac

Порядок переноса у меня такой. На настроенной машине нажимаю «Создать резервную копию» и получаю файл вида OmegaOptions.bak. Открываю его в текстовом редакторе и проверяю глазами, что внутри: профили лежат объектами с ключами вида +pool-http, логин с паролем хранятся там открытым текстом. Пароль по этой причине я перед передачей файла вычищаю, оставляю поле пустым и ввожу его на второй машине руками.

"+pool-http": {
  "profileType": "FixedProfile",
  "name": "pool-http",
  "fallbackProxy": { "scheme": "http", "host": "198.51.100.140", "port": 3128 },
  "bypassList": [ { "conditionType": "BypassCondition", "pattern": "<local>" } ]
}

На второй машине ставлю расширение, открываю тот же раздел, нажимаю «Восстановить из файла» и указываю выгрузку. Расширение заменяет всю конфигурацию целиком, поэтому свои профили на принимающей машине сначала стоит выгрузить отдельным файлом. После восстановления обязательно нажимаю «Применить изменения»: без этого шага профили видны в списке, при этом браузер продолжает работать по старым параметрам.

Вариант «Восстановить по ссылке» удобен для парка машин. Файл выгрузки я кладу на внутренний веб-сервер, на каждой машине один раз указываю адрес, дальше обновление конфигурации идёт правкой одного файла. Пароли в такой выгрузке хранить не стоит, поэтому парк машин я перевожу на авторизацию по привязанному адресу.

Есть и третий путь, синхронизация через учётную запись браузера. В группе «Настройки» стоит переключатель синхронизации, он складывает конфигурацию в хранилище Chrome и раздаёт её всем машинам под той же учётной записью. Объём хранилища ограничен, при таблице в несколько сотен условий синхронизация начинает подрезать данные, и тогда я возвращаюсь к файлу.

8. Панель расширения и трафик, который идёт мимо неё

Клик по значку открывает панель. Сверху перечислены профили с переключателем напротив активного, ниже строка с именем хоста текущей вкладки, под ней самое ценное: название условия, по которому вкладка получила свой профиль. Строка читается как «panel.example.org использует pool-http по условию *.example.org». Одного взгляда хватает, чтобы понять, какая строка таблицы сработала.

Ниже стоят две быстрые кнопки. Первая добавляет текущий хост условием прямо из панели, без захода на страницу настроек: выбираете шаблон, выбираете профиль, нажимаете «Добавить». Вторая открывает страницу настроек на нужном профиле. Красный кружок на самом значке говорит об ошибке загрузки списка правил либо об ошибке в сценарии автонастройки.

Теперь про границы. Расширение управляет сетевым стеком браузера через программный интерфейс chrome.proxy, и всё, что этот стек обходит, остаётся снаружи.

Что идёт мимоПочемуЧто делаю
Другие браузеры и программы на машинеНастройка живёт внутри одного браузераСистемная настройка или перехватчик соединений
Служебные страницы chrome:// и обновление браузераИдут отдельным путём в обход стека расширенийОставляю как есть, полезной нагрузки там нет
Соединения WebRTCСтроятся напрямую между узламиПереключатель политики WebRTC либо отдельное расширение
Режим инкогнитоРасширения там выключены по умолчаниюГалочка «Разрешить в режиме инкогнито» на странице расширений
Другие профили ChromeУ каждого профиля свой набор расширенийСтавлю и настраиваю расширение в каждом профиле отдельно
Защищённый DNS браузераЗапросы имён уходят своим каналомОтключаю защищённый DNS при работе через SOCKS5
Протокол QUICЧасть запросов уходит поверх UDPВыключаю QUIC на странице chrome://flags

Пункт про имена стоит развернуть. При схеме SOCKS5 браузер отправляет имя хоста самому посреднику, и разрешение идёт на его стороне. При схеме SOCKS4 имя разрешается локально, и запрос к DNS уходит в обычную сеть. Разницу видно на странице проверки утечек имён. Для задач, где имена должны уходить в туннель целиком, я беру порт SOCKS5, где имя уходит на сторону сервера и ставлю схему SOCKS5 в профиле.

Когда нужна полная изоляция сессий, одного расширения мало по устройству самого браузера: отпечаток, хранилище и набор шрифтов у всех вкладок общие. Такие задачи я увожу в отдельные среды и подключаю к ним прокси под антидетект-браузеры, где каждый профиль получает свою строку из выгрузки.

9. Проверка после настройки

Первый шаг это внутренняя страница браузера с итоговой конфигурацией. Откройте chrome://net-internals/#proxy и посмотрите блок «Effective settings». Там показан сценарий, который расширение отдало браузеру, вместе со списком исключений. Пустой блок означает, что кнопку применения забыли нажать.

Второй шаг сверка внешнего адреса. Я открываю страницу определения адреса в двух вкладках подряд: сначала на профиле [Direct], затем на рабочем профиле. Значения обязаны различаться. Совпали, значит запрос ушёл мимо расширения, и причину ищу в списке исключений либо в порядке условий.

Третий шаг проверка правила без похода на сайт. В таблице условий есть поле «Проверить адрес» прямо под списком: вводите полный адрес, нажимаете кнопку, расширение печатает имя профиля и строку сработавшего условия. Быстрее, чем открывать вкладку.

Четвёртый шаг это сверка заголовков, которые сайт получает от браузера. Страницы проверки показывают присланные заголовки списком. Записи Via и X-Forwarded-For говорят, что порт сообщает сайту о посреднике, и для рабочих задач я подбираю адреса без пометок о посреднике, после чего сверяю вывод той же страницы повторно.

Пятый шаг для сомнительных случаев: журнал сетевых событий. Откройте chrome://net-export, нажмите «Start Logging to Disk», повторите проблемный запрос, остановите запись. Файл открывается на странице просмотра журналов, и там видно каждое соединение вместе с адресом посредника. Способ выручает, когда часть картинок на странице грузится, а часть отдаёт отказ.

Отдельно проверяю поведение на туннеле. Обычный сайт по HTTP может открываться, при этом любой адрес с замком в строке отдаёт отказ. Признак того, что порт обслуживает простые запросы и отклоняет метод CONNECT. Проверяется двумя вкладками за 10 секунд.

curl -x http://198.51.100.140:3128 https://api.ipify.org
curl -x socks5h://198.51.100.140:1085 https://api.ipify.org

Команды выше повторяют оба профиля вне браузера. Совпадение вывода с тем, что показала вкладка, подтверждает конфигурацию окончательно. Суффикс h в схеме socks5h включает разрешение имён на стороне посредника, ровно так же, как это делает браузер.

10. Разбор ошибок

Сообщение или признакПричинаЧто делать
ERR_PROXY_CONNECTION_FAILEDПорт закрыт, адрес с опечаткой либо привязка внешнего адреса слетелаПовторить запрос командой curl -x, сверить привязку в кабинете
ERR_TUNNEL_CONNECTION_FAILEDПорт принимает обычные запросы и отклоняет метод CONNECTВзять порт с разрешённым HTTPS, проверить вкладкой с замком
Системное окно с запросом логина на каждой вкладкеПара логина и пароля в значке замка пустаяОткрыть замок в ряду сервера, ввести пару, применить изменения
ERR_UNEXPECTED_PROXY_AUTHЛогин отправлен на порт с авторизацией по адресуОчистить поля замка, оставить авторизацию по привязке
ERR_NO_SUPPORTED_PROXIESВ сценарии автонастройки указана схема, которой браузер не знаетОставить слова PROXY, SOCKS5 и DIRECT
ERR_PAC_SCRIPT_FAILEDОшибка выполнения в функции FindProxyForURLОткрыть служебную страницу расширения, прочитать текст ошибки
Красный кружок на значке расширенияСписок правил по ссылке не скачалсяОткрыть ссылку в браузере, проверить ответ сервера и интервал обновления
Вкладка идёт через посредник вопреки условиюШирокая запись со звёздочкой стоит выше узкойПоднять узкое условие стрелкой в конце ряда
Условие с путём никогда не совпадаетПуть вписан в тип «Host wildcard»Переключить тип на «URL wildcard» и записать адрес со схемой
Профили видны, поведение прежнееКнопка «Применить изменения» не нажатаНажать зелёную кнопку слева внизу
В режиме инкогнито посредник игнорируетсяРасширение там выключено по умолчаниюПоставить галочку «Разрешить в режиме инкогнито»
Сайт открывается, имена уходят в обычную сетьСхема SOCKS4 либо включён защищённый DNS браузераПереключить на SOCKS5, отключить защищённый DNS
Конфигурация пропала после перезапускаСинхронизация перезаписала локальные профили свежими данными из хранилищаОтключить синхронизацию, восстановить выгрузку из файла
Внутренние сервисы перестали открыватьсяСписок исключений записан одной строкой через запятуюРазложить записи по строкам, применить изменения
Часть картинок на странице отдаёт отказДомены статики попали под другое условиеПроверить адреса картинок полем «Проверить адрес»

Отдельно про поведение при смене строки подключения. Ротация внутри пула автоматическая, свежая выгрузка забирается ссылкой в любой момент, и я обновляю поля профиля прямо из панели за минуту. Трафик безлимитный на всех сроках доступа, потоков хватает и на 20 открытых вкладок, и на фоновые загрузки, поэтому подстраивать конфигурацию под объём работы не приходится.

Остальные части справочника разбирают ту же задачу в других местах: параметры на уровне операционной системы собраны в статье про системные настройки прокси в Windows 11, собственный сетевой стек браузера с профилями описан в материале про параметры соединения в Firefox, настройка на телефоне в инструкции про подключение прокси на Android. Когда вкладок становится много и нужна изоляция сессий, смотрите разбор работы с прокси в AdsPower.