Auto Mirror Switcher

Автоматически переключает неработающие mirror-домены и сохраняет полный путь страницы.

Как пользоваться

Пошаговая настройка правил и объяснение того, когда расширение переключает зеркало.

Главное: после изменений нажимай «Сохранить»
1
Включи расширение и правило

Глобальный переключатель сверху включает обработку страниц. Внутри редактора у каждого правила есть отдельный чекбокс: выключенное правило не участвует в поиске зеркал.

2
Опиши исходные адреса

В поле RegExp укажи, какие host обрабатываются. Проверяется только host без протокола, пути, query и hash, например mirror1.example.com.

3
Настрой кандидатов

Выбери стратегию: числа в шаблоне, буквенные токены или готовый список host. Новый адрес всегда собирается из выбранного host и исходного пути страницы.

4
Сохрани и проверь

После сохранения открой страницу. Расширение сработает при сетевой ошибке, HTTP 5xx/403/451 или найденном маркере блокировки в тексте страницы.

Пример с условным доменом

Если открыта страница:

https://mirror1.example.com/path/page.html?view=full#top

и текущий host считается нерабочим, расширение подбирает следующий host по правилу и открывает тот же путь:

https://mirror2.example.com/path/page.html?view=full#top
https://mirror3.example.com/path/page.html?view=full#top
https://mirror4.example.com/path/page.html?view=full#top

Протокол берётся из настройки правила: всегда https, всегда http или такой же, как в исходном URL. Path, query и hash сохраняются без изменений.

Примеры правил для example.com

Цифры в поддомене

hostRegex: ^mirror\d+\.example\.com$
template: mirror{n}.example.com
strategy: number

Цифры перед доменом

hostRegex: ^\d+\.example\.com$
template: {n}.example.com
strategy: number

Вариант без цифры

hostRegex: ^mirror\d*\.example\.com$
template: mirror{n}.example.com
strategy: number
includeEmpty: on

\d+ означает «одна или больше цифр», а \d* разрешает отсутствие цифры. Включай вариант без цифры только если host вроде mirror.example.com тоже должен быть кандидатом.

Буквы/токены

hostRegex: ^node-[a-z]+\.example\.com$
template: node-{s}.example.com
strategy: letters

Готовый список

mirror1.example.com
mirror2.example.com
mirror3.example.com
Что означают основные поля
Какие host обрабатывать, RegExp
Фильтр host, на которых расширение должно включаться в режимах с шаблоном. Проверяется только host: например mirror1.example.com, без https://, пути и параметров. В режиме готового списка это поле скрывается: правило включается на host из списка.
Режим step
При ошибке сразу выбирает следующий кандидат из списка и открывает его в текущей вкладке. Кандидаты строятся по правилу, уже попробованные host пропускаются.
Режим probe
Сначала проверяет кандидатов фоновыми запросами, потом открывает первый ответивший host со статусом 2xx/3xx и без маркеров блокировки в тексте. Количество одновременных проверок задаёт поле «Параллельных проверок».
Последний рабочий host
Когда страница загрузилась без маркеров блокировки, content script отправляет сигнал PAGE_OK, и расширение запоминает этот host. Значение «Кэш рабочего host, часов» = 0 означает «не забывать по времени»: сохранённый host используется, пока сам не даст ошибку или маркер блокировки.
Маркеры страницы блокировки/ошибки
Content script несколько раз после загрузки проверяет title и текст страницы. Если найден маркер, отправляется BLOCKED_PAGE_DETECTED, текущий host считается плохим, кэш для него очищается, и расширение ищет следующий вариант. Добавляй сюда точные фразы из страницы ошибки, по одной строке.
Максимум редиректов
Это защита от бесконечного перебора. Код автоматически поднимает эффективный лимит до размера списка кандидатов плюс запас, но ручное значение всё равно полезно для больших списков.
Экспорт и импорт настроек

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

Импорт настроек загружает такой JSON-файл обратно и заменяет текущие правила. После успешного импорта настройки сразу сохраняются в расширении.

Кэш последнего рабочего host не экспортируется: он зависит от текущего профиля Chrome и обновляется автоматически при реальном открытии страниц.

Если не сработало
  • Проверь, что расширение включено вверху страницы и на странице chrome://extensions.
  • После любых изменений нажми «Применить к правилу», затем «Сохранить». Если включено автосохранение, кнопка сохранения отключена, а изменения записываются автоматически.
  • Для режимов с шаблоном убедись, что hostRegex совпадает именно с host, например mirror1.example.com. В режиме готового списка проверь, что текущий host есть в списке.
  • Если рабочий номер вышел за диапазон, увеличь поле «До». Поле «Макс. редиректов» автоматически расширяется до размера диапазона, но его всё равно можно поднять вручную для больших списков.
  • Если открылась страница ошибки с Host Error, Error 522, Origin is unreachable, Cloudflare Ray ID или похожим текстом и расширение не переключилось, добавь точную фразу из этой страницы в поле «Маркеры страницы блокировки/ошибки».
  • Если расширение продолжает вести на старый сохранённый host, нажми «Очистить кэш правила» или открой именно проблемную страницу; при DNS/сетевой ошибке, HTTP 5xx/403/451 или найденном маркере блокировки кэш будет сброшен автоматически.
  • Для диагностики открой блок «Журнал диагностики» в этих настройках, нажми «Обновить журнал» и экспортируй JSON. Также можно открыть DevTools расширения на chrome://extensions и смотреть логи [Auto Mirror Switcher].

Редактор

Цифровой перебор
Буквенный/токенный перебор
Список host
Тайминги и защита от циклов
Журнал диагностики Если расширение ведёт не туда, обнови журнал и экспортируй JSON или текст из окна. Хранится до 1200 последних событий
В журнале могут быть URL страниц, которые ты открывал через правила расширения. Перед публикацией проверь, нет ли там лишнего.