Merhaba arkadaşlar,
bir süre önce
bu adrese tesadüfen girmiştim, Biraz önce tekrar rast geldim.Belki bazı arkadaşların işine yarayabilir.
------------------------------------------------------------------------------------------------------------------------
Öncelikle bu yazımda tamamen bot yazımını anlatacak değilim.Sonuçta bu işten para kazanan kişiler var.Bende bu işi yeni yeni kavradığım ve bu konuda kimsenin yardımcı olmadığını bildiğim için,eğer başlayacak kişilerde varsa ne yapacağını bilerek başlasın istedim.Makalemde Sadece yolu ve iyi bilmeniz gereken temel kodları vereceğim.Elimden geldiğince anlatmaya çalıştım BUYRUN BOT YAZMAYA –>
Öncelikle Bilmeniz Gereken Temel Kodlardan başlayalım; Temel dedi isem echo & print vs. en temel php fonksiyonlarından bahsetmiyorum.Zaten onları bilmeden gelipte direk BOT yazmaya kalkışmayın derim, emeklemeden yürümeyin kısacası.İşte
Bot yazımı ile ilgili temel kodlar: - file_get_contents Fonksiyonu.
- preg_match_all Fonksiyonu
- For döngüsü ve gerekli argümanları
Şimdi tek tek bu gerekli kodların kullanım biçimini öğrenelim;
1) FILE_GET_CONTENTS
Ne İşe Yarar:Belirlediğiniz sayfanın tümünü çeker ve serverde kullanılmak üzere tutar.
Nasıl Yazılır: file_get_contents(”ÇEKECEĞİNİZ SİTENİN ADRESİ”);
İpuçları:Eğer bu fonksiyonu çok yerde kullanacaksanız her defasında yazmamak için bir değişkene atayabilirsiniz; $site = file_get_contents(”ÇEKECEĞİNİZ SİTENİN ADRESİ”);
Böylece sayfayı çektik.Tabi bot yazımında en önemli şey istediğimizi almak.Tüm sayfayı istiyorsak bizim için bu yeterli olacaktır.Fakat o sayfadaki örneğin bir kod arasını almak istersek:
<title>Ali</title> Buradaki Arasındaki Ali yazısını istiyorsak misal , Bu fonksiyon yetmeyecektir.Bunun içinde preg_match_all kullanacağız.
1) PREG_MATCH_ALL
Ne İşe Yarar:Anlam olarak çektiğimiz tüm sayfayı belirli kriterlere göre ara demektir.Diğer kullanımı ise preg_match dır,bunun ile sadece bulduğu ilk argümanı alabilirsiniz,sadece bir array çeker.Fakat preg_match_all da tüm sayfada aradığımız kriter nerde varsa hepsini çeker ve serverda tutar.Yani <title>Ali</title> Arasındaki Aliyi İstiyorsak preg_match_all ile bazı işlemleri yapmamız gereklidir.
Nasıl Yazılır:Ben kolaylık olsun diye arayacağım bölümü bir değişkene atarım böylece preg_match_all daha pratik olur ve kodu yorumlamak daha doğru olur.Örneğin:
$aliariyorum = “/<title>(.*?)<\/title>/i”;
preg_match_all($aliariyorum, $site, $ara);
Nasıl Yorumlanır:Bu kod yazımı bakımından şöyle yorumlanır:
preg_match_all($aliariyorum, $page, $ara);
$aliariyorum Değişkenindeki aranacak metini $site Değişkenindeki kodlarda/bilgilerde ara ve bulduklarını $ara Değişkeni olarak ekle Demektir.Eğer makaleyi dikkatli okuyorsanız

