В последнее время участились случаи появления нелегальных зеркал сайтов, делается это с целью понижения позиций в поисковой выдачи.
Практикуются два метода – полное копирование сайта и «прокси» (т.е. фейковый сайт по запросу получает контент с оригинального сайта, меняет в ссылках домен и выдает клиенту). Защититься от первого случая практически невозможно, от второго можно защитится, добавив проверку домена по следующему алгоритму:
1. C помощью JQuery на все страницы сайта вставляется элемент <img>
, который вызывает PHP-скрипт, передовая ему текущий домен из адресной строки браузера через GET-параметр.
2. Чтобы по URL /pixel.jpg
срабатывал PHP-скрипт, нужно добавить правило в htaccess:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^pixel.jpg$ protect.php [L,QSA]
3. В случаи, если полученный домен не совпадает с эталонным, администратору отправляется письмо с доменом и IP-адресом сервера, на котором, был выведен сайт.
Такой метод вывода сайта на другом домене используют некоторые сервисы, например, переводчики или «сохраненная копия» в Яндексе и Google, поэтому их домены добавлены в список исключений.
protect.php
<?php
/* Эталонный домен (без www) */
$domen = 'example.com';
/* Куда отправить письмо */
$email = 'admin@example.com';
/* Исключения */
$allow = array(
'yandexwebcache.net',
'webcache.googleusercontent.com',
'translate.googleusercontent.com'
);
/* Проверка */
if (!empty($_GET['v'])) {
$сheck = str_replace(array('www.', '/'), '', $_GET['v']);
if (!in_array($сheck, $allow) && $domen != $сheck) {
mail(
$email,
'Вывод ' . $domen . ' на другом домене',
'Домен: ' . $сheck . "\r\nIP сервера: " . @$_SERVER['REMOTE_ADDR']
);
}
}
/* Вывод изображения 1*1 px */
$im = imagecreate(1, 1);
$color = imagecolorallocate($im, 255, 255, 255);
header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
exit;