Одна из фич, о которой клиенты 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}.pnggrouprestrict_{group_id}_{timestamp}.txt
После 5 неудач подряд на одну группу, бот добавляет её в blacklist, и 5 доказательств сохраняются как доказательство, что пытались.
4. Button disabled evidence
Особый случай: иногда кнопка «Опубликовать» остаётся disabled долго (подозрение на внутренний throttling Facebook). У нас:
btndisabled_{timestamp}.pngbtndisabled_{timestamp}.txt
Если это случается 3 раза подряд, пауза на 45 минут.
5. Checkpoint evidence
Если Facebook требует подтверждения личности, полный screenshot + DOM. Сохранение permanent (бесконечный срок жизни) пока пользователь вручную не очистит.
Как это используется для апелляции?
Представим сценарий: ваш клиент получает сообщение от Facebook «Ваш аккаунт заблокирован из-за необычной активности». Он хочет подать апелляцию. Что ему предоставить?
- Доказательство легитимной активности: посты были реальной недвижимостью, не спамом. Успешные screenshots показывают контент.
- Доказательство, что не нарушал rate-limits:
_rl_evidenceпоказывает сколько постов в день в среднем и с каким fingerprint. - Доказательство соблюдения 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 инструкции:
| Тип | Срок жизни | Причина |
|---|---|---|
| Success | 30 дней | доказательство легитимности |
| Rate-limit | 90 дней | Facebook может проверить history |
| Group restriction | 60 дней | доказательство админу, что пытались |
| Button disabled | 30 дней | 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, антидетекцию.
Приложение: что делать, если аккаунт забанили
- Немедленно остановите бота. Не пытайтесь логиниться снова.
- Запросите у BuzzPost все evidence для аккаунта. Он будет включать последние 60-90 дней.
- Подайте апелляцию в Facebook через help center, приложите screenshot легитимной активности.
- Ждите. Апелляции Facebook занимают 1-30 дней.
- Если одобрено — сообщите BuzzPost, чтобы мы вернули VDS в работу.
- Если отклонено — аккаунт потерян. Откройте новый (3 недели прогрева) с новым VDS.
Глубокие вопросы: почему не хранить только «нужное»?
Легитимный вопрос разработчиков: зачем хранить 600 screenshots успешных постов в месяц? Они занимают место, и никто на них не посмотрит.
Три причины:
- Доказательство volume. При подаче апелляции Facebook хочет видеть, что аккаунт действительно активен. 600 screenshots постов в месяц — это доказательство, что аккаунт в активном использовании, а не bot dormant.
- Baseline для pattern detection. Если аккаунт забанили внезапно, можно посмотреть на screenshots 24 часов до этого и найти необычный паттерн (пост с проблемным контентом, группа, которая пожаловалась, и т.д.). Без screenshots — вы слепы.
- Будущий 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, управление множеством аккаунтов.