$aliariyorum = “/<title>(.*?)<\/title>/i”; Değişkeninde birkaç yabancı işaret göreceksiniz Bunlar (.*?) , /i ,<\/title> gibi farklı yazımlar görmüşsünüzdür.Bunlar neye yarar açıklayalım.
(.*?): Bu karakteri koyduğunuz yerde preg_match_all fonksiyonu işlemeye başlar Yani <title>(.*?)</title> gibi kullanımda title tagının arasındaki her ne varsa alır.
<\/title>: Burada title kapama tagının orjinal yazımı </title> dir.fakat preg_match_all da bu size hata verdirir.Bunun için <\/title> şeklinde kullanılır.Aynı şekilde diğer taglardada : <br><\/br> vs.
/i : Ve preg_match_all fonksiyonunun bitişindede bu kodu görürüz bu şu işe yarar; “i” nin geldiği yer in-senstive dir.Yani Hassas olmayan anlamındadır.Bu neyi sağlar <title><\/title> arasındakinin yazımını bilmiyorsak(büyük küçük harf) bu arayacağımız değerin büyük küçük fark etmeden hepsini bulmamızı sağlar.Bu da olası bir hatayı önler.
1) FOR DÖNGÜSÜ VE ARRAYLARI ARTTIRARAK YAZDIRMA
Neden Gerekli:Preg match all fonksiyonunda aradığımız şeyi eğer fonksiyon bulursa bunlar server’a array olarak keydeder.Bunları yazdırmak için teker teker array[X] x belirtmek yerine bulunan kadar arrayı tek tek arttırıp yazdırmayı sağlar.
Nasıl Yazılır:
for ($a=0; $a<count($ara[1]); $a++){
echo $ara[1][$a].’<br>’;
}
Nasıl Yorumlanır: Kısaca for döngüsünü başlatıyoruz $a adında bir değişken atıyoruz ve başlangıç değerini 0 veriyoruz ; ve $a’yı hemen count ile sayıyoruz ve eğer $a küçük ise $ara’dan(Yani preg_match_all ile aradığımız kriterin bulunduğu sayıdan) , $a Yani 0 ı arttırarak git ta ki $ara’ın sayısına kadar.ve $a ne zaman $ara sayısına ulaşırsa $ara’ın 1.array ve $a kadar arraya kadar yazdır ve her bir yazılacak değere bir satır atlat.Satır atlatmanın sebebi karışıklılığı önlemek.Eğer anlamadıysanız for & count vs. konularını öğrenin veya üstteki for döngüsünü yorumlayıp anlamaya çalışın.yorumlarsanız anlamışsınızdır..
Bu yöntemle sitedeki verileri çektik ve bize lazım olan kısımları aldık.Asıl iş bunları kullandığımız sistemin databasesine yazdırmak.Bunu her sisteme göre anlatamacayağım için ve de anlatırsam coderlere iş kalmayacağı için yazmıyorum.Eğer php bilginizi gelişritmek istiyorsanız mysql vs. veri tabanına veri ekleme çıkarma işlerinide öğrenirseniz bot yazmanın ne kadar kolay olduğunu görürsünüz…Mysql dersleri için birçok türkçe site mevcut bunlardan benimde kullandığım site
EgitimOfis - Dijital Eğitim Platformu - Görüntülü ve Sesli Programlama,Grafik,Yabancı Dil Dersleri.. dur.Eğer veri tabanınada yazdırmayı öğrenirseniz SİZ ARTIK BOT YAZDINIZ DEMEKTİR
Makale burada sona eriyor.Yaptıklarımızı özetleyelim:
Site içeriğini file_get_contents ile çektik ve serverda tuttuk , preg_match_all ile bir değer arattırdık , ardından for döngüsü oluşturup array sayısını bulup en son olarak yazdırdık..
Çalışmanın Örneğini :
www.ozancansahin.com/bott Adresinde bulabilrisiniz.
@Kaynak: Bot Yazım Mantığı Ve Kaynak Kodlar.Bot nasıl yazılır? | | Ozan Can Sahin |
Bu değerli bilgiyi paylaştığı için Ozan Can Şahin arkadaşımıza tekrar teşekkürler.