Konuyu Oyla:
  • Derecelendirme: 3/5 - 4 oy
  • 1
  • 2
  • 3
  • 4
  • 5
PHP Bot Yapımı
#1
Arkadaşlar bu konudaki anlatımları okuyarak siz de kendi PHP botunuzu yapabilirsiniz - yazabilirsiniz. PHP bot yazımı için gereken tek şey biraz PHP ve mySQL bilgisi.

PHP bot yapımı genelde localhostta yani local serverinınızda olur bu yüzden kendi bilgisayarızda WAMP kurulu olması ilk gereksinimimiz, daha sonra istediğiniz gibi PHP bot yazabilirsiniz.

Şimdi anlatıma geçelim:

Öncelike şunu belirtelim tüm ayrıntılar anlatılmayacaktır çünkü bu işten para kazanan arkadaşlarımız var. Ancak sadece bu anlatım ile çok güzel bir şekilde kendi PHP Bot'unuzu yazabilirsiniz. Örneğin, Ben bir fıkra sitesinden kendi siteme fıkraları eklemek istiyorum.

Bunu nasıl yapacağım? Önce şunlara bakalım:


  1. Fıkraların birikeceği veritabanımı oluşturuyorum, ve ona id,baslik,metin,tarih olmak üzere 4 sütun ekliyorum.
  2. Fıkraları seçeceğim siteye giriyorum ve bir fıkra açıyorum. Linke bakıyorum ;
Örneğin linkimiz şöyle olsun : ornekfikrasitesi.com/fikra.php?id=13
veyahut link şöyle olabilir ornekfikrasitesi.com/fikra-basligi-13.html

Burada dikkat etmeniz gereken husus ;

Linkte gördüğüm 13 sayısını (veya oradaki sayı her ne ise) tarayıcıdan değiştirip 14 veya 15 yapıp enter'a basınca, karşıma yeni bir fıkra geliyor ise, sistem fıkraları linkte gördüğümüz o numaraya göre çekiyor demektir.

Wordpress botları bu mantıkla çalışır, siteadi.com/p?=1 linkindeki 1'i silip yerine 5 yazar enter'a basarsanız 5. içeriğe ulaşırsınız.

Sistemin bilgileri çektiği sayıyı da tespit ettiğimize göre devam ediyoruz.

Sitedeki bilgiler çekilmeye müsait mi?

Bazı sunucular dosyaları dışarıdan almaya izin vermezler. Bunu deniyoruz
Aşağıdaki php kodumuz, bir sitedeki bilgileri çekmeye yarar :

PHP Kod:
$site=file_get_contents("http://www.ornekfikrasitesi.com/fikra.php?id=13"); 

Yukarıda görmüş olduğunuz kod ile 13 numaralı fıkranın bulunduğu sayfanın kaynak kodlarını çektim. Şimdi bunları yazdırma kodunu ekliyorum :

PHP Kod:
echo"$site"

Tabii ki başına ve sonuna <? ?> eklemeyi unutmadığım php sayfamı kaydedip gerek lokalhostta gerekse hostuma atıp çalıştırıyorum. 2 ihtimal var :
  • Çektiğim adresteki tüm veriler ekrana gelecek.
  • Ya da ekrana fonksiyonun sağlıklı çalışmadığı ile ilgili hata alacağım.
Eğer ilk seçenekteki gibi ekrana bilgileri bastırmayı başardıysanız, diğer adıma geçiyoruz.

Yok karşıdaki site bilgileri vermiyor, ekrana hata geliyorsa, o siteden veri alamıyoruz

Diğer adım :
Kaynak kodlarından bana gerekli olan yerleri bulma

Fıkraları çekmek istediğim sayfaya sağ tıkladım ve kaynak kodlarını görüntüle dedim. Bana gerekli olan yerleri arıyorum. Buralar nereler mi? Fıkra başlığı ve fıkra metnini çekmek istiyorum.

HTML kodlarında şöyle bir ibare gördüm :

PHP Kod:
<title>Örnek Fıkra Başlığı</title

Sitenin title kodları arasında fıkranın başlığı işlenmiş. Demek ki buradan fıkra başlığını çekebilirim. Çünkü hangi fıkrayı açarsam açayım <title> ile </title> kodları arasında fıkra başlığı olacak.

Fıkra metnini ise farzedelim ki şöyle biryerde buluyorum :

PHP Kod:
<!-- fikra -->Fıkra Metni<!-- / fikra --> 

Fıkra metnini de buradan çekebilirim diyorum ve diğer adıma geçiyorum :
Bulduğum verileri nasıl çekerim ?

Bu aşamada, php kodumuz devreye giriyor :

PHP Kod:
$baslikalan='#<title>(.*?)<\/title>#si'
preg_match($baslikalan,$site,$baslikfonksiyon); 

