11 Mart 2015 Çarşamba

Asp.Net İle Bot Yapımı Bir Web Sayfasına Login (Kullanıcı Girişi) Olarak Veri Çekmek

Yaptığım denemelerde pek başarılı sonuçlar alamadım. Birçok Web Sitesi Bot ile yapılan otomatik çekimlere karşı önlemler almış durumda ve bunları aşmak içinde benim daha çok fırın ekmek yemem lazım. Şu an için çok fazla güvenlik önlemi olmayan basit bir siteye olan üyeliğimden yararlanarak yaptığım bir örneği vermek istiyorum.
Sayfama verileri göstermek için bir adet Label nesnesi çektim. Üyeliğim olan veb sayfasının Kullanıcı Girişi Sayfasını açtım ve kaynak kodunu görüntüledim. Buradaki form nesnesinde bulunan username ve password alanlarının form adlarını aldım. Ve Sayfamın Wiev Code kısmında PageLoad() olayının içine aşağıdaki kodları yazdım ;
string URLAdres = “http://www.urladresiniz/Login.asp;//Login olunacak web adresi sayfası
string postEdilenLoginBilgileri = “UserNameArea=kuladınız&PaswordArea=Şifreniziyazın”;//Login sayfasındaki Form Elemanlarının ID veya Name ve Değerleri
HttpWebRequest WebSayfasiIstek = (HttpWebRequest)WebRequest.Create(URLAdres);//programsal olarak veri gönderebilmek için öncelikle sayfanın url’si ile birlikte bir HttpWebRequest oluşturmalıyız
WebSayfasiIstek.Method = “POST”;//Web request’im method olarak HTTP POST veya GET olabilir
WebSayfasiIstek.Referer = URLAdres;
WebSayfasiIstek.ContentType = “application/x-www-form-urlencoded”;////POST isteği genellikle “application/x-www-form-urlencoded” içerik türüne sahiptir ve gönderilen her bir anahtar-değer ikilisi birbirinden “&” karakteri ile ayrılmaktadır. Anahtar ve değer arasında ise “=” karakteri yer almaktadır. Gönderilen veri içerisindeki boşluklar “+” karakteri ile yer değiştirdikten sonra da kalan diğer karakterlere URL encoding uygulanır.
WebSayfasiIstek.ContentLength = postEdilenLoginBilgileri.Length;//Göndereceğimiz içeriğin boyutu belirleme
StreamWriter GelenIstekverileri = new StreamWriter(WebSayfasiIstek.GetRequestStream());//Son olarak da veri istek stream’i içerisine yazılmalı
GelenIstekverileri.Write(postEdilenLoginBilgileri);//yazarken login biliglerinide gönderdik.
GelenIstekverileri.Close();
//Geri Dönen Verileri okuma
HttpWebResponse WebSayfasiKarsilik = (HttpWebResponse)WebSayfasiIstek.GetResponse();//Gelen veriler için karşılık oluştur.
StreamReader GelenKarsilikVerileri = new StreamReader(WebSayfasiKarsilik.GetResponseStream(), Encoding.GetEncoding(“ISO-8859-9″));//Son olarak da veri istek stream’i içerisine yazılmalı ve okunmalı
string SonuclariOku = GelenKarsilikVerileri.ReadToEnd();
SonuclariOku = SonuclariOku.Replace(“src=\””, “src=\”http://www.urladresiniz.com/”);//bu ve alttaki satırda adrsler local olduğu için yol sorunları çıkıyordu. onu düzelttim ama her sayfada bu satırlar değişebilir
SonuclariOku = SonuclariOku.Replace(“href=\””, “href=\”http://www.urladresiniz.com/”);
GelenKarsilikVerileri.Close();
Label1.Text = SonuclariOku;//Sonuçları yazdır.
Not: Anladığım kadarı bu kadar ancak bu iş biraz daha teferruat istiyor.
Encoding.GetEncoding(ISO-8859-9″), Encoding.GetEncoding(“ISO-8859-1″),Encoding.GetEncoding(utf-8) ifadeleri sayfanın kullandığı dille ilgili kaynak kodundan hangisini seçeceğinizi bulabilirsiniz.

Hiç yorum yok :

Yorum Gönder