Komplettes Thema anzeigen 14.12.2004, 17:08
MaMo Abwesend
Administrator
Dabei seit: 06.04.2004
Wohnort: -


Betreff: RE: Suchmaschinen-Spider
Hi.

Nun, das ist garnicht so schwer. Hier im Board ist das in etwa so geregelt: Ich habe ein Array mit den User-Agents von Suchmaschinen und deren Namen. Dann rufe ich einfach eine Funktion auf und schon checkt er mir die Daten.

DownloadPHP-Quelltext:
  1. <?php
  2. /*
  3.         Code-Schnipsel zur Erkennung von Suchmaschinen-Spidern
  4.         Copyright (C) 2004/05  Matthias Mohr, MaMo Net (http://www.mamo-net.de)
  5.         Version: 1.0.0 (December 14, 2004)
  6.  
  7.         This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
  8.         This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
  9.         You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  10. */
  11.  
  12. // Um das Script mit PHP < 4.1.0 kompatibel zu machen
  13. if (!isset($_SERVER) || !is_array($_SERVER)) {
  14.         $_SERVER = &$HTTP_SERVER_VARS;
  15. }
  16.  
  17. // Function zum erkennen der SuMa
  18. function BotDetection () {
  19.         // Array mit Suchmaschinen-Daten
  20.         // Pro SuMa ein Array im Array $bots
  21.         // user_agent enthält den HTTP_USER_AGENT der SuMa
  22.         // name enthält den öffentlichen Namen der SuMa
  23.         $bots = array (
  24.           array (
  25.             'user_agent' => 'Googlebot',
  26.             'name' => 'Google',
  27.           ),
  28.           array (
  29.             'user_agent' => 'Mediapartners-Google',
  30.             'name' => 'Google',
  31.           ),
  32.           array (
  33.             'user_agent' => 'msnbot',
  34.             'name' => 'MSN (Microsoft Network)',
  35.           ),
  36.           array (
  37.             'user_agent' => 'Mozilla/5.0 (compatible; Yahoo! Slurp;',
  38.             'name' => 'Yahoo',
  39.           )
  40.         );
  41.  
  42.         // prüfe jede SuMa
  43.         foreach ($bots as $spider) {
  44.                 // Prüfe ob der HTTP_USER_AGENT vorhanden ist
  45.                 if (stristr($_SERVER['HTTP_USER_AGENT'], $spider['user_agent']) !== FALSE) {
  46.                         // Wenn ein Spider identifiziert wurde, gib den Namen zurück
  47.                         return $spider['name'];
  48.                 }
  49.         }
  50.         // wenn kein Spider identifiziert werden konnte melden FALSE zurück
  51.         return false;
  52. }
  53.  
  54. // Rufe die Funktion auf
  55. $bot = BotDetection();
  56.  
  57.  
  58. if ($bot) {
  59.         // Wenn ein gültiger Bot gegeben ist, mache etwas
  60.         echo "Hallo Suchmaschine, $bot";
  61. }
  62. else {
  63.         // Wenn kein gültiger Bot gegeben ist, mache etwas anderes
  64.         echo "Hallo menschlicher Gast";
  65. }
  66.  
  67. ?>

Nachträgliche Anmerkung des Autors:
Wer das Ganze etwas beschleunigen möchte, kann anstatt stristr ab PHP Version 5 auch die Funktion stripos benutzen!

Mit freundlichen Grüßen MaMo
Matthias M.
=> Support nur per Forum - dann haben alle etwas davon!