30 Haziran 2015 Salı

class Net::HTTP

HTTP Client API For Ruby

Ruby ile bir web sitesini crawl etmek istediğimde iki işlemi yapmak zorunda olduğumu öğrendim. Bunlar Request ve Response işlemleri. Bu yazımda baştan adım adım kod örnekleriyle açıklamalarda bulunacağım. Öncelikle bazı tanımların üstünde durmak istiyorum :)

HTTPS(Secure Hyper Text Transfer Protocol): HTTP'nin güvenli ağ protokolü ile birleştirilmiş halidir. Klasik HTTP protokolüne SSL protokolünün eklenmesiyle oluşturulur. İnternette sunucular ve son kullanıcılar arasında bilgilerin başkaları tarafından okunamayacak şekilde aktarılmasını hedefler.

HTTP(Hyper Text Transfer Protocol): İnternette sunucular ve son kullanıcılar arasında bilgilerin aktarılmasını hedefler. Uygulama katmanında yer alır.

URI(Uniform Resource Identifier): Web üzerinde belli bir kaynağa ulaşmak için kullanılan belli bir formata sahip karakter dizisidir.

URL(Uniform Resource Locator): Teknik söylem ve yazım kullanımlarında URI yerine kullanılır.

Web Crawling: Web sitelerini sıralı bir şekilde gezinerek bütün linklerini ya da  bizim belirlediğimiz sayıda linklerini elde etmektir.

Bütün örnek kodların başına NET::HTTP yüklenmiş varsayılır:






GET etme işleminde veriyi sadece request ederiz kaydetme yoktur.
POST işleminde ise gönderilen veriyi istersek veritabanına kaydedebiliriz.

GET etme işlemi yalnız başına, URI yardımıyla veya dinamik parametrelerle birlikte yapılır:

GET:





GET by URI:





GET with Dynamic Parameters:









NET::HTTP kullanımı:








start: hızlı bir şekilde bir tane HTTP server için bir bağlantı oluşturur.
new: eğer kendi kendine kapanmayan bir bağlantılı çoklu HTTP kullanmak istersek.
finish: bağlantıyı elle kapamak için.

Dataların Response Edilişi:

















Yönlendirmelerin Takibi:
















Headerların Set Edilişi:














Akış Response Bodyleri:















HTTPS ve SSL kullanımı:











Proxyler:







Net::HTTP http_proxy den otomatik olarak bir proxy oluşturur.

Bir Web Crawler yazma maceramın ilk adımı olan bu işlemleri sizinle paylaşmak istedim umarım yararlı olmuştur ilgilenenlere. Diğer paylaşımlarımda görüşmek üzere teşekkür ederim :)