Bot nedir? Ne işe yarar ve Nasıl yazılır?Sizlerinde merak ettiği konulardan birisidir muhakkak.Daha önce web siteleri için bot yazan kişileri ya da Google botlarını duymuşsunuzdur.Web dünyasında botlar çeşitli işlemlere yararlar fakat bilmeniz gereken ilk özelliği şudur:Botlar istediğiniz web sitesinin içinde ki çeşitli taglardan bilgi çekmenize yarar.Mesela Google botları sizin sitenize gelirler ve anahtar kelimelerinizi meta name=”keywords” content=””-“title-title” etiketleri arasından ,sitenizin başlığını ya da içeriğini alıp giderler ve başkaları sizi aradığında kaydettiklerini göstermek için bunları indexlerler(kaydederler).
Şimdi bizde Php ile basit bir bot yazmaya başlayalım ve bir internet sitesinde; herhangi bir tag içinde ki veriyi alalım.Şimdilik yapacağımız sadece bu.

Ben webteders.com adresinde ,benim anlattığım bir görsel eğitim videosunun kaç defa izlendiğini merak ettiğim için bu bilgiyi çekeceğim.Aslında siteye gidip kaç defa izlendiğine bakabilirim ama bu bilgilere sayfaya gidip bakmak beni yoruyor.Bu bilgileri çekip kendi sayfamda yayınlayabilirim.Ama dediğim gibi sadece bilgiyi çekeceğiz.Şimdi adım adım gidelim:
1-Öncelikle bazı sunucular dosyaları dışarıdan almaya izin vermezler.Onun için bunu bir test edelim.Dersimi anlattığım adresimi alıyorum ve başlıyorum php bot yazmaya…Haydi Bismillah…

Evet site geldi.Problem yok gibi.Sitenin bütün kodlarını ve içeriğini aldığımız için sayfanın tamamı gelmeli.
Eğer geldide bozuk geldiyse, sitede head tagları arasına aşağıda ki kodu da eklemenizi tavsiye ederim.

2-Şimdi bu adrese gidiyorum ve sayfaya sağ tıklayıp Kaynağı Görüntüle’den HTML kodları içine dalıyorum.Ne mi arıyorum?
Site de normalde :” 45.588 defa izlendi” geçen cümlenin yerini arıyorum.CTRL+F ile bu içeriği anında buluyorum.

Evet bak yerini buldum bile.Şimdi 3.aşamaya geçmeden önce bir noktaya da değinmek istiyorum.Ben php’de bot yazmak için explode() metodunu sıkça kullanıyorum.Buraya kadar geldiğinize göre bu metodun ne işe yaradığını anlatmama gerek yok galiba .Ama ben bunun ne işe yaradığını bilmiyorum diyorsanız BU MAKALEME bakmalısınız.

Şimdi ikinci dikkat edilmesi gereken nokta ise aradığımız kelimeyi içine alan html tagların sayfada bir sürü var ->mesela :
div class=”h3bottom”

onun için biraz daha fazla iş çıktı.Sayfada sadece bir yerde bulunan bir tag ‘dan itibaren kesmem lazım.Yani aşağıda ki gibi:

Şimdi bu uzun taglardan sayfayı ikiye böldük ve ikinci kısmını aldık.Dikkat edin php burada “” işaretlerini karıştırır.Onun için kodların içinde siteden aldığım “” işaretlerinin yerine ” tek tırnaklar kullandım.Ya da siz çift tırnaktan önce / işareti kullanabilirsiniz.
Şimdi son kodumuza gelelim:

Ne yaptık şimdi derseniz:İlk önce bütün içeriği ikiye böldük ve ikinci kısmı aldık.Şimdi ise ikinci kısmı ikiye böldük ve birinci kısmını aldık ve hedefe ulaştık.
Sonuç olarak kodların hepsini toparlarsak:

Evet 45.588 defa izlendi kelimesine ulaştık.Kodlar bu kadar …
Fakat burada dikkat edilmesi gereken bir nokta daha var.file_get_contents fonksiyonu sabit değerler arasından veri alabilir.Değişken değerler içinden veri alabilmek için preg_match_all fonksiyonunu kullanmanız gerekir.Bu fonksiyonun kullanımını ise daha sonraki derslerimizde açıklayacağım.
Botların belli seviyelerde zekaları olur. Daha önceden tanımlanmış senaryolar üstüne çalışırlar. Bot yerine aslında Parser denmesi daha doğru olabilir.

Evet arkadaşlar Php bot yazmak için bir sürü yol vardır.Siz istediğiniz bir yöntemi kullanabilirsiniz.Ama geçenlerde internet üzerinde araştırma yaparken güzel bir makale okudum.Aslında yukarıda yaptığımız işlemler hep angarya kalmış diyebilirim.Ama işin mantığını daha iyi kavramak için muhakkak gerekliydiler.Anlattığım için pişman değilim ama
http://www.phpr.org/php-bot-yapimi/ adresinde okuduğum makale çok beğenimi aldı.Onun için @preg_match_all ve hazır bir fonksiyon kullanarak nasıl yapılır buna bakalım.Şimdilik yukarıda anlattıklarımı unutun.Şimdi ise bir içerikte istediğimiz aralığı almak için yine curl gibi hazır bir fonksiyon kullanacağız. Bu fonksiyonu kopyala-yapıştır yaparak sizde kullanabilirsiniz.

Bu ara fonksiyonuda basit bir şekilde aralık içerisindeki değeri bize verir. Kullanımı için 3 parametre vardır. İlk parametre aralığın başı, ikinci parametre aralığın sonu, üçüncü parametre ise araştırılacak içerik.

Bu örnekte sitemizin kaynak kodlarına ulaşıp arasını yani sitemizin başlığını almış olduk ve ekrana yazdırdık. Değerin yüklendiği değişkene [0] dememizin sebebi ilk yakalanan aralığı almamız. Eğer benzer aralıklardan daha fazla var ise onları da dizinin diğer elemanları olarak ekleyecektir. Örneğin birden fazla @title aralığı olsaydı diğer sonuçlarda [1], [2] şeklinde diğer dizilere sıralanacaktı.

Yazar Hakkında

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Close