Nic
Роскомнадзор забанил домен. Если просто редиректить на новый, то через 3 месяца зеркало забанят вновь. Мысль: редиректить (чтоб передать вес новому домену) только поисковых ботов.
Найти простой скрипт мне не удалось, сам удивился. (
1,
2,
3) Языков не знаю, накидал "методом тыка" файл.
Код:
<?php
// прописываем чего хотим, если обращается проверенный поисковик
function spiders() {
header("HTTP/1.1 301 Moved Permanently");
header("Location:
https://domain.new". $_SERVER["REQUEST_URI"]);
exit();
}
// прописываем чего хотим, если - не поисковик
function no() {
header("HTTP/1.1 403 Forbidden");
echo "Account suspended for non-payment.";
exit();
}
// запоминаем юзерагент
$ua = $_SERVER["HTTP_USER_AGENT"];
// если юзерагент есть и соответствует боту поисковика, то
if (isset($ua) && preg_match('/googlebot|-google|yandex|Mozilla|bingbot/si',$ua)) {
// опеределяем айпи
$ip = $_SERVER['REMOTE_ADDR'];
$ipfile = file('ip.txt', FILE_IGNORE_NEW_LINES);
$banfile = file('ban.txt', FILE_IGNORE_NEW_LINES);
// если мы уже проверяли и знаем этот айпи, как поисковика, то выполняем задачу
if (in_array($ip, $ipfile)) {
spiders();
}
// если знаем этот айпи, как самозванца, то выполняем заглушку
elseif (in_array($ip, $banfile)) {
no();
}
// иначе проверим хост этого кадра
https://support.google.com/webmasters/answer/80553?hl=ru
else {
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
// если хост опознаем, как поисковика, то запишем ("для прикола" (С)) его и, что важнее, запишем его ip, чтоб не проверять в следующий раз + выполним задачу
if (preg_match('/(googlebot\.com|google\.com|yandex\.(ru|com|net|)|msn\.com|mail\.ru|paranoik\.org)$/si',$hostname)) {
file_put_contents('hostname.txt', $hostname . PHP_EOL, FILE_APPEND);
file_put_contents('ip.txt', $ip . PHP_EOL, FILE_APPEND);
spiders();
}
// если кадр лишь маскируется под поисковик - запишем его айпи
else {
file_put_contents('ban.txt', $ip . PHP_EOL, FILE_APPEND);
no();
}
}
}
else no();
?>
"|Mozilla" и "|paranoik\.org" тут для того, чтоб протестировать на себе, в конечном файле - удалить.
Даже не поленился комментов наделать, чтоб доступно всем было
Тут важна проверка ботов по host, ибо юзерагент подделают, а списки айпишников поисковиков актуальных не бывает.
Топик для таких же, кто не нагуглит решения, для какой бы цели оно не было +
Покритикуйте? Интересует не в плане красоты/оптимальности (что не исключается, конечно), а если чего как не учел.. Например, находил, что gethostbyaddr() будет тормозить, если регулярно задействовать, потому прописал, чтоб проверенные айпишники в файл записывалиьсь...
banderas
xjam писал:
Скрипт, который определяет бота по айпи и делает обратный реверс для проверки ип тоже, более-менее надежно, свой, дарю.
функция checkBot вернет ОК если это не бот, имя бота если это бот, ну и FAILED если кто-то просто подменил юзер-агент на гуглбота,
там не все боты а самые основные так что добавишь свои, шли обратно буду рад дополнить
Круто!
Из недостающих ботов я так понимаю остаються:
Googlebot-Image
Googlebot-Video
yahoobot
microsoftbot
Slurp - (Slurp Bot)
DuckDuckBot
ia_archiver
И с учетом моих 0,00015 знаний в пхп, что надо добавить чтобы если не бот то редиректило простого юзера на указанный урл?
xjam
checkKillBadBot функция для проверки бота на подделку, если нужно еще по именам пропускать ботов, как утку, то делаем так
function gobot()
{
//тут твой редирект для бота
header("HTTP/1.1 301 Moved Permanently");
header("Location:
https://domain.new" . $_SERVER["REQUEST_URI"]);
exit();
}
//проверяем основныйх ботов
$botStatus = checkKillBadBot();
if (!in_array($botStatus, ['FAILED', 'OK'])) {
gobot();
}
//проеряем воторстепенных уже без верификации по-айпи, если нужно, новый юзер-агент добляешь просто разделитеелем | (без пробелов и черточек)
if (preg_match('/DuckDuckBot|Slurp|msnbot/i', $_SERVER['HTTP_USER_AGENT'])) {
gobot();
}
.. тут дальше продолжение сайта если юзер или ненужный бот.
Bongo
xjam: нечто подобное xurl делал, а потом написал в личке что закончил с адалтом, прибил сервак со всеми доменами и больше на связь не выходил... а там интересные доменчики были под ркном, на них только-только гугл начал наливать...
лично я считаю так- ну забанит и забанит, не велика беда, кому надо тот под впном зайдет, тем более народ ща грамотный, ну и никто же не запрещает в описалово или тайтл воткнуть юзай впн чтоб посмотреть отменную нуху