Undercover-MSN-Bot aufdecken

September 2009

Es ist wohl bekannt, dass der Bot der MSN-Suche bzw. von Bing manchmal verdeckt unterwegs ist, was verfälschte Statistiken zur Folge hat, wie beispielsweise in einem Artikel von Webmasterpro beschrieben, manchmal bringt er auch gleich noch einen Fake-Referrer mit.
Allerdings lässt sich dieser Undercover-Robot mittels PHP ganz einfach identifizieren, da er gezwungenermassen seine IP preisgibt. Denn der dazugehörige Host sagt alles.
In folgendem Beispiel gibt sich ein MSNBot als Internet Explorer 6 aus. Eine einfache Statistik-Software würde ihn als IE-User, welcher mit Bing die Seite gefunden hat, abstempeln.
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4325 ...
Referer:    http://www.bing.com/search?q=irgendwas
IP:         65.55.109.131
Host:       msnbot-65-55-109-131.search.msn.com
Der Host lässt sich mit der PHP-Funktion gethostbyaddr() ausfindig machen. Somit kann man den Bot erkennen, egal ob er offiziell ein Bot ist oder ob er undercover arbeitet.
<?php
$host 
gethostbyaddr($_SERVER['REMOTE_ADDR']);
if(
strpos($host'.msn.com')!==false){
  
# Es ist ein MSNBot
}
?>
Mit dieser Methode lassen sich auch gleich noch Fake-MSNBots erkennen, also MSNBots, die keine sind.

Wer aufgrund Performance-Komplikationen auf die Funktion gethostbyaddr() verzichten möchte, kann sich auch nur an der IP orientieren. Man checkt dazu, ob die sich die IP innerhalb eines bestimmten Bereichs befindet.
<?php
if(preg_match('#^(65\.5[2-5]|207.46)\.#'$_SERVER['REMOTE_ADDR'])){
  
# IP-Range: 65.52.0.0 - 65.55.255.255, 207.46.0.0 - 207.46.255.255
  # Es ist ein MSNBot
}
?>
Die IP-Ranges lassen sich beliebig erweitern.
 


Andere Einträge


Kommentare

#1
von Latex Freak am 22.07.2015
Man kann das sicherlich auch einfacher ohne php lösen, mit der .htaccess
Das sieht dann ungefähr so aus:

RewriteCond %{HTTP_REFERER} msn\.com [NC]
RewriteRule (.*) http://www.msn.com [R=403,L]

Man kann in der .htaccess auch mit IP-Ranges arbeiten. Dann muss man keine php-Rechenzeit für die Bots verwenden und kann sie direkt aussperren lassen :)