Генератор устойчивых к взлому паролей   •   Online-инструменты
657 просм
1 комм
Поделиться:

Как определить, что посетитель вашего сайта поисковый робот, а не человек на PHP?

Почти каждое устройство в сети Интернет при посещении того или иного сайта посылает так называемых «User Agent», некую информацию в виде названия операционной системы, языка, IP-адреса и прочих параметров.

Некоторые из этих данных динамичны (меняются с течением времени), а некоторые – статичны, то есть не изменяются. По заголовку, посылаемому браузером посетителя к вашему веб-сайту, мы можем определить, является ли он человеком или же поисковым роботом.

Для такого определения мы воспользуемся PHP и готовой для него функцией определения популярных поисковых ботов.

Сама функция выглядит так:

$botname = "";

function isBot() {
	
	$bots = array(
		"rambler", "aport", "yahoo", "msnbot", "turtle", "mail.ru", "omsktele", "yetibot",
		"picsearch", "sape.bot", "sape_context", "gigabot", "snapbot", "alexa.com", "megadownload.net", 
		"askpeter.info", "igde.ru", "ask.com", "qwartabot", "yanga.co.uk", "scoutjet", "similarpages",
		"oozbot", "shrinktheweb.com", "aboutusbot", "followsite.com", "dataparksearch", "liveinternet.ru",
		"xml-sitemaps.com", "agama", "metadatalabs.com", "h1.hrn.ru", "seo-rus.com", "yaDirectBot",
		"yandeG", "Copyscape.com", "domaintools.com", "Nigma.ru", "dotnetdotcom", "bing", "Accoona",
		"ia_archiver", "Ask Jeeves", "OmniExplorer_Bot", "W3C_Validator", "WebAlta", "Yahoo", "Ezooms",
		"Tourlentabot", "MJ12bot", "AhrefsBot", "SearchBot", "SiteStatus", "Baiduspider", "Statsbot",
		"SISTRIX", "AcoonBot", "findlinks", "proximic", "OpenindexSpider", "statdom.ru", "Exabot", "Spider",
		"SeznamBot", "oBot", "C-T bot", "Updownerbot", "Snoopy", "heritrix", "Yeti", "DomainVader",
		"DCPbot", "PaperLiBot", "a.pr-cy.ru", "eSyndiCat Bot", "YandexBot", "YandexImages", "YandexMetrika",
		"YaDirectFetcher", "YandexMobileBot", "YandexMarket", "YandexImageResizer", "Yandex Market picture robot",
		"YandexAccessibilityBot", "YandexCatalog", "Googlebot", "AdsBot-Google", "Mail.RU_Bot", "bingbot",
		"msnbot-media", "Baiduspider-", "Yahoo! Slurp", "curl", "SemrushBot", "price.ru-image-robot",
		"ltx71.com", "Riddler", "SurdotlyBot", "ActivizmBot", "glindahl-cocrawler", "Twitterbot",
		"facebookexternalhit", "Virusdie crawler", "Cliqzbot", "statdom.ru/Bot", "openstat.ru/Bot",
		"linkdexbot", "Linkbot", "coccocbot-web", "SMTBot", "top100.rambler.ru crawler", "WebMoney MegaStock robot",
		"CommonCrawler Node", "archive.org_bot", "SEOkicks-Robot", "TorgMailRuBot", "Python-urllib/2.7",
		"Yandex.Commerce.Pinger", "BLEXBot", "linux-gnu", "Googlebot-Image", "AdsBot-Google-Mobile",
		"360Spider", "Trident-не бот", "YisouSpider", "spider", "PHP-Curl-Class", "slurp", "crawler",
		"pinger", "robot", "WGet tools", "FavIconizer", "FaceBook bot", "CFNetwork", "NG 1.x (Exalead)",
		"Phantom", "RoadHouse Crawling System", "SurveyBot", "Perl tool", "Sogou Spider", "StackRambler",
		"TITAN", "Feedfetcher-Google", "Netcraft", "Fish search", "RBSE Spider", "Sift", "W3C Validator",
		"Konqueror", "Yahoo Slurp", "Mail.RU Bot", "archive.org bot", "Apache-HttpClient/", "Flamingo_SearchEngine",
		"Googlebot-Nes", "Googlebot-Images", "Googlebot-Video", "Google-Mobile", "Google-Mobile AdSense",
		"Google-AdSense", "Google-AdsBot", "Teoma", "Lycos", "Aport",
	);
	
	foreach($bots as $bot) {
	
		if(stripos($_SERVER["HTTP_USER_AGENT"], $bot) !== false) {
		
			$botname = $bot; // Если это бот - его идентификатор

			return true;
			
		}
		
	}
	
	return false;

}

И вот пример ее использования:

if(isBot()) { // Условие, если это бот

	// Делаем действие
   
}

Функция содержит в себе идентификаторы всех популярных поисковых роботов. По желанию вы можете дополнить их своим списком или, например, ограничиться только определенными ботами.

1
комментарий
Инструкция обновлена.

Изменен код и расширена база ботов.
  • 0
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.
Подняться наверх