Я уже несколько лет собираю и отдаю whitepage под арбитражные связки, и через мои руки прошли сотни лендингов. И я честно скажу: первые года полтора я искренне верил в мистику модерации. Залив умер? «Не повезло, модератор злой». Кабинет в дизейбле? «Фейсбук опять штормит». Сейчас, оглядываясь, мне немного стыдно за то мышление — потому что почти всегда дело было не в мистике, а в наборе технических огрехов, которые я сам же и оставлял в коде.
Меня, если честно, до сих пор бесит, когда вижу в чатах вопль «всё в бане, помогите» — а под капотом лендинг, который палится любой автоматической проверкой за две секунды. Бан прилетает на разных уровнях: отклонили объявление, дизейбнули кабинет, домен в блэклисте, ПП прибила оффер. Но триггерят его, по моему опыту, одни и те же вещи. Ниже — 15 факторов, которые я гоняю по каждому сайту перед заливом. Сразу оговорюсь: это не схема обхода модерации. Это требования рекламных систем и индустриальные стандарты, которым твой сайт либо соответствует, либо нет. Я за белый угол — и не из морали, а потому что так банально дольше живёшь.
1. Повторное использование шаблона
Вот на чём я обжёгся одним из первых. Взял красивый шаблон, поменял тексты-картинки, залил пачку — и удивлялся, почему они мрут кластером. А механика простая: рекламные сети и антифрод хранят fingerprint структуры — DOM, классы, набор скриптов, пути к ассетам. Если твой лендинг структурно повторяет уже забаненный, совпадение даёт автофлаг, и за одним падает весь выводок. Особенно быстро, на мой взгляд, фингерпринтятся «прокладки», слитые с форумов и из закрытых чатов: один спалившийся экземпляр обучает классификатор на всех.
Как я это закрываю: уникализирую именно разметку — классы, ID, порядок блоков, сетку, — а не только тексты. Обязательно вычищаю служебные комментарии вроде <!-- template by ... -->, <meta name="generator">, дефолтный favicon и robots.txt от исходника. Это мелочи, на которых сыпется больше людей, чем кажется.
2. Неуникальный код
A5-real-publicindex.pngPublicWWW: поиск по фрагменту кода (GTM-) находит сотни тысяч сайтов с тем же сниппетом — чужой/неуникальный код реально оседает в публичном индексе и ищется по куску HTML.
Близкий брат предыдущего пункта, но тут речь не про структуру, а про саму сигнатуру кода. Анти-клоака сервисы считают хэш HTML, inline-скриптов и набора внешних ресурсов. И вот что меня в своё время отрезвило: снэпшоты твоего сайта оседают в публичных индексах — urlscan.io, PublicWWW, Wayback, BuiltWith. Через PublicWWW тебя по куску кода находят и модерация, и — что обиднее — конкуренты. В сообществе не зря как мантру повторяют: уникальность кода критична. Полностью подписываюсь.
Как я это закрываю: минификация плюс случайные имена бандлов (main.[hash].js), уникальные тексты юр-страниц, и — мой личный ритуал — раз в какое-то время сам пробиваю свои домены через urlscan.io и PublicWWW. Просто чтобы увидеть, что про меня видно снаружи. Рекомендую завести такую привычку, отрезвляет.
3. Отсутствие юридических страниц
Тут многие ленятся, а зря. Google Ads в «Destination requirements» требует доступной информации о бизнесе, Meta требует Privacy Policy при использовании пикселя. Мой минимум для белого лендинга: Privacy Policy, Terms, Cookie Policy с рабочим баннером и контакты.
Как я это закрываю: ссылки в футере на каждой странице — без 404 и без #, меня лично передёргивает от ссылок-заглушек. Privacy — уникальный текст без забытых [COMPANY NAME] (видел такое на чужих лендах сотни раз) и релевантный тематике. И главное: cookie-баннер должен реально блокировать трекеры до согласия, а не висеть для красоты. На мой взгляд, фейковый баннер хуже, чем его отсутствие — он создаёт иллюзию, что у тебя всё в порядке.
4. Сигналы клоаки
Клоака запрещена явно во всех крупных сетях — это понятно. Но что мне кажется недооценённым: в ту же ловушку залетают и абсолютно белые сайты. Гео-редирект без 1:1 соответствия контента, контент, который грузится только после клика, SSR с отличиями для ботов — всё это для краулера читается как «разная выдача модератору и юзеру». То есть ты не клоачишь, а выглядишь так, будто клоачишь. И доказывать никто не будет.
Как я это закрываю: правило «один URL — один контент», варианты выношу в явные подпапки. robots.txt не должен блокировать рекламные краулеры (AdsBot-Google, facebookexternalhit). И никогда не отдаю «чистую версию» по детекту датацентровых IP — потому что вот это уже и есть клоака по определению, как себя ни уговаривай.
5. Низкая скорость загрузки
A5-real-cwv.pngРеальный PageSpeed Insights (mobile): когда сайт медленный — LCP, INP и FCP уходят в жёлтую/красную зону, итог «Failed». Именно так это видит и модерация по полевым данным.
Признаюсь, скорость я долго недооценивал — казалось, «ну грузится и грузится». Пока не дошло, что Google Ads напрямую тащит Landing Page Experience в Quality Score, а индексация вообще mobile-first. Публичные пороги Core Web Vitals держу в голове как таблицу умножения: LCP ≤ 2.5 с, INP ≤ 200 мс, CLS ≤ 0.1. Тяжёлый сайт — это дороже клик и реальный риск дизапрува.
Как я это закрываю: WebP/AVIF вместо PNG, loading="lazy", font-display: swap, выпиливание неиспользуемого CSS/JS, CDN, brotli. Проверяю через PageSpeed Insights и Lighthouse и целюсь в пороги именно на 4G, а не на своём гигабитном вайфае — это две разные реальности.
6. Подозрительные редиректы
Sneaky redirects, meta-refresh с задержкой 0 и длинные цепочки 30x — это классика, за которую прилетает. По опыту, опаснее всего то, о чём не думают: редиректы по document.referrer и хопы через публичные шортнеры (bit.ly, cutt.ly), которые сами по себе нередко уже в блэклистах. Я к шортнерам отношусь как к красной тряпке — больше проблем, чем удобства.
Как я это закрываю: минимум хопов, в идеале прямая ссылка на ленд. Любой редирект — серверный 301/302 с понятным Location:. Под трекинг — свои поддомены, а не публичные сокращатели. Звучит душно, но именно эта душнота держит связки живыми.
7. Репутация и возраст домена
Антифрод гоняет домен по Google Safe Browsing, Spamhaus DBL, VirusTotal, смотрит whois-историю и Wayback. Дроп с прошлым в casino/warez/phishing палится моментально — сам пару раз наступал на это, когда гнался за «возрастом». Массовая регистрация в одну дату, на одного регистранта, в одной /24 — кластеризуется на ура.
Как я это закрываю: прогоняю домен ДО использования через Safe Browsing, urlscan.io, VirusTotal, Wayback. Разношу регистраторов, NS и подсети. И мой главный вывод за эти годы: чистая история важнее возраста. Красивый старый домен с грязным прошлым — это мина, а не актив.
8. Проблемы SSL
Тут вроде всё банально, но именно на банальном чаще всего и горит. HTTP браузеры маркируют как «Not Secure», сети такие лендинги режут. Минимум — TLS 1.2, лучше 1.3. А дальше начинаются мои любимые грабли: истёкший Let's Encrypt (сломалось автообновление и никто не заметил), mismatch сертификата на www, mixed content.
Как я это закрываю: валидный сертификат с реально работающим автообновлением, принудительный 301 на HTTPS, проверка через SSL Labs с целью A/A+. Совет от обожжённого: проверяй, что автопродление именно работает, а не «настроено».
9. Несоответствие офферу
Это, пожалуй, то, что меня бесит наблюдать у новичков сильнее всего. Google и Meta требуют, чтобы лендинг соответствовал обещанию объявления, и от ad-to-LP relevance прямо зависит Quality Score. Креатив про бесплатный курс → платный продукт на ленде, цена в креативе ≠ цена на сайте, язык не совпадает — всё это disapprove. А за бренд в объявлении, которого нет на лендинге, Facebook, по моим наблюдениям, банит вообще без раздумий.
Как я это закрываю: синхронизирую message, оффер, цену, гео, язык, валюту и картинки. Простое правило, которое себе вбил: то, что обещал креатив, юзер должен видеть выше первого скролла. Если приходится скроллить, чтобы найти обещанное, — ты уже проиграл и модератору, и юзеру.
10. Перегруз скриптами
GA + GTM + FB Pixel + TikTok Pixel + Hotjar + чат + скрипты ПП — и так далее. Каждый сторонний скрипт это задержка, лишняя кука и расширение поверхности фингерпринта. Не зря в чатах опытные ребята прямо просят менеджеров ПП убирать все интеграции и скрипты — и я считаю это абсолютно верным рефлексом.
Как я это закрываю: держу бюджет 3–4 сторонних домена, только из белого списка, грузка через один GTM-контейнер, defer/async. И принципиально никакой обфускации JS — для Safe Browsing обфусцированный скрипт выглядит как малварь, и доказать обратное ты потом замучаешься.
11. Битые ссылки
Звучит несерьёзно, но при модерации краулер реально проходит по основным ссылкам. 404 на CTA, Privacy или Contacts — частая, тупая и обидная причина disapprove. Плюс это сразу бьёт по поведенческим. По мне, ронять залив из-за битой ссылки — это как проиграть матч из-за незавязанного шнурка.
Как я это закрываю: регулярные сканы (Screaming Frog, broken-link-checker), uptime-мониторинг на оффер-линк, нормальная 404-страница с возвратом на главную, rel="noopener" на внешних ссылках.
12. Дубли контента
Тут две беды. Внутренние дубли — http/https, www/без, со слэшем и без, UTM. И внешние — копипаст текста оффера, который элементарно ловится Copyscape и поиском фразы в Google. Партнёрский шаблон, который ты залил «как есть», лежит ещё у десятков вебов — и вы все в одном кластере.
Как я это закрываю: rel="canonical" на каждой странице, 301 на единый вариант хоста, уникализация копирайта. Минимум — переписать заголовки и USP-блоки, но по-хорошему весь текст. Да, лень. Но это та лень, за которую платишь кабинетами.
13. Мобильные ошибки
Индексация mobile-first, и основная масса показов идёт на мобайл — это уже не новость, а данность. Сигналы плохой версии, которые я гоняю в первую очередь: нет viewport, появляется горизонтальный скролл, тач-таргеты меньше 48×48 px, текст мельче 12 px, попапы на весь экран (привет, Google «Intrusive Interstitials»).
Как я это закрываю: верстаю mobile-first изначально, а не «ужимаю десктоп». Тестирую на 360×640 / 390×844 / 412×915, тач-цели держу ≥ 48×48 px, а для видео-фонов на iOS не забываю playsinline — забывал, и фон просто не запускался, проверено лбом.
14. Отсутствие контактов
Google и Meta при верификации бизнеса хотят прозрачных данных об операторе. Только форма без email и адреса, почта на gmail, разные названия компании в разных углах сайта — это провал верификации. А для finance/health ещё и автобан без disclaimer. Мне кажется, контакты — это тот блок, который люди делают «для галочки», и зря: модерация читает его внимательнее, чем сам оффер.
Как я это закрываю: страница /contacts с юр-названием, адресом, email на собственном домене с рабочим MX, телефоном. И жёстко слежу, чтобы данные совпадали с whois и Privacy Policy. Несостыковка тут — красный флаг, который потом не отмоешь.
15. Агрессивные попапы и интерстициалы
Chrome Abusive Experiences Report детектит фейк-системные уведомления, авто-редиректы и обманные крестики. Домен, попавший туда, теряет показ рекламы — и это, по-моему, один из самых недооценённых способов угробить актив. Плюс Google отдельно штрафует за интерстициалы, занимающие значимую часть экрана на мобиле.
Как я это закрываю: никаких попапов до первого скролла или первых 5–10 секунд, окно ≤ 30% экрана на мобиле, честная кнопка закрытия, ноль имитации системных диалогов. Статус домена периодически проверяю в Search Console → Abusive Experiences Report. Лучше узнать о проблеме оттуда, чем по упавшему показу.
Что я понял за все эти годы
Главный вывод, к которому я пришёл, простой и немного скучный: бан почти никогда не прилетает за один фактор — он прилетает за их сумму. Сайт, который проходит ревью и не палится, — это не «удачный шаблон» и не везение, а связка из чистого уникального кода, валидной техчасти, юр-страниц, контактов и честного UX.
Поэтому я и завёл себе этот чек-лист как pre-flight. Пройти 15 пунктов перед заливом — на порядок дешевле, чем разбирать дизейбл кабинета постфактум, когда уже потрачены деньги и нервы. И что мне нравится больше всего: большинство пунктов закрывается ещё на этапе сборки сайта — там, где это не стоит ни копейки, только дисциплины. Вот этой дисциплине я и учился все эти годы, набивая шишки, которыми и поделился выше.
Разборы, кейсы и апдейты по технике whitepage веду в своём канале — @MysticWizardsCashCartel