Перейти к содержимому

Скрипт на сайте

Скрипт WebShield — небольшой фрагмент кода, который добавляется на страницы сайта. Он позволяет выявлять бот-фермы и автоматизацию без включения проверки браузера, то есть не показывая посетителям экран проверки.

Установка необязательна. Она нужна тем, кто не хочет включать проверку браузера, но хочет видеть в статистике реальную картину: сколько трафика приходит из ферм и автоматизированных браузеров.

Часть признаков посетителя видна только изнутри страницы. Простые скрипты (curl, парсеры) отсекаются и без этого, а вот автоматизация настоящего браузера — когда атакующий управляет программой обычным Chrome — снаружи выглядит как живой посетитель.

Скрипт закрывает эту слепую зону: он снимает технический слепок окружения, по которому выявляются клоны одного образа на множестве адресов (см. Недействительный трафик и фрод). Раньше эти данные собирались только на экране проверки браузера — скрипт даёт их на сайтах, где проверка выключена.

Добавьте одну строку в общий HTML-шаблон страниц:

<script src="/webshieldpro/t.js" async></script>

Ключи и настройка не нужны: скрипт отдаётся с вашего же домена, и WebShield определяет сайт автоматически. Атрибут async обязателен — он гарантирует, что загрузка скрипта не задерживает отрисовку страницы.

Место вставки — <head> или конец <body>, на ваш выбор. В <head> немного лучше: скрипт начинает работать раньше и учитывает в том числе посетителей, которые ушли, не дождавшись полной загрузки страницы. Именно такие короткие заходы характерны для бот-ферм, поэтому в <head> картина получается полнее. Отрисовку это не задерживает — за это отвечает async.

Проверить установку можно так: откройте https://ваш-домен/webshieldpro/t.js в браузере. Должен открыться текст скрипта. Если возвращается ошибка 404 — домен ещё не переведён под защиту WebShield.

Добавьте в файл темы functions.php. Последний аргумент false ставит скрипт в <head>, true — в подвал страницы; работают оба варианта:

add_action('wp_enqueue_scripts', function () {
wp_enqueue_script('webshield', '/webshieldpro/t.js', [], null, false);
});

В файле app/layout.tsx:

import Script from "next/script";
<Script src="/webshieldpro/t.js" strategy="afterInteractive" />

Подойдёт любой способ вставить тег <script> в общий шаблон страниц: блок «пользовательский код в шапке или подвале» в конструкторе сайта, шаблон base.html в Django, layout.blade.php в Laravel. Важно, чтобы скрипт попадал на все страницы, а не только на главную — иначе часть посетителей останется неучтённой.

Вставлять скрипт через менеджеры тегов (например, Google Tag Manager) не рекомендуется: их часто блокируют расширения браузера, и данные будут неполными.

При строгой политике безопасности содержимого (заголовок Content-Security-Policy) разрешите загрузку и отправку данных со своего домена:

script-src 'self';
connect-src 'self';

Скрипт не загружает ничего со сторонних адресов и обращается только к вашему домену, поэтому директивы 'self' достаточно.

Собираются технические характеристики окружения (параметры экрана и графической подсистемы, часовой пояс, аппаратные характеристики устройства) и обезличенные счётчики работы со страницей.

Не собираются: содержимое полей форм, вводимый текст, пароли, содержимое страницы, история просмотров, файлы и любые данные из других вкладок. Скрипт не устанавливает рекламных идентификаторов и не передаёт данные третьим лицам.

Если на сайте есть политика конфиденциальности, отразите в ней факт технической обработки данных посетителя для защиты от автоматизированного трафика.

Вкладка Защита статистики домена: выявленные группы адресов с общим слепком и причина пометки. Данные появляются по мере накопления трафика — обычно в течение суток после установки.

Скрипт ничего не блокирует. Он только собирает признаки, по которым WebShield выявляет автоматизированный трафик; решение о блокировке принимается отдельно, на основании общих правил защиты домена.

Скрипт не заменяет проверку браузера. Проверка браузера не пускает автоматического клиента на сайт; скрипт лишь делает его заметным в статистике и в общей корреляции. Если задача — не пустить, включайте проверку браузера.

Из кода страницы и из вашего бэкенда данные скрипта недоступны: он не заводит сессию, ничего не возвращает в браузер и не имеет API. Всё, что он делает, — пополняет данные, по которым WebShield принимает собственные решения о защите домена.

Поэтому для защиты форм — регистраций, заявок, промокодов — этот скрипт не подходит: спросить у него «принимать ли вот эту заявку» не у чего. Такую задачу решает защита форм: её тег выдаёт идентификатор сессии, а ваш бэкенд получает по нему вердикт перед тем, как принять действие. Защита форм работает и для сайтов за нашей защитой; ставить оба скрипта не нужно — её тег собирает всё то же самое.

Посетители, у которых JavaScript отключён или заблокирован расширением, скриптом не учитываются. Атакующий тоже может не выполнять скрипт — тогда он останется без этих данных, но по-прежнему попадёт под общие правила защиты (сигнатуры, лимиты частоты, баны).