Одна из фич, о которой клиенты BuzzPost спрашивают меньше всего — но которая реально спасает аккаунты — это pipeline forensic logging: каждое действие бота сохраняется со screenshot и DOM dump. В этой статье я объясню, почему это важно, что именно сохраняется, сколько хранить, и как это используется при апелляции, если аккаунт забанили.

Если вы строите своего бота — это инструмент, который вы ещё не понимаете, что вам нужен, пока в один день Facebook не забанит аккаунт стоимостью 50000₪, и вы не сможете доказать, что не нарушали правил. С evidence trail — сможете.

Что такое evidence trail?

Идея проста: каждый раз, когда бот делает что-то, он сохраняет доказательство. Screenshot + DOM dump + timestamp + metadata. Все эти данные попадают в специальную папку аккаунта и хранятся 60-90 дней.

Почему? Потому что когда вам нужен evidence, он нужен сразу. Если аккаунт забанили 5-го числа, вы обнаружили это 7-го, и пока вы готовились подавать апелляцию, прошло ещё 3 дня — если вы не сохраняли evidence непрерывно, время не вернуть. UI Facebook уже не показывает те же screens.

Типы evidence, которые мы сохраняем

1. Successful post evidence

Каждый успешный пост сохраняет:

  • {slug}_success_{timestamp}.png — screenshot feed сразу после поста (показывает пост в реальности).
  • {slug}_success_{timestamp}.txt — DOM dump.
  • {slug}_success_{timestamp}.json — metadata: group ID, post text, timing, photo hash.

Срок жизни: 30 дней. Потом удаляется (потому что их много — бот с 20 постами в день создаёт 600 постов в месяц).

2. Rate-limit evidence

Если бот определил rate-limit, он сохраняет:

  • _rl_evidence/rl_{timestamp}.png — screenshot диалога с ошибкой.
  • _rl_evidence/rl_{timestamp}.txt — DOM диалога, включая структуру кнопок.
  • _rl_evidence/rl_{timestamp}.json — metadata: время поста, вызвавшего, счёт постов за последний час.

Срок жизни: 90 дней. Почему больше? Потому что rate-limit — signal необычной активности, и Facebook может проверять history назад.

3. Group restriction evidence

Если конкретная группа отказывает в публикации, бот сохраняет:

  • grouprestrict_{group_id}_{timestamp}.png
  • grouprestrict_{group_id}_{timestamp}.txt

После 5 неудач подряд на одну группу, бот добавляет её в blacklist, и 5 доказательств сохраняются как доказательство, что пытались.

4. Button disabled evidence

Особый случай: иногда кнопка «Опубликовать» остаётся disabled долго (подозрение на внутренний throttling Facebook). У нас:

  • btndisabled_{timestamp}.png
  • btndisabled_{timestamp}.txt

Если это случается 3 раза подряд, пауза на 45 минут.

5. Checkpoint evidence

Если Facebook требует подтверждения личности, полный screenshot + DOM. Сохранение permanent (бесконечный срок жизни) пока пользователь вручную не очистит.

Как это используется для апелляции?

Представим сценарий: ваш клиент получает сообщение от Facebook «Ваш аккаунт заблокирован из-за необычной активности». Он хочет подать апелляцию. Что ему предоставить?

  1. Доказательство легитимной активности: посты были реальной недвижимостью, не спамом. Успешные screenshots показывают контент.
  2. Доказательство, что не нарушал rate-limits: _rl_evidence показывает сколько постов в день в среднем и с каким fingerprint.
  3. Доказательство соблюдения guidelines: когда Facebook ограничивал группу, он переставал пытаться.

С evidence trail в руках, шанс восстановления аккаунта растёт с ~10% (без) до ~40%. Это существенная разница.

Где хранятся файлы?

У нас в BuzzPost файлы хранятся локально на VDS, в C:\Users\Administrator\AppData\bot_chrome_profile\evidence\. Ежедневные backup загружаются в зашифрованный cloud storage (S3-compatible). Если сервер падает, evidence всё ещё там.

Расчёт места: каждый screenshot ~150-200 KB, каждый DOM dump ~50-100 KB. Для 20 постов в день это ~5-7 MB в день, ~150-200 MB в месяц. При 3 месяцах хранения — ~500 MB на аккаунт. Дёшево.

Формат screenshot

