Когда защита хостинга блокирует наш сервер

Почему антибот или файрвол на хостинге ломает верификацию клиента и валидацию контента и как пропустить наш сервер.

Многие хостинги ставят перед сайтом защитный слой. Он следит за входящими соединениями и, как только какое-то кажется ему подозрительным, отвечает капчей, 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.

  • English
  • Polski
  • Русский
  • Українська