ArenaFutbol | Futbol'a Dair Her Şey
PHP Bot Yapımı - PHP Bot Yazımı Anlatım Uyeol

Sitemizi REKLAMSIZ şekilde gezebilmek için, bütün bölümlere erişebilmek için ve tam anlamıyla faydalanabilmek için lütfen ÜYE OLUNUZ, eğer üye iseniz lütfen GİRİŞ YAPINIZ
ArenaFutbol | Futbol'a Dair Her Şey
PHP Bot Yapımı - PHP Bot Yazımı Anlatım Uyeol

Sitemizi REKLAMSIZ şekilde gezebilmek için, bütün bölümlere erişebilmek için ve tam anlamıyla faydalanabilmek için lütfen ÜYE OLUNUZ, eğer üye iseniz lütfen GİRİŞ YAPINIZ
ArenaFutbol | Futbol'a Dair Her Şey
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaGaleriLatest imagesKayıt OlGiriş yap

 

 PHP Bot Yapımı - PHP Bot Yazımı Anlatım

Aşağa gitmek 
YazarMesaj
Rebellious
No-Post !
Rebellious


Favori Oyuncu : Metin Oktay
Mesaj Sayısı : 14623
Puan : 258025
Rep : 2564
Yer : Ali Samiyen
Cinsiyet : Erkek
Kayıt tarihi : 19/08/09
PHP Bot Yapımı - PHP Bot Yazımı Anlatım I231076_gsli

PHP Bot Yapımı - PHP Bot Yazımı Anlatım Empty
MesajKonu: PHP Bot Yapımı - PHP Bot Yazımı Anlatım   PHP Bot Yapımı - PHP Bot Yazımı Anlatım EmptyPaz Ocak 10, 2010 2:16 am

Arkadaşlar bu konudaki anlatımları okuyarak siz de kendi [b]PHP bot[/b]unuzu yapabilirsiniz - yazabilirsiniz. [b]PHP bot yazımı[/b] için gereken tek şey biraz PHP ve mySQL bilgisi.

[b]PHP bot yapımı[/b]
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:

