c# ile ilgili sorum

Haylaz4535

Yeni üye
16 May 2016
42
0
webbrowser da js kodları gözükmediğinden çalışmadığından istediğim sitenin verilerine ulaşamıyorum c# bilen bir arkadaş yardımcı olabilir mi
 

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,053
4
390
Ankara
hocam arkadas zannediyorum bir yerlerden veri cekmeye calisiyor javascript ile veriler alan ve gosteren bir sayfa oldugundan istedigi konuma ulasamiyor sanirim inu kast ediyor

Haklısın..

Arkadaş özür dilerim, kafamın basmadığı bir ana denk gelmiş, yanlış okumuşum. Kusuruma bakma, yaşlılığıma ver.

Ceza olarak, hangi site vs. belirtirsen tam olarak nasıl yapıldığını anlatıp kaynak kodlarını aktarırım.

Ama kısaca anlatayım; webbrowser'da bir çok javascript çalışır. Ama mesela jQuery iyi çalışmaz. Çünkü IEXplore engine'dır yani internet explorer gibi görünür ama internet explorer'ın bütün kapasitesine sahip değildir, elemanlar buna göre özellikle düzenleme yapmamışlardır. Bundan dolayı iki yöntemimiz vardır;

1. shdocvw.dll adındaki dll'i kullanırsın, yani internet explorer engine kullanırsın. Dokümanı işlemek için de mshtml.dll'i kullanırsın. Programın gerçek bir internet explorer penceresi açar ve bundan dolayı da bütün scriptler çalışır. İnternet explorer'ın yeni versiyonları piyasadaki her siteyi belki mükemmel görünümde göstermez ama scriptleri tam hakkıyla çalıştırır. Bizim de ihtiyacımız olan scriptler değil mi?

2. Selenium kullanırsın. Güzel kütüphanedir, özellikle trojan vs. yazarken özellikle mesela "kardeş flash çalışsın sorma bile" diyebildiğimiz için çok yararlıdır. Ama ilk olarak kullanıcı'da senin seçtiğin browser olmalıdır. İkinci olarak da mesela bir trojan yazıyorsan, boyutu çok büyütür.

Mesela örnek yazalım. Yeni bir console app oluşturdum. Proje üstünde sağ tıklayıp Add->Reference dedim. İlk referansımız COM içinde arama yapacağız, "Microsoft Internet Controls".. Bu shdocvw.dll'i ekleyecek. İkincisi "assemblies" içinde "Microsoft.mshtml".. Son olarak da System.Windows.Forms'u ekliyoruz ama bunun tek sebebi Application.DoEvents() diyebilmek. Bekleme yaparken windows'a "normal eventleri de hallet, kilitlenmiş gibi görünme" diyeceğiz yani.

Bunları ekleyince, basit bir kod yazabiliriz...

Kod:
class Program
    {
        //Single thread apartment olmalı. Yoksa İnternet explorer adam gibi çalışmaz.
        [STAThread]
        static **** Main(string[] args)
        {
            //Yeni bir internet explorer açar.
            SHDocVw.InternetExplorer browserPenceresi = new SHDocVw.InternetExplorer();
            //Basit üfürükten javascript hatalarında, yok ssl sorunlarında filan mesaj kutusu açamasın, sessiz olsun.
            browserPenceresi.Silent = true;
            //Burada başka visible=true dersin ki ne oluyor görürsün, sonradan visible=false dersin görünmez olur.
            browserPenceresi.Visible = true;
            //Navigate2 ile istediğin siteye yönlendirirsin.
            browserPenceresi.Navigate2("http://www.osman.com");
            //Browser "meşgul" oldukça veya durumu "hazır" harici bir şey oldukça beklemek gerekir.
            while (browserPenceresi.Busy || browserPenceresi.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) System.Windows.Forms.Application.DoEvents();
            //Dokümanı mshtml dokümanı olarak alırsın.
            mshtml.HTML******** dokuman= (mshtml.HTML********)browserPenceresi.********;
            //Mesela bir textbox'ın içini dolduralım.
            dokuman.getElementById("textboxID'si").setAttribute("value", "deger");
            //Bir checkbox'ı işaretleyelim.
            dokuman.getElementById("checkboxID'si").setAttribute("checked", "checked");
            //bir düğmeye click edelim.
            dokuman.getElementById("dugmeID'si").click();
            //Ekstra javascript çalıştıralım.
            dokuman.parentWindow.execScript("alert('Ehe ehe script çalışıyor');");
        }
    }

Şu adresten kodu bu *****'lar olmadan alabilirsin: https://codeshare.io/5X08yn
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.