infoNauta

Função PHP para identificação de acessos por Crawlers e Bots

Publicado em: 11/07/2017
Atualizado em em: 08/09/2017

Por: Sergio Mari Jr.

Categoria: Diário de Bordo
Comentários: 0

Uma das demandas que mais cedo ou mais tarde aparece para quem desenvolve soluções para Interligência de Marketing Digital é a identificação de acessos feitos não por humanos, mas por bots, crawlers, indexadores e coisas do tipo.

Google Bot

A função abaixo foi criada a partir da controibuição de macherif e atualizada pela Cedilha Comunicação Digital. A lista de crawlers foi atualizada pela última vez em 08/09/2017 e precisa ser atualizada constantemente.

A função

function crawler_detect($USER_AGENT) {	if (!$USER_AGENT) {	return false;	} else {	//Array com os crawlers conhecidos	$crawlers = array(	'Abacho' => 'AbachoBOT',	'accoona' => 'Accoona',	'AcoiRobot' => 'AcoiRobot',	'AhrefsBot' => 'AhrefsBot',	'Altavista' => 'Scooter',	'AltaVista2' => 'Altavista',	'Apache' => 'Apache',	'Arachnys/Nutch' => 'arachnys',	'ASPSeek' => 'ASPSeek',	'Baidu' => 'Baiduspider',	'BDCbot' => 'BDCbot',	'Bing' => 'bingbot',	'Bing2' => 'BingPreview',	'CCBot' => 'CCBot',	'Clickagy' => 'Clickagy',	'Cliqzbot' => 'Cliqzbot',	'CrocCrawler' => 'CrocCrawler',	'datagnion' => 'datagnionbot',	'Dataprovider' => 'Dataprovider',	'BDCbot' => 'BDCbot',	'DigExt' => 'DigExt',	'DigExt2' => 'DTS Agent',	'DotBot' => 'DotBot',	'DuckDuck' => 'DuckDuckBot',	'Dumbot' => 'Dumbot',	'eStyle' => 'eStyle',	'Exabot' => 'Exabot',	'ExtLinksBot' => 'ExtLinksBot',	'Facebook' => 'facebook',	'FAST-WebCrawler' => 'FAST-WebCrawler',	'Findxbot' => 'Findxbot',	'Flamingo' => 'Flamingo_SearchEngine',	'GeonaBot' => 'GeonaBot',	'GetIntent' => 'GetIntent',	'Gigabot' => 'Gigabot',	'Go-http-client' => 'Go-http-client',	'Google' => 'Google',	'GrapeshotCrawler' => 'GrapeshotCrawler',	'GuzzleHttp' => 'GuzzleHttp',	'ia_archiver' => 'ia_archiver',	'ID-Search' => 'IDBot',	'ips' => 'ips-agent',	'Java' => 'Java/',	'LinkAnalyser' => 'LinkAnalyser',	'linkdex' => 'linkdexbot',	'LinkedIn' => 'LinkedInBot',	'linkfluence' => 'linkfluence',	'Livelap' => 'LivelapBot',	'ltx71' => 'ltx71',	'Lycos' => 'Lycos',	'Mechanize' => 'Mechanize',	'Mediatoolkitbot' => 'Mediatoolkitbot',	'MegaIndex.ru' => 'MegaIndex',	'MetaURI' => 'MetaURI',	'Microsoft' => 'Microsoft URL Control',	'Microsoft Office' => 'Microsoft Office',	'Mixrank' => 'MixrankBot',	'MJ12bot' => 'MJ12bot',	'MSN' => 'msnbot',	'MSRBOT' => 'MSRBOT',	'Netcraft' => 'NetcraftSurveyAgent',	'Nuzzel' => 'Nuzzel',	'omgili' => 'omgili',	'OpenLinkProfiler' => 'OpenLinkProfiler',	'OpenLinkProfiler2' => 'spbot',	'PaperLi' => 'PaperLiBot',	'Pinterest' => 'Pinterestbot',	'python-requests' => 'python-requests',	'proximic' => 'proximic',	'radian6' => 'radian6',	'Rambler' => 'Rambler',	'rogerbot' => 'rogerbot',	'RukiCrawler' => 'RukiCrawler',	'scalaj' => 'scalaj',	'Scrubby' => 'Scrubby',	'SafeDNS' => 'SafeDNSBot',	'Semrush' => 'SemrushBot',	'SiteExplorer' => 'SiteExplorer',	'SMTBot' => 'similartech',	'SocialRank' => 'SocialRankIOBot',	'Skype' => 'SkypeUriPreview',	'Sogou' => 'sogou',	'The Lemur' => 'crawler_12',	'ToutiaoSpider' => 'ToutiaoSpider',	'trendiction' => 'trendiction',	'tweetedtimes.com' => 'tweetedtimes',	'Twitter' => 'Twitterbot',	'ubermetrics' => 'ubermetrics',	'WhatsApp' => 'WhatsApp',	'WhatsApp2' => 'WhatsApp/',	'WordPress' => 'WordPress',	'wotbox' => 'wotbox',	'Yahoo' => 'Yahoo',	'YandexBot' => 'YandexBot',	'YisouSpider' => 'YisouSpider',	);	//Percorre array procurando correspondência	$correspondencia = 0;	foreach($crawlers as $crawler => $bot) {	if (stripos($USER_AGENT, $bot) !== false) {	$correspondencia++;	}	}	if ($correspondencia > 0) {	return true;	} else {	return false;	}//correspondencia	}//useragent
}//crawler_detect

Como usar

O argumento $USER_AGENT deve ser preenchido com a variável superglobal do PHP $_SERVER['HTTP_USER_AGENT']:

$agente = $_SERVER['HTTP_USER_AGENT'];
$bot = crawler_detect($agente); 

Caso a variável $bot receba o valor true significa que o acesso está sendo feito por um dos bots conhecidos pela lista da função. Caso receba o valor false significa que o acesso está sendo feito por um humano ou por algum bot desconhecido.

Utilidades

Há vários usos possíveis para essa solução. Destaco dois deles:

1) Evitar que o acesso de bots gerem estatísticas falsas, inflando, por exemplo, o número de views de um determinado conteúdo de modo a gerar dados distorcidos e decisões equivocadas.

2) Oferecer aos bots informações complementares sobre o conteúdo para melhorar ou facilitar a indexação. Se for esse o caso, cuidado para não cair em práticas de Black Seo.


Comentários

Seja o primeiro a comentar!

Faça seu comentário

Repita os caracteres no campo abaixo:



adobe artigo científico banco central bitmap cabernet sauvignon cedilha comunicação digital comportamento do consumidor concorrência cultura da internet custo demanda desejo diferenciação email marketing endomarketing estratégia facebook forças competitivas gestão estratégica google html illustrator imagens digitais indesign inovação instagram inteligência coletiva internet jornalismo linkedin livrista lucro macroambiente marca mark-up marketing marketing de conteúdo marketing digital merlot michael porter microambiente moeda comemorativa motivação mídia mídia digital mídias sociais necessidade numismática olimpiadas 2016 orkut photoshop php planejamento planejamento estratégico preço produto programação promoção propaganda propagação viral publicidade real redes sociais relações públicas relevância reputação rio 2016 seo twitter valor vinho walter longo youtube