[list=1]
[*]Fıkraların birikeceği veritabanımı oluşturuyorum, ve ona id,baslik,metin,tarih olmak üzere 4 sütun ekliyorum.
[*]Fıkraları seçeceğim siteye giriyorum ve bir fıkra açıyorum. Linke bakıyorum ;
[/list]Ö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, [color=#ff4500]sistem fıkraları linkte gördüğümüz o numaraya göre çekiyor demektir.[/color]

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.

[b][color=#ff4500]Sitedeki bilgiler çekilmeye müsait mi?[/color][/b]

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

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$site[/color][color=#007700]=[/color][color=#0000bb]file_get_contents[/color][color=#007700]([/color][color=#dd0000]"http://www.ornekfikrasitesi.com/fikra.php?id=13"[/color][color=#007700]);[/color] [/td] [/tr] [/table]
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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]echo[/color][color=#dd0000]"$site"[/color][color=#007700]; [/color] [/td] [/tr] [/table]
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 :

[list]
[*]Çektiğim adresteki tüm veriler ekrana gelecek.
[*]Ya da ekrana fonksiyonun sağlıklı çalışmadığı ile ilgili hata alacağım.
[/list]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 :
[b][color=#ff4500]Kaynak kodlarından bana gerekli olan yerleri bulma[/color][/b]

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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"]
<title>Örnek Fıkra Başlığı</title>

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

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

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"]
<!-- fikra -->Fıkra Metni<!-- / fikra -->

[/td] [/tr] [/table]
Fıkra metnini de buradan çekebilirim diyorum ve diğer adıma geçiyorum :
[b][color=#ff4500]Bulduğum verileri nasıl çekerim ?[/color][/b]

Bu aşamada, php kodumuz devreye giriyor :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$baslikalan[/color][color=#007700]=[/color][color=#dd0000]'#<title>(.*?)<\/title>#si'[/color][color=#007700]; [/color]
[color=#0000bb]preg_match[/color][color=#007700]([/color][color=#0000bb]$baslikalan[/color][color=#007700],[/color][color=#0000bb]$site[/color][color=#007700],[/color][color=#0000bb]$baslikfonksiyon[/color][color=#007700]); [/color] [/td] [/tr] [/table]
$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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$fikraalan[/color][color=#007700]=[/color][color=#dd0000]'#<!-- fikra -->(.*?)!-- \/ fikra -->#si'[/color][color=#007700]; [/color]
[color=#0000bb]preg_match[/color][color=#007700]([/color][color=#0000bb]$fikraalan[/color][color=#007700],[/color][color=#0000bb]$site[/color][color=#007700],[/color][color=#0000bb]$fikrafonksiyon[/color][color=#007700]); [/color] [/td] [/tr] [/table]
Yukarıda da başlığı çektiğim aynı mantıkla fıkra metnini çektim.

[b]Neden / yerine \/ yazdım ?[/b]

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ı ?

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$fikra[/color][color=#007700]=[/color][color=#0000bb]$fikrafonksiyon[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]];[/color]
[color=#0000bb]$baslik[/color][color=#007700]=[/color][color=#0000bb]$baslikfonksiyon[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]]; [/color] [/td] [/tr] [/table]
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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]echo[/color][color=#dd0000]"$baslik<br>$fikra"[/color][color=#007700];[/color] [/td] [/tr] [/table]
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 :

[b][color=#ff4500]Bulduğum verileri veritabanıma nasıl kaydederim ?[/color][/b]

Ş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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]if([/color][color=#0000bb]$baslik[/color][color=#007700]==[/color][color=#dd0000]"" [/color][color=#007700]|| [/color][color=#0000bb]$fikra[/color][color=#007700]==[/color][color=#dd0000]""[/color][color=#007700]){[/color]
[color=#007700]echo[/color][color=#dd0000]" Böyle bir fıkra yoktur."[/color][color=#007700];[/color]
[color=#007700]}else{ [/color] [/td] [/tr] [/table]
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.

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

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 )

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#ff8000]// Başlığı şimdiki fıkrayla aynı fıkraların sayısı :[/color]
[color=#0000bb]$fikrasayi[/color][color=#007700]=[/color][color=#0000bb]mysql_num_rows[/color][color=#007700]([/color][color=#0000bb]mysql_query[/color][color=#007700]([/color][color=#dd0000]"SELECT * FROM fikra WHERE baslik='$baslik'"[/color][color=#007700]);[/color] [/td] [/tr] [/table]
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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]if([/color][color=#0000bb]$fikrasayi[/color][color=#007700]==[/color][color=#0000bb]1[/color][color=#007700]){[/color]
[color=#007700]echo[/color][color=#dd0000]"Bu fıkra önceden eklenmiştir."[/color][color=#007700];[/color]
[color=#007700]}else{[/color]
[color=#ff8000]// Artık fıkrayı yükleyebilirim, bir engel kalmadı[/color]
[color=#0000bb]$tarih[/color][color=#007700]=[/color][color=#0000bb]date[/color][color=#007700]([/color][color=#dd0000]'d/m/y'[/color][color=#007700]); [/color][color=#ff8000]// Tarihi de alayım [img]http://www.webmastersitesi.com/images/smilies/smile.gif[/img][/color]
[color=#0000bb]$fikrayukle[/color][color=#007700]=[/color][color=#0000bb]mysql_query[/color][color=#007700]([/color][color=#dd0000]"INSERT INTO fikra (baslik,metin,tarih)VALUES('$baslik','$fikra','$ta rih')"[/color][color=#007700]);[/color]
[color=#007700]if([/color][color=#0000bb]$fikrayukle[/color][color=#007700]){ [/color][color=#ff8000]//Fıkram başarı ile yüklendiyse eğer :[/color]
[color=#007700]echo[/color][color=#dd0000]"Fıkra başarıyla kaydedildi"[/color][color=#007700];[/color]
[color=#007700]} [/color] [/td] [/tr] [/table]
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
[img]http://www.pcturk.org/images/smilies/smile.gif[/img]

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.

[b]Peki bot nasıl otomatik çalışacak ?[/b]

İş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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$site[/color][color=#007700]=[/color][color=#0000bb]file_get_contents[/color][color=#007700]([/color][color=#dd0000]"http://www.ornekfikrasitesi.com/fikra.php?id=13"[/color][color=#007700]);[/color] [/td] [/tr] [/table]
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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$id[/color][color=#007700]=[/color][color=#0000bb]$_GET[/color][color=#007700][[/color][color=#dd0000]'id'[/color][color=#007700]];[/color]
[color=#0000bb]$site[/color][color=#007700]=[/color][color=#0000bb]file_get_contents[/color][color=#007700]([/color][color=#dd0000]"http://www.ornekfikrasitesi.com/fikra.php?id=$id"[/color][color=#007700]);[/color] [/td] [/tr] [/table]
Ş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.

[b]Ama nasıl otomatik şekilde fıkradan fıkraya atlayacak?[/b]

Kodum böyle idi :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$id[/color][color=#007700]=[/color][color=#0000bb]$_GET[/color][color=#007700][[/color][color=#dd0000]'id'[/color][color=#007700]];[/color]
[color=#0000bb]$site[/color][color=#007700]=[/color][color=#0000bb]file_get_contents[/color][color=#007700]([/color][color=#dd0000]"http://www.ornekfikrasitesi.com/fikra.php?id=$id"[/color][color=#007700]);[/color] [/td] [/tr] [/table]
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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]$yeniid[/color][color=#007700]=[/color][color=#0000bb]$id[/color][color=#007700]++; [/color] [/td] [/tr] [/table]
$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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]echo[/color][color=#dd0000]"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/fbot.php?id=$yeniid\">"[/color][color=#007700]; [/color] [/td] [/tr] [/table]
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.

[b]Tabii bu kodu öyle orta yere koymuyoruz[/b]

-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 :

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]echo[/color][color=#dd0000]"Bu fıkra önceden eklenmiştir."[/color][color=#007700]; [/color]
[color=#007700]echo[/color][color=#dd0000]"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"[/color][color=#007700]; [/color][color=#ff8000]// Bu satıra ekliyorum, madem fıkra önceden eklenmiş diğer sayfaya geç [/color] [/td] [/tr] [/table]
Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]echo[/color][color=#dd0000]" Böyle bir fıkra yoktur."[/color][color=#007700]); [/color]
[color=#007700]echo[/color][color=#dd0000]"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"[/color][color=#007700]; [/color][color=#ff8000]// Bu satıra ekliyorum ; Madem böyle bir fıkra yok beni diğer fıkraya yolla [/color] [/td] [/tr] [/table]
Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]echo[/color][color=#dd0000]"Fıkra başarıyla kaydedildi"[/color][color=#007700];[/color]
[color=#007700]echo[/color][color=#dd0000]"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"[/color][color=#007700]; [/color][color=#ff8000]// Bu satıra da ekliyorum, fıkra başarı ile kaydedildiyse beni diğer fıkraya yolla [/color] [/td] [/tr] [/table]
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.

[b]Botumun Son Hali : [/b]

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#0000bb]<? [/color]
[color=#007700]include([/color][color=#dd0000]'ayar.php'[/color][color=#007700]); [/color][color=#ff8000]//veritabanıma bağlandım[/color]
[color=#0000bb]$id[/color][color=#007700]=[/color][color=#0000bb]$_GET[/color][color=#007700][[/color][color=#dd0000]'id'[/color][color=#007700]]; [/color][color=#ff8000]//$id değişkenini get fonksiyonu ile aldım[/color]
[color=#0000bb]$site[/color][color=#007700]=[/color][color=#0000bb]file_get_contents[/color][color=#007700]([/color][color=#dd0000]"http://www.ornekfikrasitesi.com/fikra.php?id=$id"[/color][color=#007700]); [/color][color=#ff8000]// Fıkrayı alacağım sayfayı $id değişkeni ile çektim[/color]
[color=#0000bb]$yeniid[/color][color=#007700]=[/color][color=#0000bb]$id[/color][color=#007700]++; [/color][color=#ff8000]// $yeniid'yi $id'nin 1 fazlası yaptım[/color]
[color=#ff8000]// Başlık ve fıkramı çekiyorum :[/color]
[color=#0000bb]$baslikalan[/color][color=#007700]=[/color][color=#dd0000]'#<title>(.*?)<\/title>#si'[/color][color=#007700]; [/color]
[color=#0000bb]preg_match[/color][color=#007700]([/color][color=#0000bb]$baslikalan[/color][color=#007700],[/color][color=#0000bb]$site[/color][color=#007700],[/color][color=#0000bb]$baslikfonksiyon[/color][color=#007700]); [/color]
[color=#0000bb]$fikraalan[/color][color=#007700]=[/color][color=#dd0000]'#<!-- fikra -->(.*?)!-- \/ fikra -->#si'[/color][color=#007700]; [/color]
[color=#0000bb]preg_match[/color][color=#007700]([/color][color=#0000bb]$fikraalan[/color][color=#007700],[/color][color=#0000bb]$site[/color][color=#007700],[/color][color=#0000bb]$fikrafonksiyon[/color][color=#007700]); [/color]
[color=#0000bb]$fikra[/color][color=#007700]=[/color][color=#0000bb]$fikrafonksiyon[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]]; [/color]
[color=#0000bb]$baslik[/color][color=#007700]=[/color][color=#0000bb]$baslikfonksiyon[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]]; [/color]
[color=#ff8000]// Kayıt için gerekli şartları if döngüsü ile sorguluyorum[/color]
[color=#ff8000]// Bunu yaparken işlemden sonra beni diğer fıkrayı çekecek sayfaya atması için refresh kodumu ekliyorum.[/color]
[color=#007700]if([/color][color=#0000bb]$baslik[/color][color=#007700]==[/color][color=#dd0000]"" [/color][color=#007700]|| [/color][color=#0000bb]$fikra[/color][color=#007700]==[/color][color=#dd0000]""[/color][color=#007700]){ [/color]
[color=#007700]echo[/color][color=#dd0000]" Böyle bir fıkra yoktur."[/color][color=#007700]); [/color]
[color=#007700]echo[/color][color=#dd0000]"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"[/color][color=#007700];[/color]
[color=#007700]}else{ [/color]
[color=#0000bb]$fikrasayi[/color][color=#007700]=[/color][color=#0000bb]mysql_num_rows[/color][color=#007700]([/color][color=#0000bb]mysql_query[/color][color=#007700]([/color][color=#dd0000]"SELECT * FROM fikra WHERE baslik='$baslik'"[/color][color=#007700]); [/color]
[color=#007700]if([/color][color=#0000bb]$fikrasayi[/color][color=#007700]==[/color][color=#0000bb]1[/color][color=#007700]){ [/color]
[color=#007700]echo[/color][color=#dd0000]"Bu fıkra önceden eklenmiştir."[/color][color=#007700]; [/color]
[color=#007700]echo[/color][color=#dd0000]"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"[/color][color=#007700]; [/color]
[color=#007700]}else{ [/color]
[color=#ff8000]// Artık fıkrayı yükleyebilirim, bir engel kalmadı [/color]
[color=#0000bb]$tarih[/color][color=#007700]=[/color][color=#0000bb]date[/color][color=#007700]([/color][color=#dd0000]'d/m/y'[/color][color=#007700]); [/color][color=#ff8000]// Tarihi de alayım [img]http://www.webmastersitesi.com/images/smilies/smile.gif[/img] [/color]
[color=#0000bb]$fikrayukle[/color][color=#007700]=[/color][color=#0000bb]mysql_query[/color][color=#007700]([/color][color=#dd0000]"INSERT INTO fikra (baslik,metin,tarih)VALUES('$baslik','$fikra','$ta rih')"[/color][color=#007700]); [/color]
[color=#007700]if([/color][color=#0000bb]$fikrayukle[/color][color=#007700]){ [/color][color=#ff8000]//Fıkram başarı ile yüklendiyse eğer : [/color]
[color=#007700]echo[/color][color=#dd0000]"Fıkra başarıyla kaydedildi"[/color][color=#007700]; [/color]
[color=#007700]echo[/color][color=#dd0000]"<meta http-equiv=\"refresh\" content=\"0.1;URL=http://www.siteminadi.com/bot.php?id=$yeniid\">"[/color][color=#007700]; [/color]
[color=#007700]} [/color]
[color=#007700]} [/color][color=#ff8000]// taa yukarıda açtığım else'i burada kapattım[/color]
[color=#0000bb]?>[/color] [/td] [/tr] [/table]
[b]Bu sayfayı çalıştırdığımda ne mi olacak?[/b]

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"]
http://www çalıştırdığınız an :

[/td] [/tr] [/table]
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

Alıntı:
[table border="0" cellpadding="6" cellspacing="0" width="100%"] [tr] [td class="alt2" style="border: 1px inset ;"] [color=#007700]if([/color][color=#0000bb]$id[/color][color=#007700]!=[/color][color=#0000bb]10000[/color][color=#007700]){[/color] [/td] [/tr] [/table]
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.
Sayfa başına dön Aşağa gitmek
http://www.arenafutbol.org
 
PHP Bot Yapımı - PHP Bot Yazımı Anlatım
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Forma Yapımı / Videolu Anlatım
» Pankart Yapımı / Videolu Anlatım
» Canlı Anlatım
» Besin Piramiti Resimli Anlatım
» Warped Effekti (Resimli Anlatım)

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ArenaFutbol | Futbol'a Dair Her Şey :: AF Cafe :: Eğlence :: Internet Dünyası :: WebMaster & MSN-
Buraya geçin: