Главная страница / Блог / Разное / Посещения сайта с непонятных реферов и несуществующих доменов

Посещения сайта с непонятных реферов и несуществующих доменов

30 август 2020, Воскресенье
159
0
Посещения сайта с непонятных реферов и несуществующих доменов

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

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

Несколько доменов:
garnec.com
novo2.ru
guitarbank.ru
weektrade.ru
mebelart-group.ru

Сам код для блокировки стран взял с этого сайта, проверил по этому 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 кодер, поэтому насколько хорош данный код в плане оптимизации работы - ничего не могу сказать, но самое главное в данный момент для меня - оно работает!

PS стоит отметить, что данный сервис имеет лимит на количество обращений в месяц по бесплатному тарифу, для небольших сайтов данный код вполне пойдёт, для крупных же порталов можно использовать уже альтернативные сервисы определения страны пользователя, например 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") { // Проверяем страну посетителя@header("HTTP/1.1 503 Service Temporarily Unavailable");
		@header("Status: 503 Service Temporarily Unavailable");echo <<<HTML

Извините, но для Вашей страны заблокирован доступ к нашему сайту!

HTML;die();}

?>
Комментарии:
Прокомментировать
Модули для создания киносайта и не только на базе DataLife Engine, и многое другое...
Просто блог Евгения Попова, он же - byroot © 2020