Bu aralar TCP/UDP tarzı haberleşme protokollerine, portlardan veri okuma ve gönderme meselelerine sardım biraz. Gene bunlarla alakı bir program paylaşacağım. Evet web sayfasından HTML kodları nasıl çekilir sorusunun cevabı tam olarak bununla alakalı.
Nasıl mı ?
Bildiğiniz gibi 80 portu http portudur. Yani bir site, bilgisayarımızın 80 portuna html kodlarını gönderir. Bilgisayarımızdan tarayıcıyı açıp www.kodblogum.com yazdığımızda, kodblogum’un bulunduğu sunucu bizim isteğimize karşılık olarak 80 portuna kodları gönderir. Tarayıcımız da aldığı html kodlarını dönüştürür ve karşımıza son halini çıkarır.
İşte programımız yazılan sitenin 80. portumuza gönderdiği kodları alıyor ve ekrana direk kodları basıyor. Karşımıza getirdiği kodlar siteye sağ tıklayıp sayfa kaynağını görüntüle (Ctrl U) de çıkan kodların aynısıdır. Tek fark sitenin bize özel gönderdiği sesion ve cookie leride görebiliriz.
Kodlar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Net.Sockets; namespace GetHtmlCode { class Program { static void Main(string[] args) { string server; Console.WriteLine("Site adresini giriniz: "); server = Console.ReadLine(); Console.WriteLine("------------------\nSite Kodları\n------------------"); TcpClient client = new TcpClient(server, 80); StreamReader sr = new StreamReader(client.GetStream()); StreamWriter sw = new StreamWriter(client.GetStream()); try { sw.WriteLine("GET / HTTP/1.0\n\n"); sw.Flush(); string data = sr.ReadLine(); while (data != null) { Console.WriteLine(data); data = sr.ReadLine(); } client.Close(); } catch { } Console.ReadLine(); //kapanmadan bekle } } } |
Ben kodları sadece konsol ekranında gösterdim. İsterseniz string bir değere atayıp split, include vb. fonksiyonları kullanabilirsiniz. İsterseniz de txt, html olarak kayıt edip siteyi indirebilirsiniz.
*Program çıktısı görselde ki gibidir.
Proje dosyası: https://github.com/fatihyldrim/GetHtmlCode