Мы используем PNG с compression level 6. Почему не JPEG? Потому что для текста нам нужна чёткость, и PNG с рисунком диалога легко читается. JPEG размывает пиксели — плохо для evidence-скриншотов.

Размер screenshot: полный viewport, 1366×768. Мы не экономим на качестве — доказательство должно быть чётким в суде.

Формат DOM dump

DOM dump — это файл .txt, содержащий outerHTML document.body в момент screenshot. Он занимает больше места, чем screenshot, но он необходим, потому что:

  • Он позволяет автоматический анализ после действия.
  • Он содержит все ARIA attributes, использованные для детектирования outcome.
  • Он сохраняет также элементы, которые не были visible (это помогает, когда Facebook шлёт alert о блокировке).

Наш код:

def save_evidence(driver, evidence_type, slug):
    ts = datetime.now().strftime("%Y%m%d_%H%M%S")
    base = f"_rl_evidence/{evidence_type}_{slug}_{ts}"
    driver.save_screenshot(f"{base}.png")
    with open(f"{base}.txt", "w", encoding="utf-8") as f:
        f.write(driver.execute_script("return document.body.outerHTML;"))
    with open(f"{base}.json", "w") as f:
        json.dump({
            "ts": ts, "slug": slug, "url": driver.current_url,
            "type": evidence_type, "title": driver.title
        }, f)

Когда удалять?

Наши retention инструкции:

ТипСрок жизниПричина
Success30 днейдоказательство легитимности
Rate-limit90 днейFacebook может проверить history
Group restriction60 днейдоказательство админу, что пытались
Button disabled30 днейdebug проблем перехода
Checkpointбесконечнокритично для апелляции

Автоматическое удаление работает каждый день в 03:00. Все файлы, превысившие TTL, удаляются.

Приватность и защита данных

Доказательства содержат контент постов — иногда личную информацию (адрес квартиры, телефон клиента, фото). Это тема GDPR и закона о защите приватности.

У нас в BuzzPost:

  • Доказательства зашифрованы AES-256 at rest.
  • Доступ только с 2FA через RDP.
  • Даже техник BuzzPost не видит контент без явного согласия клиента.
  • Ручное удаление доказательств возможно в любое время через панель.

Итог

evidence management звучит скучно, но это страховой полис, превращающий ваши 5000₪/мес VDS в нечто, возвращающее инвестицию, когда что-то ломается. BuzzPost сохраняет evidence trail автоматически для каждого клиента, с умным retention, шифрованием и доступом через панель.

Если хотите начать постить недвижимость с полным evidence trail — купите первый план за 249₪/мес. Подробнее смотрите возможности, rate-limit engineering, антидетекцию.

Приложение: что делать, если аккаунт забанили

  1. Немедленно остановите бота. Не пытайтесь логиниться снова.
  2. Запросите у BuzzPost все evidence для аккаунта. Он будет включать последние 60-90 дней.
  3. Подайте апелляцию в Facebook через help center, приложите screenshot легитимной активности.
  4. Ждите. Апелляции Facebook занимают 1-30 дней.
  5. Если одобрено — сообщите BuzzPost, чтобы мы вернули VDS в работу.
  6. Если отклонено — аккаунт потерян. Откройте новый (3 недели прогрева) с новым VDS.

Глубокие вопросы: почему не хранить только «нужное»?

Легитимный вопрос разработчиков: зачем хранить 600 screenshots успешных постов в месяц? Они занимают место, и никто на них не посмотрит.

Три причины:

  1. Доказательство volume. При подаче апелляции Facebook хочет видеть, что аккаунт действительно активен. 600 screenshots постов в месяц — это доказательство, что аккаунт в активном использовании, а не bot dormant.
  2. Baseline для pattern detection. Если аккаунт забанили внезапно, можно посмотреть на screenshots 24 часов до этого и найти необычный паттерн (пост с проблемным контентом, группа, которая пожаловалась, и т.д.). Без screenshots — вы слепы.
  3. Будущий debugging. Если Facebook добавляет новый механизм (а это бывает каждые 2-3 месяца), screenshots — это ваши единственные данные для построения нового detector.

Сжатие и оптимизация

Если 500 MB в месяц на аккаунт звучит слишком много, есть две оптимизации, которые мы использовали в прошлом:

  • Crop screenshot до релевантной области. Вместо полного 1366×768, обрезка до dialog только (если релевантно). Экономит ~70%.
  • Сжатие DOM dumps gzip'ом. HTML большой, но очень повторяющийся, gzip сжимает до ~10% размера.

