Спасение от негативного поведенческого фактора (борьба с внешними proxy)

Сейчас в конкурентной борьбе не гнушаются использовать и методы накрутки негативного поведенческого фактора. В метрике Яндекса отчетливо видно, что есть закономерность у запросов:

  • Время на сайте 0 секунд
  • Примерно равное время между заходами
  • Чередование стран
  • Одинаковое разрешение экрана
  • Одинаковая OS
негативный поведенческий фактор releshop.ru reshetnick mike
негативный поведенческий фактор releshop.ru reshetnick mike

Выбираем паттерн, по которому дуем искать «злоумышленников».

Т.к. большая часть клиентов это РФ и Казахстан, для определения злоумышленника мы решили выбрать всех веб-клиентов, кто заходит на наш сайт из других стран.

Хотя можно было бы выбрать и другие варианты или комбинации. Например, страна + юзер-агент (браузер) или страна + разрешение экрана (тут сложнее, т.к. придется запускать клиентский JS код для определения разрешения экрана клиента).

Блокируем злоумышленников из стран, где у нас нет клиентов.

Для блокировки по гео-данным можно использовать много разных механизмов, библиотек и сервисов, в зависимости от нагрузки на ваш сайт, какие модули включены у вас на хостинге, и на каком языке программирования работает ваше веб-приложение (ваш сайт). Чтобы подобрать подходящее для вас, можно поискать в гугле поисковым запросом «[ваш язык программирования] geoip github».

В нашем случае у нашего хостинг-провайдера уже было установлено расширение geiop для языка php, на котором написан сайт клиента.

Пример кода на php

function is_ruClient() { $allowedCountries = array('RU', 'KZ'); // список разрешенных стран $clientCountry = geoip_country_code_by_name($_SERVER["HTTP_X_REAL_IP"]); // получаем гео-код клиента по его ip-адресу $result = in_array($clientCountry, $allowedCountries); // проверяем, совпадает ли гео-код клиента со списком разрешённых стран return $result; // возвращаем ответ (true/false) } if (is_ruClient() == false) { // если клиент не из списка разрешенных стран header("location: https://thisxdoesnotexist.com/"); // пересылаем его на другой сайт exit(); }

И вуаля! Переходы не из РФ остановились.

Рынок сбыта у этого бизнеса находится в РФ, поэтому блокировка иностранных IP не повлияла на продажи.

Надеюсь, кому-то будет полезно! (Над материалом работали ребята из dynamics.moscow)

8
30 комментариев