SEO
Mike Reshetnick

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

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

  • Время на сайте 0 секунд
  • Примерно равное время между заходами
  • Чередование стран
  • Одинаковое разрешение экрана
  • Одинаковая OS
негативный поведенческий фактор 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)

{ "author_name": "Mike Reshetnick", "author_type": "self", "tags": [], "comments": 31, "likes": 3, "favorites": 37, "is_advertisement": false, "subsite_label": "seo", "id": 176625, "is_wide": false, "is_ugc": true, "date": "Fri, 13 Nov 2020 13:07:35 +0300", "is_special": false }
0
31 комментарий
Популярные
По порядку
Написать комментарий...
5

Ну по факту-то скручивать ПФ ходят из местных сетей - "метрополитен", tele2 и ещё парочка. Заблочить бурж - толку не будет.
Мы вообще проводили эксперимент: откровенно ботовые сетки выводили на поддомен. Потом выяснилось, что людей туда многовато залетало, а толку для ПФ не оказалось от слова совсем. Это всё равно что воду решетом носить.
Проблема в том, что нормальную накрутку не выкупишь, нет пока ни единого алгоритма.
С моей точки зрения единственный способ - периодически обнулять ПФ, если они совсем свалились в негатив. Да, криво и коряво, да, ущерб для Гугла - некоторый. Но если нужны позиции в Яндекс - я других вариантов не вижу.

Ответить
1

И каким образом обнуляете пф ?

Ответить
1

смена URL с вариациями.
Яндекс легко индексирует, у него нет ограничений на обход и вывод в топ по мерикам домена - это заморочки Google. Но есть пачка метрик, которые держатся за URL - условно назовём эту белиберду "кармой домена", от запросного индекса до метрик ПФ.
Пока выглядит так, что оно работает, я на истину не претендую. 

Ответить
0

Лично мне кажется, что даже 30-100 переходов в месяц, с нулевым пребыванием на сайте, они докинут в копилку отрицательного ПФ. Потому от него лучше избавиться. Это, хоть чуть, но может помочь. Каждый день, один два робота заходят к вам из других стран. Известны ли они яше и гуглу как роботы, хрен их знает, как они учитываются тоже не известно. 

Ответить
2

Хуже, когда направленная атака человекообразных, с прокачанными профилями, от человека никак не отличить. Им-то всё равно, они может и не ломать пришли, просто те же профили нагуливают, попутно топча всё, что в зоне видимости.

Ответить
0

Вы абсолютно правы, у меня такая фигня на сайте твориться. Почти 40% отказов и все боты из России, поэтому я даже заблокировать их не могу. При этом, у них даже IP-адреса и провайдеры разные.

Ответить
1

Хорошо знакомая картина.
Пока Яндекс с ПФ не разберется - будет только расти и крепнуть, к сожалению. Ну, или Яндекс придётся скидывать со счетов и все усилия прилагать к продвижению в Google.

Ответить
0

Крути в плюс сам себя

Ответить
4

Если модуль GeoIP установлен на сервере, то тогда можно блокировать и перенаправлять пользователей из других стран с помощью файла .htaccess:

GeoIPEnable On
GeoIPDBFile (Путь к файлу: GeoIP.dat)
SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
Deny from env=BlockCountry

Ну, а если на сервере не установлен GeoIP, то тогда можно воспользоваться API сервиса Sypex Geo. Потом просто можно делать GET-запросы и перенаправлять или блокировать пользователей из других стран.

Ответить
2

Для тех, у кого не установлен GeoIP на сервере, пользователей из других стран можно блокировать следующим образом:

<?php
$is_bot = preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl)~i",
$_SERVER['HTTP_USER_AGENT']
);

$geo = !$is_bot ? json_decode(file_get_contents('http://api.sypexgeo.net/json/'), true) : [];

switch ($geo['country']['name_en']) {
case 'Germany':
header('Location: https://yandex.ru/');
break;
case 'Poland':
header('Location: https://yandex.ru/');
break;

default:
echo 'Все, ништяк!';
break;
}
?>

Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl - это боты, которых данный скрипт будет пропускать независимо от страны.

Там, где Germany и Poland - вы можете написать любую страну. Добавлять страны тоже можно сколько угодно. Ну, а вместо редиректа на Yandex можно создать страницу с информацией об ограничение доступа и уже туда редиректить всех зарубежных пользователей.

Ответить
0

Здесь получился хороший гайд собрался ) 
на сайт диснейленда чтобы переправляло надо еще написать ))

Ответить
1

Можно никого и никуда не перенаправлять. Например, с тем кодом, что написал - можно вообще, как угодно играться:

<?php
$is_bot = preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl)~i",
$_SERVER['HTTP_USER_AGENT']
);

$geo = !$is_bot ? json_decode(file_get_contents('http://api.sypexgeo.net/json/'), true) : [];

switch ($geo['country']['name_en']) {
case 'Russia':
print "IP-адрес: {$geo['ip']}";
print "Страна: {$geo['country']['name_ru']}";
print "Регион: {$geo['region']['name_ru']}";
print "Город: {$geo['city']['name_ru']}";
break;

default:
header('HTTP/1.0 404 Forbidden');
break;
}
?>

Теперь вместо редиректа для всех пользователей, кто не из России - скрипт будет отдавать 403 ошибку (доступ запрещен).

