20 Aralık 2013 Cuma

Google Botlarının Aktivitelerini Takip Etmek (PHP)



İyi botları yani arama motoru botlarını ve kötü botları denetlemeni, izlerini sürmenin ve her uğradıklarında bizi bilgilendirecek şekilde PHP kodlarından yardım almanın yollarını göstermeye çalışacağız bu yazıda. Arama motoru botları sitelerinizi dolaşarak, bilgileri edinen ve arama motorlarının veri bankasına sitenizi indeksleyen, bildiren botlardır(yazılımlardır). İçeriklerinizi hazırladıktan sonra belli bir saatte kontrol için uğrarlar ve giderler.

Arama motorlarının ve botlarının nasıl davranacağı, nasıl karar vereceği artık web dizaynında büyük oranda göz önüne alan gelişmeler haline geldi. İnsanlar saatlerce ve günlerce çalışıp Google indeksleme botunun sitelerini ziyaret edeceği anı bekliyorlar. Peki Google bot’ları sitenizde mi? Ne zaman girmişler ? Hangi sayfayı indexlemişler? Bunlardan haberdar edilmek ister miydiniz? Mailinize gelen mesajla beraber ne zaman indekslenmiş, hangi site indekslenmiş öğrenebilirsiniz. İlk vereceğimiz örnek sadece google botlarını gözlemlemek için.

Şimdi ilk uygulamamızda bir .txt dosyası hazırlayacağız ve tüm bilgilendirmeleri oradan alacağız. Index.Php’ye ekleyeceğiz bu kodu ve nereye eklediğimizin bir önemi yok. Daha sonra bu kodu yerleştirdiğiniz dosyanın olduğu dizine Botlar.txt diye içi boş bir dosya oluşturun. Bu dosyanın chmod ile erişimi 766 yapın.

Tüm işlemleri bitirdikten sonra online olarak botları takip etmek istiyorsanız ve SSH erişiminiz varsa botlar.txt’nin olduğu klasöre gidip tail -f bilgi.txt komutunu uygulayın. Eğer böyle bir imkanınız yoksa FTP’den yahut Web server üzerinden Botlar.txt‘ye ulaşabilirsiniz.

Kodumuz bu:

if (eregi("Google", $_SERVER[HTTP_USER_AGENT])) {
$tarih = date("d/m/Y G:i:s");
$dosya = fopen ("bilgisayar.txt" , 'a') or die ("Dosya açılamadı!");
fputs ( $dosya , "$tarih - $_SERVER[REMOTE_ADDR] - $_SERVER[HTTP_USER_AGENT] - $_SERVER[REQUEST_URI]\n" ) ;
fclose ($dosya);
}

.Txt dosyasının içinde şu şekilde, şunlara benzer şekilde iletiler göreceksiniz her bot sitenize uğradığında:

12/10/2013 5:34:31: 66.249.72.193 – Mozilla/5.0 (compatible; Googlebot/2.1; +Webmaster Help Center) – /içerik1
12/10/2013 5:34:37: 66.249.72.193 – Mozilla/5.0 (compatible; Googlebot/2.1; +Webmaster Help Center) – /içerik2
12/10/2013 5:34:39: 66.249.72.193 – Mozilla/5.0 (compatible; Googlebot/2.1; +Webmaster Help Center) – /içerik3

Buna benzer bilgilendirmelerle, botların ziyaretleri hakkında bilgi alabilirsiniz. Tarih zaman olarak bilgilendirirken, botların yapısal bilgisi olarak da bilgilendirme yapan bir kod. Txt dosyası ve yarattığı ağırlık dışında herşey harika.

Bu botlar.txt’yi arada sırada silin veya yenileyin ki büyük hız düşüşleri yaratmasın

User Agent olarak belirleyen kod

Bir botu user agent ile bulmak için birçok nedeniniz olabilir; bunu artık sizin hayalgücünüze bırakıyoruz. Bunu yapabilmeniz için PHP kod kullanmanız gerekiyor, çok zor değil, kodun bileşenlerini parça parça açıklayacağız. HTTP_USER_AGENT alanındaki Googlebot dizgesinde görülebilir hale geliyor bu kod ile sitenizi ziyaret eden botlar.

>>>dökümanınızdaki <body> kısmına bu kodu yapıştırın

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), “googlebot”))
{

// what to do(ne yapmak istiyorsanız onu buraya yazın)

}

User agent imzaları ($_SERVER['HTTP_USER_AGENT']) $Bot’larla ilgili bilgilendirici diziler içeriyorsa bu büyük ihtimalle botların izini sürmeye başlamışız demektir.

HTML hale getirmek için de

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), “googlebot”))

