Ziyaretçinin Arama Motoru Robotu Olup Olmadığını Anlamak

PHP dilinde gelen ziyaretçinin arama motoru robotu mu (crawler) yoksa gerçek ziyaretçi (ya da arama motorlarına ait olmayan robot) olup olmadığını aşağıdaki fonksiyonu kullanarak öğrenebilirsiniz.

Fonksiyon $_SERVER['HTTP_USER_AGENT'] değerini kendi içerisinde tanımlı arama motorları ile karşılaştırmaktadır. Eğer user agent bir arama motorununki ile uyuşuyorsa fonksiyon geriye bu arama motorunun adını gönderir. Eğer hiçbir arama motoru ile uyuşmazsa boolean false gönderecektir. (is_boolean ile kontrol etmeyi unutmayınız!)

Unutulmamalıdır ki, bu fonksiyon tüm arama motorlarını bulamaz. Arama motorları her zaman user agent olarak kendi isimlerini göndermeyebilirler. Bu yüzden arama motorlarına başka, gerçek ziyaretçilere farklı içerik göstermek gibi bir çakallık yapmaya kalkarsanız yakalanabilirsiniz.

User agent isimleri değişebileceğinden bu fonksiyonu arada bir güncellemek gerekir. Belki daha başka çözümler de önerilebilir.

is_robot ```php /** * Sayfayı isteyenin robot mu insan mı olduğunu gönderir. * * @return boolean FALSE ya da string robot name / function is_robot() { $agent=$_SERVER['HTTP_USER_AGENT']; $agent=str_replace(" ","",$agent); $key = null; / format: "Bot Adı|UserAgent" (boşluksuz) */ $lines = array( "AboutUsBot|AboutUsBot/|", "AlestiFeedBot|AlestiFeedBot|", "Alexa|ia_archiver|", "AltaVista|Scooter-|", "AltaVista|Scooter/|", "AltaVista|Scooter_|", "AMZNKAssocBot|AMZNKAssocBot/|", "Ask.com/Teoma|AskJeeves/Teoma)|", "Ask Jeeves/Teoma|ask.com|", "AskJeeves|AskJeeves|", "Charlotte|Charlotte/|", "Xyleme|cosmos/0.|", "cURL|curl/|", "Die|die-kraehe.de|", "Diggit! Robot|Digger/|", "disco/Nutch|disco/Nutch|", "FastCrawler|FastCrawler|", "FDSE|(compatible;FDSErobot)|", "GetRight|GetRight|", "Googlebot|Googlebot/|", "Google|googlebot/|","Google Images|Googlebot-Image|", "Google AdSense|Mediapartners-Google|", "image.kapsi.net|image.kapsi.net/1.0|", "MSNBot|MSNBOT/0.1|", "MSN|msnbot|", "MSRBOT|MSRBOT|",); foreach($lines as $spider) { list($name,$key)=explode("|",$spider); if(strpos($agent,$key)===FALSE) { continue; } else { return $name; } } return false; }