Восстановление устаревших блокировок профилей браузера
Блокировка профиля браузера предотвращает одновременное открытие одного и того же аккаунта двумя воркерами.
Большинство систем дают сбой, когда воркер аварийно завершается или теряет сеть. Они видят старую блокировку, удаляют её и позволяют новому воркеру перехватить управление. Это позволяет очереди двигаться дальше, но приводит к повреждению состояния аккаунта.
Устаревшая блокировка — это не файл, который нужно удалить. Это незавершенная операция, требующая контролируемого пути восстановления.
Не относитесь к блокировке как к простому флагу. Реальная ценность заключается в профиле браузера: куках, локальном хранилище и истории сессий.
Используйте конечный автомат для восстановления:
• Удержана • Подозрение на устаревание • В карантине • Проверена • Доступна | Ожидание возобновления | Ручная проверка
Состояние «Карантин» жизненно важно. Оно не позволяет второму воркеру вмешаться, пока вы проводите расследование.
Необходимо использовать модель аренды (lease model) с токеном ограждения (fencing token). Каждая операция записи должна включать номер версии. Если старый воркер «оживет» после того, как управление перехватит новый, система должна отклонить его старый токен. Это предотвращает скрытое повреждение данных.
Распространенные причины устаревших блокировок:
- Аварийное завершение процесса воркера
- Перезагрузка хоста
- Превышение времени выполнения задачи
- Остановка heartbeat-сигнала
- Разделение сети
Устаревшая блокировка не означает, что профиль в безопасности. Воркер может казаться «мертвым», но он все еще может работать из-за сетевой задержки.
Прежде чем повторно использовать профиль, необходимо собрать доказательства:
- Последний известный URL
- Последний известный шаг
- Последний скриншот
- ID прокси
- Статус директории профиля
Если задача прервалась во время критического действия, такого как оформление заказа или смена пароля, не используйте автовозобновление. Отправьте её на ручную проверку.
Четыре безопасных варианта восстановления:
- Доступна: используйте этот вариант, если задача не началась или завершилась с ошибкой до того, как затронула данные аккаунта.
- Ожидание возобновления: используйте этот вариант, если ваши задачи имеют четкие и безопасные контрольные точки.
- Повтор: используйте этот вариант, если профиль в безопасности, но задачу нужно начать заново.
- Ручная проверка: используйте этот вариант, если состояние неопределенно или критично.
Хватит искать легкие пути. Не удаляйте директории профилей и не очищайте куки, чтобы «починить» сессию. Эти действия разрушают контекст аккаунта.
Безопасная система следует этим правилам:
- Один профиль
- Одна аренда владельца
- Одна активная задача
- Один след доказательств
- Одно решение о восстановлении
Блокировка — это лишь симптом. Ваша задача — защитить среду аккаунта, которая за ней стоит.