{?>

<h1>HTMLyi buraya yerleştirin</h1>

<p>Burayı daha önce nasıl dolduruyorsanız aynı şekilde doldurun</p>

<?php

}



Bu kodu parça parça açalım ve tüm parçaların ne işe yaradığını gösterelim:

if(condition){} – matematikteki fonksiyonlardaki gibi x ‘doğru’ ise y’yi yap şeklinde komudu şekillendiriyor.

Strtolover: php’de , kendisine geçirilen string’in karakterlerini küçülten bir fonksiyondur

$_SERVER başlıklar, içerikler ve kodların yerlerine dair bir bilgilendirme dizgisidir. Bu dizgilerdeki girdiler web sunucusu tarafından oluşturulur.

Strstr: c de string içerisinde geçen bir sub stringi bulmaya yarayan foksiyondur.

// slashlar ne yapacağınızı belirlediğiniz dizgeleri yazdığınız bölümlerdir. Örneğin // googlebot olarak gözüküyor, ama doğru mu ? gerçek bot mi yani?

Mail ile bilgilendiren kod

Bu da başka, daha gelişmiş bir kod, siteniz botlar tarafından ziyaret edildiğinde ve kayıt altına alındığında gelen kutunuza bir bilgilendirme maili atıyor. Zaman olarak ve gün olarak sizi bilgilendirdiği için, tam bilgiye ulaşabiliyorsunuz. Eğer bot birkaç defa, ya da ne kadar sıklıkla ziyaret ediyorsa, txt dosyasındaki verilerin üzerine yazıyor ve botların en son ziyaret bilgilerini, bu yüzden günlük kontrol etmekte fayda görüyoruz.

Bu versiyonda gün ve ayla ilgili size bilgi göndermiyor. Mailin geliş tarihinden bunları çıkartabilirsiniz.

<?php

if ( strpos( $_SERVER['HTTP_USER_AGENT'], ‘Googlebot’ ) !== false )

{

// paste your email address here(e-mailinizi yapıştırın)

$my_email = ‘your_email_address@email.com(buraya e mail adresiniz gelecek)’;

// notify via email(email ile bildir)

mail($my_email,’[Notification]Googlebot Visit’, ‘Googlebot has just visited your website WEBSITE_NAME: ‘.$_SERVER['REQUEST_URI']);

}

?>

Tarih ve zaman ileten kod:

Bu sonuncusu daha, daha da gelişmiş bu tarih zaman olarak bilgilendirme de yapıyor. you@yourmail.com gördüğünüz yere kendi mailinizi yazın

<?
if(eregi("googlebot",$HTTP_USER_AGENT))
{
if ($QUERY_STRING != "")
{$url = "http://".$SERVER_NAME.$PHP_SELF.'?'.$QUERY_STRING;}
else
{$url = "http://".$SERVER_NAME.$PHP_SELF;}
$today = date("F j, Y, g:i a");
mail("you@yourmail.com", "Googlebot detected on http://$SERVER_NAME", "$today - Google crawled $url");
}

Detaylı bot araması ve bilgilendirmesi yapan kod

Bu kodda botları sırasıyla işaretleyebileceğiniz bir kod. Kodun içinde ’’ /*You can add more bot here*/’’ kısmı göreceksiniz aynı şekilde buraya daha çok bot ismi ve çeşidi ekleyebilirsiniz.

<?php
function botDetect()
{
$bots_list=array(
“Google”=>”Googlebot”,
“Yahoo”=>”Slurp”,
“Bing”=>”bingbot”
/*You can add more bot here*/
);
$regexp=’/’. implode(“|”, $bots_list).’/';
$ua=$_SERVER['HTTP_USER_AGENT'];
if(preg_match($regexp, $ua,$matches))
{
$bot= array_search($matches[0], $bots_list);
return $bot;
}
else
{
return false;
}
}
?>

Bot listesi de verelim: “Teoma”, “alexa”, “froogle”, “Gigabot”, “inktomi”,
“looksmart”, “URL_Spider_SQL”, “Firefly”, “NationalDirectory”,
“Ask Jeeves”, “TECNOSEEK”, “InfoSeek”, “WebFindBot”, “girafabot”,
“crawler”, “www.galaxy.com”, “Googlebot”, “Scooter”, “Slurp”,
“msnbot”, “appie”, “FAST”, “WebBug”, “Spade”, “ZyBorg”, “rabaz”,
“Baiduspider”, “Feedfetcher-Google”, “TechnoratiSnoop”, “Rankivabot”,
“Mediapartners-Google”, “Sogou web spider”, “WebAlta Crawler”

0 yorum:

Yorum Gönder