login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Handige scripts > Detecteer MSN, Google en Yahoo! crawler.

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:
  1. <?php
  2. function isgooglebot($ip) {
  3. $bot = 'googlebot.com';
  4. if (gethostbyaddr($ip) == $ip) return false;
  5. $new_name = explode(".", gethostbyaddr($ip));
  6. $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
  7. return $name == $bot;
  8. }
  9.  
  10.  
  11. function isyahooslurp($ip) {
  12. $bot = 'yahoo.com';
  13. $bot2 = 'inktomisearch.com';
  14. if (gethostbyaddr($ip) == $ip) return false;
  15. $new_name = explode(".", gethostbyaddr($ip));
  16. $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
  17. return ($name == $bot or $name == $bot2) ? true : false;
  18. }
  19.  
  20.  
  21. function ismsnbot($ip) {
  22. $bot = 'search.live.com';
  23. if (gethostbyaddr($ip) == $ip) return false;
  24. $new_name = explode(".", gethostbyaddr($ip));
  25. $name = $new_name[sizeof($new_name) - 3].'.'.$new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
  26. return $name == $bot;
  27. }
  28. ?>


In één functie naar verzoek van siliecom14:
  1. <?php
  2. function iscrawler($ip) {
  3. $bot = 'googlebot.com';
  4. $bot2 = 'yahoo.com';
  5. $bot3 = 'inktomisearch.com';
  6. $bot4 = 'live.com';
  7.  
  8. if (gethostbyaddr($ip) == $ip) return false;
  9. $new_name = explode(".", gethostbyaddr($ip));
  10. $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
  11. if ($name == $bot) {
  12. return "googlebot";
  13. } elseif ($name == $bot2 or $name == $bot3) {
  14. return "yahoobot";
  15. } elseif ($name == $bot4) {
  16. return "msnbot";
  17. } else {
  18. return false;
  19. }
  20. }
  21. ?>


  1. <?php
  2. function iscrawler2($ip, $crawler) {
  3. $bot = 'googlebot.com';
  4. $bot2 = 'yahoo.com';
  5. $bot3 = 'inktomisearch.com';
  6. $bot4 = 'live.com';
  7.  
  8. if (gethostbyaddr($ip) == $ip) return false;
  9. $new_name = explode(".", gethostbyaddr($ip));
  10. $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
  11. if ($name == $bot and $crawler = "googlebot") {
  12. return true;
  13. } elseif (($name == $bot2 or $name == $bot3) and $crawler = "yahoobot") {
  14. return true;
  15. } elseif ($name == $bot4 and $crawler = "msnbot") {
  16. return true;
  17. } else {
  18. return false;
  19. }
  20. }
  21. ?>


Functie met de bots in een array, door mesynthetix
  1. <?php
  2. function iscrawler($ip) {
  3. $bots['googlebot.com'] = 'googlebot';
  4. $bots['yahoo.com'] = 'Yahoo';
  5. $bots['inktomisearch.com'] = 'Yahoo';
  6. $bots['live.com'] = 'Live Search';
  7.  
  8. if (gethostbyaddr($ip) == $ip) return false;
  9.  
  10. $new_name = explode(".", gethostbyaddr($ip));
  11. $name = $new_name[sizeof($new_name) - 2].'.'.$new_name[sizeof($new_name) - 1];
  12.  
  13. if (isset($bots[$name])) {
  14. return $bots[$name];
  15. } else {
  16. return false;
  17. }
  18. }
Download code! Download code (.txt)

 Bekijk een voorbeeld van dit script!
 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (15)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.055s