Как заблокировать ботов по рефереру и домену - посетители сайта с левых сайтов и рефферером
название сайта
Авторизация

Как заблокировать посетителей сайта по рефереру и домену

+2
SEO оптимизация / Вебмастер0 комментариев
Очень часто стал замечать, что некоторые посетители сайта смотрят только главную страницу и страницу регистрации, имеют рефер с левого домена, который к тематике моего сайта не имеет ни малейшего отношения, и ссылки на том сайте быть не может.

как заблокировать доступ к сайту по реффереру

И даже встречаются домены, которых вообще не существует... Долго искал "что это" и "кто это", но ответа не нашёл.Поскольку сайт у меня преимущественно для РФ, а такие пользователи с подобными реферами из KZ и UA, то решил просто заблокировать доступ к сайту для этих стран.

Сам код для блокировки стран взял с этого сайта, проверил по этому API сервису все IP адреса, с которых были такие посещения - страны совпали по многим базам IP адресов. В общем получился такой код:

<?php
if( !defined('DATALIFEENGINE') ) {
    header( "HTTP/1.1 403 Forbidden" );
    header ( 'Location: ../../' );
    die( "Hacking attempt!" );
}header("Content-Type: text/html; charset=utf-8");if(isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { // Если сайт подключен к Cloudflare$user_ip = $_SERVER["HTTP_CF_CONNECTING_IP"];} else {$user_ip = $_SERVER["REMOTE_ADDR"];}$user_info = file_get_contents("http://api.ipstack.com/".$user_ip."?access_key=0000000000000"); // 0000000000000 - меняете на ваш KEY сервиса
    $user_info = json_decode($user_info);
    $user_country = $user_info->country_name;
    $user_city = $user_info->city;if($user_country == "Ukraine" || $user_country == "Kazakhstan") { // Проверяем страну посетителя@header("HTTP/1.1 503 Service Temporarily Unavailable");
        @header("Status: 503 Service Temporarily Unavailable");echo <<<HTMLИзвините, но для Вашей страны заблокирован доступ к нашему сайту!<style>body {background: #f4f4f4;}</style>
HTML;die();}
?>


Сохраняем это в PHP код, кидаем его в папку, например, engine/mods, и подключаете этот файл через include в самый вверх в файле main.tpl вашего шаблона:

{include file="engine/mods/country_block_ua.kz.php"}

Для проверки добавлял к списку Russia - доступ к сайту получить не смог, значит код работает.

Я не PHP кодер, поэтому насколько хорош данный код в плане оптимизации работы - ничего не могу сказать, но самое главное в данный момент для меня - оно работает!

P.S. Стоит отметить, что данный сервис имеет лимит на количество обращений в месяц по бесплатному тарифу, для небольших сайтов данный код вполне пойдёт, для крупных же порталов можно использовать уже альтернативные сервисы определения страны пользователя, например SxGEO.

Решил выложить вариант с SxGEO, здесь нужно учитывать расположение файлов sxgeo.* (если у вас нет этого модуля под ДЛЕ, то используйте вариант выше!):

<?php
if( !defined('DATALIFEENGINE') ) {
    header( "HTTP/1.1 403 Forbidden" );
    header ( 'Location: ../../' );
    die( "Hacking attempt!" );
}include_once ( ENGINE_DIR . '/classes/sxgeo.php' );$SxGeo = new SxGeo( ENGINE_DIR . '/data/SxGeo.dat' );$ip_user = $_SERVER['REMOTE_ADDR'];$country = $SxGeo->getCountry($ip_user);if($country == "UA" || $country == "KZ") { // Проверяем страну посетителя
    //if(in_array($country, [LT,US,BR,GB,FR,DE,FI,BY,NL,MD,CA,CA,CZ,EE,IN,IE,IT,LV,PL,ZA,UA]) { // Или страны массивом@header("HTTP/1.1 503 Service Temporarily Unavailable");
        @header("Status: 503 Service Temporarily Unavailable");echo <<<HTML
Извините, но для Вашей страны заблокирован доступ к нашему сайту!
HTML;die();}
?>


Пример HTML заглушки для сайта:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link rel='shortcut icon' href='/favicon.ico'>
<title>Доступ к ресурсу заблокирован!</title>
<style>
body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 15px; line-height: 1.4em; color: #333; background:#fff;
}
img{ border:none;
}
a { color:#59a2d5;
}
#wrapper { width:760px; margin:auto;
}
#header { width:786px; vertical-align:middle; text-align:center;
}
#header h1{ font: bold 40px/90px Arial, sans-serif; text-shadow: #bb0059 1px 1px 2px; color:#dd137b;
}
#main{ font-size:24px; line-height:1.8em; padding:40px 50px; color:#dd137b; text-align:center; font-weight:bold;
}
#footer{ min-height:250px; position: absolute; right: 10px; text-shadow: #bb0059 1px 1px 2px; color: #dd137b; font-size:12px;
}
#attention{ text-align:center; vertical-align:baseline;
}
</style>
</head>
<body>
<div id="wrapper"> <div id="attention"><img src="/logo.gif" width="90" height="120" /></div> <div id="header"> <h1>Доступ к ресурсу заблокирован.</h1> </div> <div id="attention"><img src="/stop.jpg" width="225" height="225" alt="Внимание!" /></div> <div id="main"> <p>Уважаемый абонент,<br /> Вы хотите перейти по адресу, который внесён в один из реестров запрещённых сайтов <a href="http://rkn.gov.ru/" target="_blank">Роскомнадзора</a> или доступ к нему <span id="more">заблокирован</span> судебным решением.</p> </div> <div id="footer"><b>Реестры:</b><ul> <li><a href="https://blocklist.rkn.gov.ru/" target="_blank">Универсальный сервис поиска запрещенных сайтов</a></li> <li><a href="http://www.minjust.ru/nko/fedspisok?theme=minjust" target="_blank">Федеральный список экстремистских материалов</a></li> <li><a href="http://eais.rkn.gov.ru/" target="_blank">Реестр ЕАИС</a></li> <li><a href="http://nap.rkn.gov.ru/" target="_blank">Реестр НАП</a></li> <li><a href="http://398-fz.rkn.gov.ru/" target="_blank">Реестр 398-ФЗ</a></li> <li><a href="http://97-fz.rkn.gov.ru/" target="_blank">Реестр 97-ФЗ (организаторы распространения информации)</a></li> </ul></div>
</div>
</body>
</html>

Источник https://byroot.ru/160-poseschenija-sajta-s-neponjatnyh-referov-i-nesuschestvujuschih-domenov.html
Читайте также

Отметьте картинки:*
new.thin.kiev.ua
Авторизация