У нас мы выбрали не делать агрессивную оптимизацию, потому что 500 MB в месяц = 1.50₪ в cloud storage. Не стоит риска потери информации при ошибке compression.

Детектирование аномалий в evidence trail

Продвинутая фича: панель автоматически анализирует evidence trail и помечает anomalies. Например:

  • Если внезапно 5+ rate-limits за 24 часа (против среднего 0-1).
  • Если внезапно 3+ checkpoint events за неделю.
  • Если процент успешных постов падает ниже 80% (против 95% обычно).

Каждый такой aspect создаёт критический alert, и тогда engineer BuzzPost может проверить до того, как аккаунт полностью забанят.

Открытые стандарты vs custom форматы

Философское решение, которое мы приняли рано: все evidence в открытых форматах, читаемых стандартными инструментами. PNG для screenshots, plain text для DOM, JSON для metadata. Никаких proprietary binary blobs.

Почему? Потому что если через 5 лет BuzzPost не будет, или вы перейдёте к другому провайдеру, собранный evidence должен оставаться работоспособным. PNG и JSON будут читаемы в 2031. Кастомный бинарный формат .bpx от исчезнувшей компании? Может быть нет.

Это часть нашего commitment к customer ownership of data. Система — это BuzzPost, но evidence — это ваш.

Интеграция с Telegram-мониторингом

Каждый раз, когда evidence сохраняется, если это аномальное событие (rate-limit, checkpoint, group restriction после 5 неудач), бот также отправляет уведомление в Telegram с приложенным screenshot. Это позволяет клиенту увидеть глазами, что случилось, без подключения к VDS.

Формат сообщения: "VDS #3 — checkpoint detected at 03:14:22 — see attached screenshot. Bot stopped. Manual intervention needed." и затем фото прикреплено. Клиент видит это в телефоне и может реагировать сразу.

Защита evidence от tampering

Юридический вопрос: если я представляю screenshot для апелляции, как Facebook знает, что я его не редактировал? Ответ: в BuzzPost screenshots подписаны HMAC-SHA256 в момент сохранения. Если кто-то редактировал картинку, её hash не совпадёт.

Это не доказательство для суда (Facebook не принимает только наш HMAC), но это внутренний signal, что evidence не повреждён. Если когда-либо понадобится доказать аутентичность evidence, можно показать, что HMACs совпадают.

Реальная история из 2025

В феврале 2025 наш клиент, риэлтор в Крайот, получил ban на 4-летний аккаунт после 8 месяцев активности с BuzzPost. Причина: «подозрительная активность». Он хотел подать апелляцию. Мы собрали 90 дней evidence и отправили ему:

  • 1247 screenshots успешных постов — полная документация легитимных постов недвижимости.
  • 4 evidence files rate-limits — показывают, что когда Facebook ограничивал, бот сразу останавливался.
  • 12 evidence files group restrictions — группы, не позволявшие публикацию.
  • 0 checkpoint events — аккаунт не получал предупреждений до ban.

Он подал апелляцию с 50 screenshots в zip. Через 14 дней Facebook вернул аккаунт с сообщением «приносим извинения, блокировка была ошибкой». Без evidence trail аккаунт был бы потерян.

Продвинутые вопросы безопасности

«А если Facebook запросит evidence у BuzzPost напрямую?»

Facebook не может это запросить. Мы не предоставляем evidence третьим сторонам без судебного указания. Если клиент разрешает, мы можем помочь ему собрать и подать — но мы не инициируем никакой контакт с Facebook от имени клиента.

«Может ли evidence использоваться против меня?»

Легитимный вопрос. Если evidence показывают, что бот сделал что-то нелегитимное (пост со spam, пост в неразрешённую группу), вы фактически представляете доказательства против себя. У нас мы не представляем evidence Facebook без согласия клиента на конкретный контент. Клиент контролирует, что передаётся.

Вывод

Evidence trail — это не приятная фича, а необходимое условие для ответственной автоматизации. Из всех платформ, которые мы видели в индустрии, BuzzPost — единственная, сохраняющая полный evidence trail по умолчанию. Другие говорят «не волнуйтесь, мы будем осторожны», но когда начинается беспорядок — у вас ничего нет.

Если хотите ответственную автоматизацию с полным evidence trail — купите первый план за 249₪/мес. Другие статьи: антидетекция, rate-limit engineering, управление множеством аккаунтов.