Когда защита хостинга блокирует наш сервер
Почему антибот или файрвол на хостинге ломает верификацию клиента и валидацию контента и как пропустить наш сервер.
Многие хостинги ставят перед сайтом защитный слой. Он следит за входящими соединениями и, как только какое-то кажется ему подозрительным, отвечает капчей, JavaScript-проверкой или просто 403 вместо страницы. Посетитель один раз пройдёт капчу и больше о ней не вспомнит. Наш сервер так не может: он не выполняет скрипты, не хранит куки и ему некому нажать кнопку – он получает страницу с проверкой и считает её ответом вашего сайта.
Неудобство в том, что такая защита часто включена по умолчанию, на тарифе, который никто не настраивал, – поэтому сайт, который в браузере выглядит вполне исправным, может быть закрыт для нас с первого дня в сети.
Что именно ломается
Traffman обращается к вашему сайту извне в трёх ситуациях, и такая защита ломает все три:
- Верификация клиента. После сохранения API ключа и секрета на вашем сайте наш сервер делает обратный запрос к нему, чтобы подтвердить, что клиент действительно принадлежит этому сайту. Если вместо ответа приходит капча, верификация не завершается: клиент остаётся в состоянии Ожидает подтверждения, письмо с подтверждением не приходит, а обмен не может начаться – см. подтверждение клиента.
- Валидация контента. Каждый переданный материал загружается так, как его загрузил бы анонимный посетитель. Страница с проверкой – это не статья, поэтому материал отмечается как Невалидный, и обычно все материалы сразу, в течение одного часа – см. как работает валидация.
- Клики по вашему контенту. Когда посетитель нажимает на ваш материал в блоке на сайте другого участника, сервис проверяет страницу именно в этот момент. Заблокированная проверка отправляет посетителя на нашу страницу контент недоступен, и трафик теряется – см. ревалидацию.
Блоки на вашем собственном сайте при этом работают, потому что эти запросы идут от вашего сайта к нам, а не наоборот. Именно это и сбивает с толку: сайт выглядит полноценным участником, тогда как его собственный контент тихо выпал из обмена.
Как это распознать
У признаков одна общая форма – всё, что делается с вашей стороны, удаётся, а всё, что делается в сторону вашего сайта, нет:
- Клиент не выходит из состояния Ожидает подтверждения, хотя ключ и секрет правильные.
- Все переданные материалы получают состояние Невалидный, хотя те же адреса нормально открываются в вашем браузере.
- Вкладка Healthcheck в плагине сообщает, что соединение или адрес контента не удалось прочитать.
Страница, которая открывается в приватном окне браузера, но всё равно не проходит нашу проверку, – типичная картина: защита пропускает браузеры и останавливает всё остальное.
Где искать эту опцию
В каждой панели она называется по-своему, поэтому стоит просмотреть все названия:
- Bot protection, Anti-bot, Bot Fight Mode
- Web Application Firewall, WAF, ModSecurity
- Proactive defence, Attack protection, Anti-DDoS, Under Attack Mode
- IP reputation, Country blocking, Rate limiting
В панели управления хостингом они обычно лежат в разделе Security (Безопасность). Если сайт стоит за Cloudflare или другим CDN – это второй, отдельный слой со своими настройками: отключение опции в панели хостинга там ничего не меняет. А сам WordPress может держать третий: плагины безопасности вроде Wordfence или All-In-One Security блокируют «плохих ботов» самостоятельно, изнутри сайта.
Два способа это исправить
Пропустить наш сервер. Лучший вариант: защита и дальше работает для всех остальных, а внутрь пускается только наш адрес. Поищите в том же разделе поле IP allowlist, Whitelist или Trusted IPs и добавьте адрес, указанный ниже. Некоторые панели принимают также исключения по пути – всё, что наш сервер запрашивает у сайта на WordPress, лежит под /wp-json/traffman/, – но исключения по адресу вполне достаточно.
Отключить опцию. Это касается всего сайта, поэтому подходит, когда добавить адрес некуда, – или чтобы подтвердить диагноз: отключите защиту, запустите healthcheck, включите обратно. Если проверка проходит только при отключённой защите, причина найдена.
Если ничего из этого в вашей панели нет, это обычное обращение в поддержку. Примерно такой формулировки обычно достаточно: «Прошу добавить IP-адрес N.N.N.N в белый список защиты от ботов и файрвола сайта – это сервис, с которым работает мой сайт, а на его запросы отвечает капча.»
Адрес нашего сервера
Запросы от Traffman к вашему сайту всегда приходят с одного адреса:
142.93.104.213
Именно его нужно добавить в белый список. Если он когда-нибудь изменится, эта страница обновится ещё до того, как изменение вступит в силу, – поэтому сверяйтесь здесь, а не с адресом, записанным где-то отдельно.
Как проверить, что помогло
На WordPress плагин отвечает сразу: откройте Traffman → Settings → Healthcheck и нажмите обе кнопки – Check the connection from the API server to your client и Check content URL availability on your site. Два сообщения об успехе означают, что наш сервер теперь достигает вашего сайта. Подробнее о вкладке – в установке плагина.
Клиент, оставшийся в состоянии Ожидает подтверждения, сам повторно не проверяется, поэтому запустите верификацию заново: на вкладке API ещё раз нажмите Save с теми же ключом и секретом.
Контент, уже отмеченный как невалидный, ничего нажимать не требует. Эти материалы остаются в цикле повторных проверок и становятся валидными после первой успешной, хотя давно сломанный материал проверяется редко – см. ревалидацию. Повторное сохранение записи в WordPress передаёт её заново и сразу планирует свежую проверку.
Если ваш сайт работает через собственную интеграцию, а не через плагин, те же две проверки доступны как вызовы API – см. документацию API.