Движок миграций доменов, который не теряет позиции
Ниша iGaming, сеть зеркал. Когда регистрируем новый домен-зеркало (например melbet-xyz.top), Яндекс должен знать, что это тот же сайт, что и старый. Для этого в Я.Вебмастере есть процедура «переезд сайта» — заходишь в панель, открываешь старый домен, говоришь «я переезжаю на новый», указываешь адрес. Через какое-то время Яндекс начинает показывать в поиске новый домен вместо старого.
типы задач
Переезд — самое основное, но не единственное. Сервис умеет:
- Переезды. Старый домен → новый, через настройки Вебмастера.
- Восстановления. Когда домен забрали по абузу, нужно вернуть связь — был melbet-abc.top, заблокировали, восстанавливаем переезд на новый melbet-xyz.cam.
- Разгруппировки. Если Яндекс объединил несколько доменов в группу зеркал и один из группы заблокирован — нужно отвязать остальные через «Отклонить зеркало».
- Ребилды. После того как старый мейн отвязан, собираем группу зеркал заново вокруг нового мейна.
- Замены мейна (abuse-main). Самая комплексная операция, когда заблокирован основной домен проекта: 1) отвязать все зеркала от старого мейна, 2) назначить новый мейн, 3) пересобрать всю группу.
- Автопереезды. По расписанию, ночью забираем свежие задачи из CRM.
Для каждого проекта (melbet, 1xbet, 1win, pinup и т.д.) — свой аккаунт в Я.Вебмастере. Сервис хранит сессии для каждого аккаунта и заходит под нужным.
очередь и мониторинг
Сервис работает круглосуточно. Каждые пять минут проверяет очередь — есть ли что выполнять. Если да — берёт задачу, открывает браузер, заходит в Вебмастер, выполняет, и одну за одной.
После выполнения задача переходит в мониторинг — раз в несколько часов сервис проверяет, принял ли Яндекс переезд. Если принял — задача завершена. Если нет — ждёт дальше.
визуальная диагностика
Раньше при любой ошибке было одно: «не получилось — повтор через час». Сервис не различал ситуаций. Домен не найден в аккаунте? Повтор. DNS не настроен? Повтор. Контент идентичный, Яндекс отклонил? Повтор. Прокси сдох? Повтор. В итоге задачи, которые в принципе невозможно выполнить, ретраились десятками раз — один домен 1win ретраился 87 раз, один домен 1xbet — 47 раз.
Что сделали: на каждом шаге сервис делает снимок страницы и анализирует его. Видит, что конкретно отображается в Вебмастере, и понимает, в чём проблема. «Домена нет в списке» — одна категория, «Контент идентичен» — другая, «Страница не загрузилась» — третья. Для каждой — своя стратегия: одни нужно повторить (может прокси глюканул), другие повторять бесполезно (домена реально нет в аккаунте).
раздел «Проблемы»
Задачи, требующие ручного вмешательства, теперь не висят в очереди и не повторяются автоматически. Они уезжают в отдельный раздел «Проблемы». На карточке прямо написано, что нужно сделать: «Добавьте домен в Вебмастер», «Исправьте DNS-записи», «Контент сайтов идентичен — измените содержимое». Можно фильтровать по типу проблемы и массово возвращать в очередь после ручного фикса.
замены мейнов
Самый длинный сценарий. Когда главный домен проекта блокируют по жалобе, нужно перевести всю группу зеркал на новый мейн. Это не один переезд, а цепочка:
1. Определяется новый мейн.
2. Все зеркала отвязываются от старого мейна (разгруппировка).
3. Ждём подтверждения от Яндекса.
4. Собираем все зеркала заново вокруг нового мейна (ребилд).
Каждый этап занимает от нескольких часов до нескольких дней — зависит от Яндекса. На замены мейнов смотрим отдельно от обычной очереди, потому что они длинные, многошаговые и любой их сбой бьёт по всему проекту.
результаты
С 11 апреля обработано 507 задач, успешно завершено 293+: переезды (155), восстановления (118), разгруппировки (11), автопереезды (3), абуз-разгруппировки (5), абуз-ребилды (1).
Распределение ошибок (из 98 задач с ошибкой): 65% — домен реально отсутствует в Вебмастере, нужно добавить руками; 12% — домен есть, но интерфейс не подтягивает его в suggest, баг на нашей стороне; 12% — Яндекс отказывает из-за идентичного контента; 11% — разовые сбои сети (мёртвый прокси отключён).
По замене мейнов: из 11 запущенных одна полностью завершена, две на ребилде, четыре на разгруппировке, три застряли из-за идентичного контента, одна — из-за бага с suggest.