folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Webresponse Metodu İle Basit Bot Yapımı - C#.NET



Webresponse Metodu İle Basit Bot Yapımı - C#.NET

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    merhaba arkadaşlar;

    Bir çok kişinin aradığı ama türkçe kaynak eksikliğinden dolayı bulamadığı, internet aleminde "başka sitelerden veri çekmek" yani "bot" denilen olayı anlatmaya çalışacağım. Burada amacım size sadece yöntemi anlatmaktır o yüzden çok ufak bir örnekle anlatıcam.

    Şimdi öncelikle

    Webresponse tipinde bir değişken tanımlıyoruz;

    WebResponse cevap;

    Ardından bir WebRequest yaratmamız lazım, bu webrequest'den gelen cevabı webresponse ile alacağız.

    WebRequest yaratalım;

    WebRequest istek = HttpWebRequest.Create("http://www.google.com.tr");

    ardından, cevap(webresponse) adlı değişkeninize, istek(webrequest) yaptığımız web sitesinden dönen cevabı veriyoruz. o da şöyle;

    cevap = istek.ReadToEnd();

    ardından, StreamReader ile cevap'taki html kodlarını okuyabiliriz.

    StreamReader donenBilgiler = new StreamReader(cevap.GetResponseStream());

    artık elimizde, html kodlar mevcut. yani bize gereken şeyler. onuda bir string değişkene atayıp parse işlemi yapabiliriz;

    string gelen = gelenCevap.ReadToEnd();

    Ben basit bir örnek yapıcam, google.com.tr sitesinde'ki title'ı okuycam.

    bu işlemi yaparken, string metotlarından olan "indexof" metodundan yararlanıcam, bu metot ne işe yarar derseniz. Sizin vermiş olduğunuz karakterin veya string ifadenin, text içinde kaçınca index'te olduğunu geri döner.

    int titleIndexBaslangici = gelen.IndexOf("<title>") + 7;

    şimdi bu satırda, elimizde ki html kodlarında, <title> tagının kaçınca karakterden başladığını aldık, neden 7 ekledik derseniz. Eğer 7 eklemezsek, elimizde ki indexno ile substring yaparsak, elimize <title> tag'ı da gelicek. ama biz <title> tagının ">" bittiği karakterden sonrasını istiyoruz. o yüzden 7 ekledik (<title> 7 karakter)

    Ardından <title> tag'ının bittiği index'i almamız lazım, onu da

    int titleIndexBitisi = gelen.Substring(titleIndexBaslangici).IndexOf("</title>");

    Bu satırda ise, <title>'ın bittiği yerden itibaren aldık (substring yardımı ile). Ardından </title> tagının bittiği, index'i aldık. burada bir ekleme söz konusu değil, çünkü tag zaten bitti.

    label1.Text = gelen.Substring(titleIndexBaslangici, titleIndexBitisi);

    En son da label'ın textine Aldığımız veriyi bastık.

    Evet çok basit bir örnek'te olsa. sizin olayı kavramanıza yettiğini düşünmekteyim. Html kodlarını aldıktan sonra farklı bir yöntem ile de parse edebilirsiniz. Regular Expression gibi.

    Son olarak Programdan bir kaç resim;

    http://img72.imageshack.us/img72/1989/41918173.png

    http://img517.imageshack.us/img517/9587/24047645.png

    http://img252.imageshack.us/img252/3849/31134256.png

    Kaynak belirtmeden lütfen paylaşmayınız.Konu hakkında sorularınızı lütfen konu altından sorunuz.

    Herkese İyi Çalışmalar


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    C# 'da html kodlarını okuyabilmek için Html Agility gibi birşey vardı zamanında kurcalamamıştım ama becerememiştim.Sonra biryerde C#'ın html taglarını desteklediğini okumuştum ama ayrıntı bulamamıştım.

    Bu konu hakkında bilgin varmı?


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    renegadealien
    renegadealien's avatar
    Üstün Hizmet Madalyası Savaş Madalyası Başarı Madalyası Üstün Hizmet Madalyası Developer Madalyası
    Kayıt Tarihi: 23/Mart/2003
    Erkek

    Sonra buna multithread ile aynı anda 50 kere calışmasını sağla, sonra title okuduktan sonra tekrardan okumasını sağla her biri için,

    sonra başlat cubuğunda vsde görünmeyecek şekilde ayarlar,

    git üniversitedeki 5-10 bilgisayara yükle...

    tmm işte bitti gitti...


    10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Kendi özlü sözümdür, kaynak belirterek kullanınız.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    TeRRoR bunu yazdı:
    -----------------------------

    C# 'da html kodlarını okuyabilmek için Html Agility gibi birşey vardı zamanında kurcalamamıştım ama becerememiştim.Sonra biryerde C#'ın html taglarını desteklediğini okumuştum ama ayrıntı bulamamıştım.

    Bu konu hakkında bilgin varmı?


    -----------------------------

    bende bu konuyu araştırırken yabancı forumlarda rastladım dediğine, malesef benimde o konuda bilgim yok.

    edit: aslına bakılırsa, webbrowser kontrolü ile bu işlemler daha kolay hale geliyor :)

    @renegadealien

    şeytanice, hiç öyle şeyler düşünmem :P :))


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    SharpShooter bunu yazdı:
    -----------------------------

    TeRRoR bunu yazdı:
    -----------------------------

    C# 'da html kodlarını okuyabilmek için Html Agility gibi birşey vardı zamanında kurcalamamıştım ama becerememiştim.Sonra biryerde C#'ın html taglarını desteklediğini okumuştum ama ayrıntı bulamamıştım.

    Bu konu hakkında bilgin varmı?


    -----------------------------

     

    bende bu konuyu araştırırken yabancı forumlarda rastladım dediğine, malesef benimde o konuda bilgim yok.

    edit: aslına bakılırsa, webbrowser kontrolü ile bu işlemler daha kolay hale geliyor :)

    @renegadealien

    şeytanice, hiç öyle şeyler düşünmem :P :))


    -----------------------------

    Bu C# ve bot üzerine çok kastım diyebilirim.

    Webbrowser da sadece body, head gibi basit şeyleri destekliyordu yanlış hatırlamıyorsam.

    En kesin çözüm sanırım regex ile ayrıştırmak sanırım.


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    TeRRoR bunu yazdı:
    -----------------------------

    SharpShooter bunu yazdı:
    -----------------------------

    TeRRoR bunu yazdı:
    -----------------------------

    C# 'da html kodlarını okuyabilmek için Html Agility gibi birşey vardı zamanında kurcalamamıştım ama becerememiştim.Sonra biryerde C#'ın html taglarını desteklediğini okumuştum ama ayrıntı bulamamıştım.

    Bu konu hakkında bilgin varmı?


    -----------------------------

    bende bu konuyu araştırırken yabancı forumlarda rastladım dediğine, malesef benimde o konuda bilgim yok.

    edit: aslına bakılırsa, webbrowser kontrolü ile bu işlemler daha kolay hale geliyor :)

    @renegadealien

    şeytanice, hiç öyle şeyler düşünmem :P :))


    -----------------------------

    Bu C# ve bot üzerine çok kastım diyebilirim.

    Webbrowser da sadece body, head gibi basit şeyleri destekliyordu yanlış hatırlamıyorsam.

    En kesin çözüm sanırım regex ile ayrıştırmak sanırım


    -----------------------------

    ben webbrowser'ı , mesela sayfada ki bir butona tıklamak, bir textbox'a bir şey yazmak vs gibi işlemlerde kullanıp, geri dönen html içeriği bu şekilde ayırıyorum. biraz amelece farkındayım ama işime yarıyor :))

    regex konusunda sonuna kadar katılıyorum.


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    SharpShooter bunu yazdı:
    -----------------------------

    TeRRoR bunu yazdı:
    -----------------------------

    SharpShooter bunu yazdı:
    -----------------------------

    TeRRoR bunu yazdı:
    -----------------------------

    C# 'da html kodlarını okuyabilmek için Html Agility gibi birşey vardı zamanında kurcalamamıştım ama becerememiştim.Sonra biryerde C#'ın html taglarını desteklediğini okumuştum ama ayrıntı bulamamıştım.

    Bu konu hakkında bilgin varmı?

     


    -----------------------------

    bende bu konuyu araştırırken yabancı forumlarda rastladım dediğine, malesef benimde o konuda bilgim yok.

    edit: aslına bakılırsa, webbrowser kontrolü ile bu işlemler daha kolay hale geliyor :)

    @renegadealien

    şeytanice, hiç öyle şeyler düşünmem :P :))


    -----------------------------

     

    Bu C# ve bot üzerine çok kastım diyebilirim.

    Webbrowser da sadece body, head gibi basit şeyleri destekliyordu yanlış hatırlamıyorsam.

    En kesin çözüm sanırım regex ile ayrıştırmak sanırım


    -----------------------------

     

    ben webbrowser'ı , mesela sayfada ki bir butona tıklamak, bir textbox'a bir şey yazmak vs gibi işlemlerde kullanıp, geri dönen html içeriği bu şekilde ayırıyorum. biraz amelece farkındayım ama işime yarıyor :))

    regex konusunda sonuna kadar katılıyorum.


    -----------------------------

    o tıklamadada foreach ile 1 saatte dönüyor dönüyor buluyor tam kasıntı.

    Regex ile yazdığım bir bot var ama bot işlemlerde Threading çok öne çıkıyor sanırım.İnternetten threadingleri  araştırırken threading ile normal class içerisinde yapılan işlem binlerce kat hızlı şekilde yapılıyordu hatta 3-4 farklı Threading yazmıştı adam.Belki o yöntemler uygulanırsa güzel bir bot yapılabilir.


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    TeRRoR bunu yazdı:
    -----------------------------

    SharpShooter bunu yazdı:
    -----------------------------

    TeRRoR bunu yazdı:
    -----------------------------

    SharpShooter bunu yazdı:
    -----------------------------

    TeRRoR bunu yazdı:
    -----------------------------

    C# 'da html kodlarını okuyabilmek için Html Agility gibi birşey vardı zamanında kurcalamamıştım ama becerememiştim.Sonra biryerde C#'ın html taglarını desteklediğini okumuştum ama ayrıntı bulamamıştım.

    Bu konu hakkında bilgin varmı?

     


    -----------------------------

    bende bu konuyu araştırırken yabancı forumlarda rastladım dediğine, malesef benimde o konuda bilgim yok.

    edit: aslına bakılırsa, webbrowser kontrolü ile bu işlemler daha kolay hale geliyor :)

    @renegadealien

    şeytanice, hiç öyle şeyler düşünmem :P :))


    -----------------------------

     

    Bu C# ve bot üzerine çok kastım diyebilirim.

    Webbrowser da sadece body, head gibi basit şeyleri destekliyordu yanlış hatırlamıyorsam.

    En kesin çözüm sanırım regex ile ayrıştırmak sanırım


    -----------------------------

    ben webbrowser'ı , mesela sayfada ki bir butona tıklamak, bir textbox'a bir şey yazmak vs gibi işlemlerde kullanıp, geri dönen html içeriği bu şekilde ayırıyorum. biraz amelece farkındayım ama işime yarıyor :))

    regex konusunda sonuna kadar katılıyorum.

    -----------------------------

    o tıklamadada foreach ile 1 saatte dönüyor dönüyor buluyor tam kasıntı.

    Regex ile yazdığım bir bot var ama bot işlemlerde Threading çok öne çıkıyor sanırım.İnternetten threadingleri  araştırırken threading ile normal class içerisinde yapılan işlem binlerce kat hızlı şekilde yapılıyordu hatta 3-4 farklı Threading yazmıştı adam.Belki o yöntemler uygulanırsa güzel bir bot yapılabilir


    -----------------------------

    evet dediğin gibi bu işlemi 3-4 parçaya bölüp, thread mantığı ile yaparsan korkunç performans kazançları olacaktır. Birde bir şey rica edicem. yazdığın uygulamayı paylaşabilme ihtimalin var mı incelemek isterim ?


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    Alıntı yapmadım,

    Kaynak kodlarını bulabilirsem eklerim çok önce yazmıştım hatta 1 tanede saldırı botu vardı kayıt floodu yapıyordu dandik bir siteye.


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    TeRRoR bunu yazdı:
    -----------------------------

    Alıntı yapmadım,

    Kaynak kodlarını bulabilirsem eklerim çok önce yazmıştım hatta 1 tanede saldırı botu vardı kayıt floodu yapıyordu dandik bir siteye.


    -----------------------------

    tamam hocam bulup , paylaşabilirsen güzel olur hem konu zenginleşmiş olur. ısrar etmemin sebebi türkçe kaynak malesef çok çok kısıtlı bu konuda. arayanlar daha kolay ulaşmalı bilgiye :)

    ellerine sağlık bu arada :)


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Musket
    Musket's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 09/Haziran/2002
    Erkek

    Webdeki controllere nasıl erişiyorsunki?

    Asıl bu konuda kaynak yok.

     

Toplam Hit: 8858 Toplam Mesaj: 12