Ответить
0

Что будет если сайт с данными по ip недоступен?

Насколько это замедляет работу сайта? Во-первых, сетевые задержки, во-вторых, объём файла.

Почему бы не получать файл в фоне и сохранять у себя, а для запросов в реальном времени обращаться не к удаленному серверу, а локально к файлу?

Ответить
0

Данные передаются в формате JSON, поэтому обычный пользователь даже не заметит какую-либо задержу. Ее можно увидеть только путем замера запроса. Да и многие сайты работают с API. Например, я делал CRM-систему, в которую было интегрировано около 30 различных API и на скорость веб-приложения это практически не повлияло.

Ответить
0

Апи можно подключить хоть 100. Другой вопрос как это сделано. Если при каждом соединении с сайтом сайт в реальном времени обращается к 100 внешним апи, то это потенциальная дыра - раз, и загрузка сайта напрямую зависит от доступности всех 100 апи - это два. Плюс часто через апи тягается гораздо больший объём данных, чем это реально требуется. И все это передаётся по сети - это медленнее чем обращение к локальному файлу или бд, или тем более к кэшу.

А доступность сайтов с апи у нас в стране с гениальным Роскомнадзором - это лотерея.

Поэтому ваш пример для человека без понимания сути скорее даже вреден, чем полезен.

Ответить
0

Почитайте про GET-запросы, HTTP и Reset API, т. к. вы не совсем понимаете, что говорите. Например, я воспользовался API Aviasels, если они меняют информацию у себя на сайте, то и по API подтягивается новая цена. В таком случае что, использовать парсер и сохранять все данные в БД, а не использовать API? Вы сами не понимаете, что пишите?

Ответить
1

Судя по всему, тут вы не понимаете о чем я веду речь.
У меня опыт в этой сфере 16 лет.
Я говорю про то, что апи нужно с умом подключать. Использовать апи можно и нужно.
Но нужно чтобы запросы выполнялись максимально в фоне, кэшировались полученные данные, обрабатывались исключения и нештатные ситуации, вроде недоступности какого-то апи и т.д.
Потому что ваш пример - ужасный пример. Который в случае возможной недоступности апи способен сделать недоступным сайт, на который он будет установлен

Ответить
0

Понял:) Я думал, что вы имеете ввиду то, что нужно вообще не пользоваться API из-за того, что данные хранятся на внешнем веб-ресурсе. Да, мой пример ужасный, но это всего-лишь пример и использовать его в продакшене - непрофессионально.

Ответить
0

Это же просто пример. Можно скачать базу IP-адресов с официального сайта Sypex Geo, а можно воспользоваться их API, как в примере. А так, вы правы - лучше устанавливать базу на сервер, т. к. в таком случае запрос будет выполнятся быстрее.

Ответить
0

Просто сейчас незнающие люди скопируют ваш код и вставят к себе на сайт. А потом сайт с айпишниками вдруг ляжет и сайты этих людей окажутся недоступными тоже.

Поэтому в таких случаях нужно писать что не нужно использовать этот код в реальных приложениях, и что этот пример неоптимален.

Ответить
0

То есть 404 ошибку:

default:
header('HTTP/1.0 404 Forbidden');
break;

Я ошибку допустил, там должна быть ошибка 403, а не 404.

Ответить
0

да, наверное вариантов и атак и "спасений" сильно больше, но как пример с которого стоит начинать - норм.

Ответить
0

если будут заявки можем в рекомендательном изложении написать

Ответить
0

Собрал базу форм обратной связи сайтов РФ + собрал БД почтовых адресов - сделал рассылку и наслаждаться. Нет никакой защиты от грубой силы, а ботов можно отсеивать разными способвми, но это не цель комментария

Ответить
0

Это спам, да. В спам обычно и залетает, толку то от такого маркетинга.

Ответить
0

Ну блин, вы считаете, что поступили круто, и красавчики, вот так рубанув?
А ничего, что всегда есть часть аудитории, которая легитимная, и при этом ходит с нерусских ip? Довольно много людей сидят под vpn с иностранным ip, чтобы роскомнадзор им мешал жить, или, если за свою приватность боятся. Кто-то из под пальм может захотеть зайти, а кто-то из opera mini...

Ответить
0

внимательно прочитайте, таких нет 

Ответить
0

Не поняла, по какому принципу, вы просто решили отрубить тех кто не из РФ? Накрутку могут осуществлять  и с российскими гео 🙈

Ответить
0

Компания работает только на РФ, другие рынки сбыта до неё не возможны. С российским гео накрутки не зафиксировано.

Ответить
0

Вы понимаете, что то что Вы предлагаете бесполезно? Поведенческие оцениваются не у Вас на сайте, а на выдаче Яндекса.
Именно там Яндекс "видит" быстрые заходы-выходы с сайта. И все скрипты расположенные у вас - это как зайцу стоп-сигнал.
Да, конечно Метрика сообщает Яндексу о плохих поведенческих. Но это вторичный сигнал. Основной - выдача.
С таким же успехом можно не скрипты делать, а просто снять Метрику.
Но это не поможет с накруткой в выдаче.

Ответить
0

Полностью согласен, у нас был мелкий случай, а если у кого-то будет крупный загон таких ботов? Этот материал имеет право на жизнь.

Ответить

Комментарии

null