$baslikalan = verileri çekeceğim yeri seçiyorum
$site = verileri çektiğim siteyi tanımladığım değişken
$baslikfonksiyon = başlığı benim için çeken fonksiyonun son adı

Yukarıdaki kodlarda <title> ve <\/title> yazan yerlere, almak istediğim veri hangi kodlar arasında ise onu yazıyorum. Yukarıda başlığı çekmek için title kodlarını yazdım. aradaki (.*?) karakterleri, çekilecek olan verinin bulunacağı yeri gösterir.

Başlığı böyle çektim, fıkra metnini de aynı yöntemle çekiyorum :

PHP Kod:
$fikraalan='#<!-- fikra -->(.*?)!-- \/ fikra -->#si'
preg_match($fikraalan,$site,$fikrafonksiyon); 

Yukarıda da başlığı çektiğim aynı mantıkla fıkra metnini çektim.

Neden / yerine \/ yazdım ?

PHP'de kodların karışmaması için bazı karakterlerin önüne \ koymanız gerekebilir. Yukarıda anlattığım kodlarda kaynak kodundan bölümler yerleştirdiğiniz alanda bulunan çift tırnaklara ( " ) ve bölme işaretlerinin önüne ( / ) bahsettiğim karakteri ( \ ) koymazsanız, kodlar size hata verecektir. Bu konuya dikkat edilmelidir.

İki alanı da çektim, şimdi onları bir değişkene atıyorum, nasıl mı ?

PHP Kod:
$fikra=$fikrafonksiyon[1];
$baslik=$baslikfonksiyon[1]; 

Yukarıdaki cümlelerde, verilen kodlar arasında bulunan ilk değişkenleri $fikra ve $baslik değişkenlerine atadım. Artık fıkram ve başlığım bir değişken olarak elimde.

Hadi deneyelim :

Fıkramı ve başlığımı ekrana yazdırıyorum :

PHP Kod:
echo"$baslik<br>$fikra"

Php dosyamı kaydedip çalıştırıyorum, ekrana fıkram ve başlığım sorunsuz gelirse, "oh bu bot da bitti" diyorum, gelmediyse; kaynak kodları ve php sayfamı açıp nerede hata yaptım diye bakıyorum.

Ekrana fıkra ve başlık bastırıldı mı? Diğer adım :

Bulduğum verileri veritabanıma nasıl kaydederim ?

Şimdi yapacağımız şey, 2 değişkeni veritabanına kaydetmek. Bunu yapmak için bot yazmayı bilmeye gerek yok, php ve mysql bilsem yeter.
Veritabanı bilgilerimi içeren sayfayı include ediyorum :

