MaMo Net



Philipp Offline
Moderator
Registered since: Dec 11, 2004
Posts: 412


Subject: Suchmaschinen-Spider
Hallo

Wie kann mann über ein Script Suchmaschinen-Spider erkennen (PHP)?

Viele Grüße
Philipp
Philipp
Guest ich seh dich Cool
↑  ↓

MaMo Offline
Administrator
Registered since: Apr 06, 2004
Posts: 2,486


Subject: 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.

DownloadSource code (PHP):
  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. ?>

Additional note by the author:
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! Support-E-Mails landen im Papierkorb...
↑  ↓

Philipp Offline
Moderator
Registered since: Dec 11, 2004
Posts: 412


Subject: Danke!!!!!
Danke!

Ich werde das gut gebrauchen können!
Philipp
Guest ich seh dich Cool
↑  ↓

MaMo Offline
Administrator
Registered since: Apr 06, 2004
Posts: 2,486


Subject: RE: Suchmaschinen-Spider
Hi.

Hier noch eine einfachere Version, mit dem man zum Beispiel bekannte Emailsammler aussperren kann:

DownloadSource code (PHP):
  1. <?php
  2.  
  3. // Function zum erkennen der Bots
  4. function BotDetection () {
  5.     // Array mit Suchmaschinen-Daten, kann mit der obigen Liste natürlich beliebig erweitert werden
  6.     $bots = array (
  7. 'CherryPicker',
  8. 'EmailCollector',
  9. 'EmailSiphon',
  10. 'WebBandit',
  11. 'EmailWolf',
  12. 'ExtractorPro'
  13.     );
  14.  
  15.     // prüfe jede SuMa
  16.     foreach ($bots as $spider) {
  17.         // Prüfe ob der HTTP_USER_AGENT vorhanden ist
  18.         if (stristr($_SERVER['HTTP_USER_AGENT'], $spider) !== FALSE) {
  19.             // Wenn ein Spider identifiziert wurde, gib TRUE zurück
  20.             return TRUE;
  21.         }
  22.     }
  23.     // wenn kein Spider identifiziert werden konnte melden FALSE zurück
  24.     return FALSE;
  25. }
  26.  
  27. if (BotDetection() == FALSE) {
  28.     die('Nicht erlaubt!');
  29. }
  30. else {
  31.     // Normal weiter mit der Seite...
  32. }
  33.  
  34. ?>

Mit freundlichen Grüßen MaMo
Matthias M.
=> Support nur per Forum - dann haben alle etwas davon! Support-E-Mails landen im Papierkorb...
↑  ↓

Add Reply Pages (1): 1


All times are GMT +02:00. Current time: 4:16 pm.