Php bot yapımı konusunda ayrıntılı bir yazı okumaktasınız. Bu yazıdaki amac okuyucu yazıyı okuduğunda php bot scriptlerinin nasıl yazıldığını anlamak ve bu işte kullanılan php sınıflarını ve kutuphaneleri tanımaktır.

Php bot nedir ?
Php bot scriptleri programlandıkları amac uzerine başka kaynaklardan veri cekebilen bu veriler uzerinde işlemler yapıp istenilen hedeflere bu verileri yazabilen arac scriptleridir.

Php ’de bot scripti yazmak gayet basit, hızlı ve eğlencelidir. Bu yazımızda php bot yapımında nasıl yontemler izleyerek bot yazabiliriz hangi aracları kullanabiliriz. Bununla ilgili hangi kutuphaneler var bunları inceleyeceğiz. Bu yazıyı dikkatli bir şekilde okuduğunuzda php bot yapımı hakkında bir cok şeyi oğrenmiş olacaksınız.

Hedef Sitenin Analizi Nasıl Yapılır?
Php bot yapımına başlamadan once botumuzun hedef site iceriklerini nasıl cekmesini istiyoruz ona karar vermeliyiz. Php bot scriptimiz calışmaya başladıktan sonra hedef site iceriğini otomatik bir şekilde mi cekecek yoksa bir panelden ayarlanabilir bir şekilde sadece belirtilen sayfalardaki icerikler mi cekecek ona karar vermeliyiz.

Otomatik Bir Şekilde Butun İceriği Ceken Php Bot Yapımı
Eğer bot scriptimiz hedef sitedeki iceriği otomatik olarak hepsini cekmesini istiyorsak hedef sitedeki butun sayfaları otomatik dolaşmasını sağlamamız gerekmektedir. Bu sayfaları bir şekilde elde etmeliyiz. Bunun icin kullanılabilecek bazı yontemler şunlardır.

Hedef sitenin sitemapını kullanarak butun sayfaları bulmak.
( Sitemap ile butun sayfaları kolay bir şekilde elde edebiliriz ) Hedef sitenin url yapısını kullanarak butun sayfalara erişmek.
( Orneğin sitedeki bir yazının adresi şoyle olsun “www.site.com/123-yazı-adı.html” bu adreste dikkatimizi cekmesi gereken kısım kalın harflerle belirtilen ‘123 ’ kısmıdır. Bu numara muhtemelen yazımızın idsini verir yani bu id yi değiştirerek butun kayıtlı yazılara ulaşabiliriz. Botumuz sırasıyla butun idlere girecek şekilde ayarlanmalıdır. Bunun yanında id yi değiştirttiğimizde yanında yazan yazı isminin coğunlukla bir onemi kalmaz orada ne yazdığının bir onemi yoktur. Orneğin 1. idli yazının linki şu şekilde olsun “www.site.com/1-ilk-yazi.html” bu url ile “www.site.com/1-yazı-adı.html” bu url arasında hic bir fark yoktur. Botumuz sırasıyla idleri arttırarak sitedeki butun sayfaları dolaşabilir. ) Site ici menuleri kullanarak butun sayfalara erişmek.
( Botumuz ilk olarak site icerisindeki menulere bakarak linkleri toplayabilir bu topladığı linkler ile sitedeki yazılara ulaşabilir. Coğu zaman bu yontemi kullanmayız. Bu yontem hem zamanınızı alır hemde yavaş calışır. ) Belirtilen Sayfalardaki İcerikleri Ceken
Eğer php botumuz kullanıcının belirlediği sayfalardan icerik cekecekse artık bunda sadece iceriği nasıl cekeceğimize bakmalıyız. Onun haricinde başka bir şeye gerek kalmadan hedef sitedeki sayfaları kullanıcı verecektir. Botumuz sadece bu sayfaları işlemekle yukumludur.

Veriler Nasıl Cekilir?
Php scriptimiz ilk olarak istediğimiz sitenin kaynak kodlarını bize cekmesi gerekir. Bunu yaparken bir cok yontem izleyebiliriz. Veya bizim adımıza bu işi kolaylaştıran kutuphaneler kullanabiliriz. Kutuphanelere değinmeden once herhangi bir kutuphane kullanmadan nasıl verileri cekeriz onu inceleyelim.
İlk olarak file_get_contents() fonksiyonunun inceleyelim.

Kod:


Ornekte de gorulduğu uzere basit bir şekilde php.net sitesinin kaynak kodlarını alabiliriz. İkinci secenek olarak Curl sınıfını kullanabiliriz. Bu sınıf icin hazırlanmış benimde uzun zamandır kullandığım bir curl kutuphanesini sizlerle paylaşıyım.