PHP Kod:
if($baslik=="" || $fikra==""){
echo
" Böyle bir fıkra yoktur.";
}else{ 

Dikkat : yukarıdaki if döngüsünün sonundaki ELSE'i kapatmadık, else if kullanamıyorum çünkü veritabanına bir soru sormam lazım. O döngüyü nerede kapatacağımız (sonuna } ekleyeceğimiz) aşağıda yazmaktadır.

Bu soruyu önce sorarak else if de kullanabilirsiniz ama ben öğretim amaçlı çalıştığım için böyle yapmayı uygun buldum.

Veritabanına soracağım soru :
Bu fıkranın aynısını kaydettik mi?
- Ya o fıkra önceden eklendiyse? Bu fıkrayı tekrar çekmemeliysem?
Hemen engelliyoruz :
(Yukarıdaki kodun hemen arkasından devam ediyoruz )

PHP Kod:
// Başlığı şimdiki fıkrayla aynı fıkraların sayısı :
$fikrasayi=mysql_num_rows(mysql_query("SELECT * FROM fikra WHERE baslik='$baslik'"); 

Evet, artık $fikrasayi değişkenimde şu an çektiğim fıkradan veritabanımda kaç tane var, o sayıyı görüyorum.
Eğer bu sayı 1 ise, yani fıkranın veritabanında 1 kopyası daha varsa :

PHP Kod:
if($fikrasayi==1){
echo
"Bu fıkra önceden eklenmiştir.";
}else{
// Artık fıkrayı yükleyebilirim, bir engel kalmadı
$tarih=date('d/m/y'); // Tarihi de alayım 
$fikrayukle=mysql_query("INSERT INTO fikra (baslik,metin,tarih)VALUES('$baslik','$fikra','$ta rih')");
if(
$fikrayukle){ //Fıkram başarı ile yüklendiyse eğer :
echo"Fıkra başarıyla kaydedildi";


Son olarak yukarıda bahsettiğim if döngüsünün sonundaki else'yi kapatmak için bir tanecik } koyuyoruz. Ve tamamdır.

Artık bot.php'i tarayıcımda açtığım zaman, fıkrayı çektiğim sitedeki 13 numaralı fıkrayı veritabanıma kaydettim demektir. Tabi eğer koşullarıma uyuyorsa :heart:

Süzgecimden geçebildiyse

Peki Ama Ya Otomatik Olarak Çeksin İstiyorsam? Ya Elle Çekmeyeceksem?

Evet, profesyonel botlar otomatik çalışmak zorundadır. Bir bot birkaç saatte 100bin kayıt girebilir, ama bunu elle yapamayız.

Peki bot nasıl otomatik çalışacak ?

İşe, çektiğimiz fıkrayı tanımladığımız sayfada bulunan sayıyı bir değişken yaparak başlayalım.

İlk başta kodumu şöyle yazmıştım :

PHP Kod:
$site=file_get_contents("http://www.ornekfikrasitesi.com/fikra.php?id=13"); 

Ama bu kod böyle kalırsa paso 13. fıkrayı çeker? Hatta çekemez çünkü aynı fıkraları kabul etmiyor. E bunu değişken kılmak lazım :

PHP Kod:
$id=$_GET['id'];
$site=file_get_contents("http://www.ornekfikrasitesi.com/fikra.php?id=$id"); 

Şimdi ne mi yaptım? $id değişkenini çektiğim site linkinin sonuna ekledim, artık botum şöyle çalışacak :

bot.php?id=5 dersem 5 nolu fıkrayı çekecek.
bot.php?id=26 dersem 26 nolu fıkrayı çekecek.

Ama nasıl otomatik şekilde fıkradan fıkraya atlayacak?

Kodum böyle idi :

PHP Kod:
$id=$_GET['id'];
$site=file_get_contents("http://www.ornekfikrasitesi.com/fikra.php?id=$id"); 

25 numaralı fıkrayı çekiyorum, hangi fıkraya gitmem lazım? 26 numaralıya. Yani $id değişkenimden 1 fazla olan sayıyı bulmam lazım. Hadi bulalım :

PHP Kod:
$yeniid=$id++; 

$yeniid değişkenime, $id değerimin 1 fazlasını atadım.
bot.php?id=5 açarsam $yeniid=6 olacaktır.
bot.php?id=26 açarsam $yeniid=27 olacaktır.
Şimdi html refresh (sayfa yenileme) kodumu kullanarak diğer fıkrayı çekecek olan bot.php'ye gitmek istiyorum. Nasıl mı?
Sayfama gerekli kodu yazıyorum :

PHP Kod:
echo"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/fbot.php?id=$yeniid\">"

Bu kod ne demek?

0.1 saniye sonra bot.php?id=X'ten bot.php?id=X+1'e geç demek.
Yani bot.php?id=5'i açarsam 0.1 saniye sonra bot.php?id=6'ya şutla demek.

Tabii bu kodu öyle orta yere koymuyoruz

-Eğer Fıkra Boş Çıktıysa, beni diğer fıkraya şutla
-Eğer bu fıkra önceden kaydedilmiş ise, beni diğer fıkraya şutla
- Eğer bu fıkrayı kaydetme işlemin başarıyla bittiyse, beni diğer fıkraya şutla
Yani kodu ekleyeceğimiz yerler :

PHP Kod:
echo"Bu fıkra önceden eklenmiştir."
echo
"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"// Bu satıra ekliyorum, madem fıkra önceden eklenmiş diğer sayfaya geç 

PHP Kod:
echo" Böyle bir fıkra yoktur."); 
echo
"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"// Bu satıra ekliyorum ; Madem böyle bir fıkra yok beni diğer fıkraya yolla 

PHP Kod:
echo"Fıkra başarıyla kaydedildi";
echo
"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"// Bu satıra da ekliyorum, fıkra başarı ile kaydedildiyse beni diğer fıkraya yolla 

Arkadaşlar php bilenlerin mantığı anlayacağını düşünüyorum, yine de yazayım.

Echo komutu ile sonucu yazdırdığım satırların altına, beni bir sonraki fıkrayı çeken bot sayfasına yollaması için gereken kodu ekliyorum. Bu sayede sayfamın işi bittikten sonra diğer fıkrayı çekmek için kendisini yeniliyor. Bunu otomatik olarak ve 0.1 saniyede yapıyor.

Botumun Son Hali :

PHP Kod:
<? 
include('ayar.php'); //veritabanıma bağlandım
$id=$_GET['id']; //$id değişkenini get fonksiyonu ile aldım
$site=file_get_contents("http://www.ornekfikrasitesi.com/fikra.php?id=$id"); // Fıkrayı alacağım sayfayı $id değişkeni ile çektim
$yeniid=$id++; // $yeniid'yi $id'nin 1 fazlası yaptım
// Başlık ve fıkramı çekiyorum :
$baslikalan='#<title>(.*?)<\/title>#si'; 
preg_match($baslikalan,$site,$baslikfonksiyon); 
$fikraalan='#<!-- fikra -->(.*?)!-- \/ fikra -->#si'; 
preg_match($fikraalan,$site,$fikrafonksiyon); 
$fikra=$fikrafonksiyon[1]; 
$baslik=$baslikfonksiyon[1]; 
// Kayıt için gerekli şartları if döngüsü ile sorguluyorum
// Bunu yaparken işlemden sonra beni diğer fıkrayı çekecek sayfaya atması için refresh kodumu ekliyorum.
if($baslik=="" || $fikra==""){ 
echo" Böyle bir fıkra yoktur."); 
echo"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">";
}else{ 
$fikrasayi=mysql_num_rows(mysql_query("SELECT * FROM fikra WHERE baslik='$baslik'"); 
if($fikrasayi==1){ 
echo"Bu fıkra önceden eklenmiştir."; 
echo"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"; 
}else{ 
// Artık fıkrayı yükleyebilirim, bir engel kalmadı 
$tarih=date('d/m/y'); // Tarihi de alayım  
$fikrayukle=mysql_query("INSERT INTO fikra (baslik,metin,tarih)VALUES('$baslik','$fikra','$ta rih')"); 
if($fikrayukle){ //Fıkram başarı ile yüklendiyse eğer : 
echo"Fıkra başarıyla kaydedildi"; 
echo"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"; 

} // taa yukarıda açtığım else'i burada kapattım
?>

Bu sayfayı çalıştırdığımda ne mi olacak?

PHP Kod:
www.siteminadi.com/bot.php?id=1'i çalıştırdığınız an : 

Bot çektiğiniz sitenin hızıyla orantılı bir hızla fıkraları tek tek sizin veritabanınıza yüklemeye, fıkradan fıkraya otomatik atlamaya başlıyor. Siz dur diyene kadar da devam ediyor.
Gidip kapatmazsanız bot.php?id=1000000'a kadar devam edebilir.
Bunu engellemek için $id'yi tanıttığımız kod'un altına

PHP Kod:
if($id!=10000){ 

yazıp en alt satıra } ekleyerek kapayarak botun 10bin'e gelince otomatik durmasını da sağlayabilirsiniz.
Öğretim amaçlı hazırladığım için ince bazı bilgileri paylaşmayı bot yazan diğer arkadaşların düşüneceklerini gözeterek açıklamadım.
Bu basit mantığı ilerleterek istediğiniz bütün verileri birkaç saatte toplayabilirsiniz.

Saygılarımla İyi Çalışmalar.
İnsɑnlɑr değişmez değişen tek şey şɑrtlɑr ve çıkɑrlɑr...
Beğenenler: NEO34
#2
Super anlatmisin eline saglik cok gerekli bilgi en favori konum bu oldu exciting
Beğenenler:
#3
(01-10-2013, Saat: 01:32)archavin Adlı Kullanıcıdan Alıntı: Super anlatmisin eline saglik cok gerekli bilgi en favori konum bu oldu exciting

eyw. umarım işine yaramıştır :heart:
İnsɑnlɑr değişmez değişen tek şey şɑrtlɑr ve çıkɑrlɑr...
Beğenenler:
#4
Eline Sağlık kiss
Beğenenler:
#5
Elinize saplık gerçekten öok güzel anlatmışsınız arşive aldım lazım olur bir ikikez basit botlar yazmıştım biraz geliştirmek lazım exciting
Beğenenler:
#6
HOCAM HARİKA Bİ KONU BU KADAR HARİKA ANLATILIR. EMEĞİNE SAĞLIK...
Beğenenler:
#7
Altın bulmuş kadar sevindim ellerine sağlık abim kiss
En büyük acizlik,kendinden başkası gibi görünmektir.
Beğenenler:

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Spor Toto Süper Lig Fikstürü Botu Yapımı iMoGeN 3 1,041 17-09-2014, Saat: 16:45
Son Yorum: GнσυL
  PHP ile Küçük Bir Oyun Yapımı iMoGeN 5 801 30-07-2014, Saat: 10:21
Son Yorum: LAZRAIL
  Php ile Dinamik Site Haritası Yapımı (sitemap.php) DaRKNeSS 1 869 28-04-2014, Saat: 15:20
Son Yorum: D4RKG1RL
  Php Get Metodu İle Çoklu Sayfa Yapımı iMoGeN 2 794 23-01-2014, Saat: 23:54
Son Yorum: coderr
Anahtar Kelimeler

PHP Bot Yapımı indir, PHP Bot Yapımı Videosu, PHP Bot Yapımı Online izle, PHP Bot Yapımı Bedava indir, PHP Bot Yapımı Yükle, PHP Bot Yapımı Hakkında, PHP Bot Yapımı Nedir, PHP Bot Yapımı Free indir, PHP Bot Yapımı Oyunu, PHP Bot Yapımı Download


1 Ziyaretçi