Detecteer MSN, Google en Yahoo! crawler.
Auteur: Godlord - 21 april 2007 - 19:01 - Gekeurd door: Ibrahim - Hits: 6417 - Aantal punten: 1.50 (2 stemmen)
Ik heb een script gemaakt die met behulp van het IP nakijkt of de bezoeker een Google, MSN of Yahoo! crawler is. Zover is dit alleen getest op PHP 5 en weet ik niet echt of dit wel werkt op PHP 4. Dit script heb ik ook basis van één enkele IP per crawler gemaakt en getest met verschillende IP's. De IP addressen heb ik gezocht via de zoek machine waar de crawler vandaan komt. Als je zoekt naar My IP of Mijn IP zal deze bij resultaten zijn eigen IP retourneren. Valse crawlers worden hier niet zo snel mee gedecteerd tenzij ze de hostnaam hebben aangepast. Ik heb hier ook een voorbeeld bij gezet. Ik hoop dat dit script nuttig is voor sommige mensen.
Notitie: hierbij wordt geen IP range gebruikt, met enkel de IP van de bezoeker kan je detecteren of dit een van de 3 crawlers is.
Update (21 April 2007) :
Geconverteerd naar een functie naar verzoek van siliecom14. Zal false retourneren als het geen van de 3 crawlers is anders geeft ie "googlebot" terug als het google bot is, "yahoobot" bij yahoo! slurp en "msnbot" bij msnbot.
Nog een funtie toegevoegd die false of true retourneert waarbij je als een argument de crawler moet specifiëren.
Scripts met tab aligned (sommige gedeeltes waren met spaties).
Update (22 April 2007) :
Functie verbetert, $bot variables herplaats door een array. Met dank aan mesynthetix.
Update (23 April 2007) :
Returns van alle scripts waar het nodig was dankzij rambo.
|
Code: |
<?php
function isgooglebot($ip) {
$bot = 'googlebot.com';
if (gethostbyaddr($ip) == $ip) return false;
$new_name = explode(".", gethostbyaddr($ip));
$name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
return $name == $bot;
}
function isyahooslurp($ip) {
$bot = 'yahoo.com';
$bot2 = 'inktomisearch.com';
if (gethostbyaddr($ip) == $ip) return false;
$new_name = explode(".", gethostbyaddr($ip));
$name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
return ($name == $bot or $name == $bot2) ? true : false;
}
function ismsnbot($ip) {
$bot = 'search.live.com';
if (gethostbyaddr($ip) == $ip) return false;
$new_name = explode(".", gethostbyaddr($ip));
$name = $new_name[sizeof($new_name) - 3].'.'.$new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
return $name == $bot;
}
?>
<?php function isgooglebot($ip) { $bot = 'googlebot.com'; $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1]; return $name == $bot; } function isyahooslurp($ip) { $bot = 'yahoo.com'; $bot2 = 'inktomisearch.com'; $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1]; return ($name == $bot or $name == $bot2) ? true : false; } function ismsnbot($ip) { $bot = 'search.live.com'; $name = $new_name[sizeof($new_name) - 3].'.'.$new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1]; return $name == $bot; } ?>
In één functie naar verzoek van siliecom14:
<?php
function iscrawler($ip) {
$bot = 'googlebot.com';
$bot2 = 'yahoo.com';
$bot3 = 'inktomisearch.com';
$bot4 = 'live.com';
if (gethostbyaddr($ip) == $ip) return false;
$new_name = explode(".", gethostbyaddr($ip));
$name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
if ($name == $bot) {
return "googlebot";
} elseif ($name == $bot2 or $name == $bot3) {
return "yahoobot";
} elseif ($name == $bot4) {
return "msnbot";
} else {
return false;
}
}
?>
<?php function iscrawler($ip) { $bot = 'googlebot.com'; $bot2 = 'yahoo.com'; $bot3 = 'inktomisearch.com'; $bot4 = 'live.com'; $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1]; if ($name == $bot) { return "googlebot"; } elseif ($name == $bot2 or $name == $bot3) { return "yahoobot"; } elseif ($name == $bot4) { return "msnbot"; } else { return false; } } ?>
<?php
function iscrawler2($ip, $crawler) {
$bot = 'googlebot.com';
$bot2 = 'yahoo.com';
$bot3 = 'inktomisearch.com';
$bot4 = 'live.com';
if (gethostbyaddr($ip) == $ip) return false;
$new_name = explode(".", gethostbyaddr($ip));
$name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
if ($name == $bot and $crawler = "googlebot") {
return true;
} elseif (($name == $bot2 or $name == $bot3) and $crawler = "yahoobot") {
return true;
} elseif ($name == $bot4 and $crawler = "msnbot") {
return true;
} else {
return false;
}
}
?>
<?php function iscrawler2($ip, $crawler) { $bot = 'googlebot.com'; $bot2 = 'yahoo.com'; $bot3 = 'inktomisearch.com'; $bot4 = 'live.com'; $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1]; if ($name == $bot and $crawler = "googlebot") { return true; } elseif (($name == $bot2 or $name == $bot3) and $crawler = "yahoobot") { return true; } elseif ($name == $bot4 and $crawler = "msnbot") { return true; } else { return false; } } ?>
Functie met de bots in een array, door mesynthetix
<?php
function iscrawler($ip) {
$bots['googlebot.com'] = 'googlebot';
$bots['yahoo.com'] = 'Yahoo';
$bots['inktomisearch.com'] = 'Yahoo';
$bots['live.com'] = 'Live Search';
if (gethostbyaddr($ip) == $ip) return false;
$new_name = explode(".", gethostbyaddr($ip));
$name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
if (isset($bots[$name])) {
return $bots[$name];
} else {
return false;
}
}
<?php function iscrawler($ip) { $bots['googlebot.com'] = 'googlebot'; $bots['yahoo.com'] = 'Yahoo'; $bots['inktomisearch.com'] = 'Yahoo'; $bots['live.com'] = 'Live Search'; $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1]; if (isset($bots[$name])) { return $bots[$name]; } else { return false; } }
Download code (.txt)
|
|
|
Stemmen |
Niet ingelogd. |
|