Kutuphaneye girmek icin tıklayın

Bu kutuphanenin orneklerine buradan ulaşabilirsiniz. Kullanımı ve kurulumu gayet basit olan bu kutuphaneye ornek bir kod yazalım. Yapacağımız işlem yine yukarıdaki gibi php.net sitesinin kaynak kodlarını almak.

ilk olarak kutuphaneyi projemize dahil etmemiz gerekiyor onun icin projenin olduğu dosyanın icerisindeyken

Kod:
composer require php-curl-class/php-curl-class

komutunu calıştırmak. Bundan sonra kutuphanemiz projemize yani botumuza eklenmiş olacak. Kaynak kodunu cekmek icinse


Kod:


kodunu kullanabilirsiniz. Ornekleri inceleyerek post metoduyla nasıl işlem yapabileceğinizi veya diğer parametreler ekleyerek header verilerini değiştirerek site verileri nasıl elde edeceğinizi oğrenebilirsiniz. Bunların dışında php bot yapımı konusunda pek kullanmasam da şu şekilde de hedef site verilerini cekebilirsiniz.


Kod:


şimdiye kadar php bot yapımında uc farklı yontemle diğer sitelerden veri cekmeyi gosterdim. Şimdi sıra cektiğimiz bu verileri nasıl duzenleyeceğiz ona geldi.

Veriler Nasıl Duzenlenir / Parcalanır?
Php bot yapımında en onemli yere geldik kaynak kodlarını aldık. Şimdi bu kodlardan bize gereken yerleri parcalamamız gerek. Parcalama işlerinde de bir cok yontem izleyebiliriz. Bizim işimizi kolaylaştıran bir cok kutuphane var. İlk once kutuphane kullanmadan php fonksiyonlarını kullanarak verileri nasıl parcalayabiliriz ona bakalım.

ilk olarak inceleyeceğimiz fonksiyon explode() fonksiyonu. Bu fonksiyon metinleri basit bir şekilde parcalamamıza yarıyor. Bir ornek vermek gerekirse

Kod:


Bu kodun cıktısı şu şekilde olacaktır.


Kod:
Array ( [0] => bellenti.com [1] => yazısı )

php bot yapımı konusunda veri parcalama işlerinde kullanılan en populer fonksiyonlardan olan preg_match() veya preg_match_all() fonksiyonlarını inceleyelim bu iki fonksiyon arasındaki tek fark adından da anlaşılacağı gibi preg_match() bir eşleşmeden sonra durur ve yanlızca bir sonuc dondurur. Ama preg_match_all() eşleşmeye uyan butun sonucları size verecektir. Bir ornek vermek gerekirse.


Kod:


bu kodun cıktısı şu şekilde olacaktır.


Kod:
Array ( [0] => istenilen icerik1 [1] => icerik1 )

fakat aynı kodu preg_match_all() fonksiyonu ile kullandığımızda cıktı şuna donuşecektir.


Kod:


bu kodun cıktısı ise şu şekilde


Kod:
Array ( [0] => Array ( [0] => istenilen icerik1 [1] => istenilen icerik2 ) [1] => Array ( [0] => icerik1 [1] => icerik2 ) )

Gorulduğu gibi preg_match_all() fonksiyonu butun eşleşmeleri verdi. Peki bu fonksiyonun ilk parametresi olan ‘#istenilen (.*?) # ’ ifadesi nedir? bu ifadeler Regex ifadeleridir. Bunlara başka bir yazıda ayrıntısıyla inceleyeceğiz. Burada sadece bir kullanımı gostereceğim ve php bot yapımında sizin işinizi coğunlukla gorecektir.

Mesela hedef sitenin kaynak kodlarını aldık ve sitenin başlığını cekmek istiyoruz o zaman ifademiz ‘#(.*?)# ’ şeklinde olmalıdır. Kod parcalarının istediğimiz parcasına (.*?) ifadesini yerleştirmeliyiz. Onundeki ve arkasındaki ifadelerin uzunlukları fark etmez fakat belirleyici olmasına dikkat edin mesela bu parametreyi[B] ‘#le>(.*?)

php bot yapımı konusunda bir cok konuya değindik daha profesyonel php bot scriptlerini başka yazılarda yayınlayacağım anlatmamı istediğiniz veya ornek olarak yapılmasını istediğiniz php botları varsa eğer yorumlarda belirtmeyi unutmayın. Diğer php bot ile ilgili veya direk php programlama dili ile ilgili yazılara buradan ulaşabilirsiniz.

Kaynak: bellenti.com