Merhabalar ben Bunjo, bu konuda "Proxy" kullanarak Ruby'de nasıl http(s) isteklerinizi yapableceğinizi anlatacağım.
Proxy Nedir?
Proxy, bir ağ üzerindeki bilgisayarların, kullanıcıların ve diğer kaynakların, diğer ağ servislerine veya kaynaklarına erişimlerini sağlayan bir ara sunucu veya hizmettir. Temelde, proxy sunucu, bir kullanıcının isteğini alır, bu isteği hedef sunucuya iletir, hedef sunucudan gelen yanıtı alır ve bu yanıtı başlangıçtaki kullanıcıya iletir.
Proxylerin birçok farklı kullanım amacı vardır:
İnternet Erişimini Kontrol Etmek: Kuruluşlar, işletmeler veya okullar gibi yerlerde, belirli web sitelerine erişimi engellemek veya izlemek için proxyler kullanılabilir. Bu, çalışanların işle ilgili web sitelerine erişimini kontrol etmek veya çocukların zararlı içeriklere erişimini engellemek için kullanılabilir.
Gizliliği ve Güvenliği Sağlamak: Proxyler, kullanıcıların gerçek IP adreslerini gizlemek veya anonimleştirmek için kullanılabilir. Bu, internet üzerinde gezinirken gizliliği korumak isteyenler veya bölgesel kısıtlamaları aşmak isteyenler tarafından tercih edilir. Ayrıca, bazı proxyler, kullanıcıların internet trafiğini şifreleyerek ve güvenliği artırarak, açık ağlarda (örneğin, halka açık Wi-Fi ağlarında) güvenliğini sağlar.
İnternet Erişimini Hızlandırmak: Proxyler, sıkça talep edilen kaynakları yerel olarak önbelleğe alarak ve veri sıkıştırması gibi teknikler kullanarak internet erişimini hızlandırabilir. Bu, büyük bir ağ üzerinde bant genişliği tüketimini azaltabilir ve kullanıcıların daha hızlı yanıt almasını sağlayabilir.
Girişim ve Ağ Güvenliği: Proxyler, ağ trafiğini izleyerek kötü amaçlı yazılımları engelleyebilir, zararlı web sitelerine erişimi engelleyebilir ve gelen ve giden verileri filtreleyebilir. Bu, ağ güvenliğini artırmak için kullanılabilir ve kuruluşların bilgi güvenliğini sağlamasına yardımcı olabilir.
Proxyler, birçok farklı protokolü destekleyebilir, en yaygın olanları HTTP, HTTPS, FTP ve SOCKS'tur. Bu protokoller, web trafiği, dosya aktarımları ve diğer ağ iletişimi türleri için proxy kullanımını sağlar.
Proxyler, birçok farklı protokolü destekleyebilir, en yaygın olanları HTTP, HTTPS, FTP ve SOCKS'tur. Bu protokoller, web trafiği, dosya aktarımları ve diğer ağ iletişimi türleri için proxy kullanımını sağlar.
Proxy Türleri Nelerdir?
Saydam (Transparent) Proxy Sunucuları
Ücretsiz oldukları için en çok tercih edilenler arasındadır. En büyük sıkıntısı;IP gizleme işini tam olarak gerçekleştirememesidir. Veri trafiği için de herhangi bir şifreleme yoktur.
Anonim Proxy Sunucuları
IP adresinizi gizlemek için kullanılabilen sunucular, bu konuda yüksek oranda başarı sağlayabilirler. En büyük dezavantajlarından biri ise şifreleme konusunda aynı başarıyı gösterememeleridir. Ücretsiz, trafik kotalı ve ücretli olarak tercih seçenekleri vardır.
Elit Proxy Sunucuları
IP adresinizi gizleme ve web trafiğinizi şifreleme konusunda çok başarılıdır. Sunucular arasında en güvenilir ve en hızlı bağlantı sağlayabilir. Sadece deneme süreleri ücretsiz olarak kullanılır. Özellikle şirketler bu sunucu türünü daha çok tercih etmektedir.
Bağlantı türüne göre de ise iki farklı sunucusu bulunur:
Bağlantı türüne göre de ise iki farklı sunucusu bulunur:
HTTP (Web) Proxy Sunucuları
Genel olarak IP adresini gizlemek ve hızlı İnternet erişimi sağlamak amacı ile kullanılır. Yalnızca web sitelerinin ziyaretinde kullanılabilir. HTTP protokolü dışında hiçbir protokole bağlanmayı sağlamaz. Engellenen sitelere bağlanmak için en çok tercih edilen sunucu türüdür. Anonim, transparen ve elit değişik biçimleri kullanılabilir.
SOCKS Proxy Sunucuları
HTTP sunucularına göre çalışması daha yavaştır. SMTP ve FTP gibi sunucuları destekler. Yavaş çalıştığı için gerçek zamanlı çevrimiçi oyun oynamak için uygun değildir. SMTP desteğine rağmen, e-posta trafiği için kullanılması tavsiye edilmez
Alıntı: Proxy Nedir? Proxy Ne İşe Yarar? | Millenicom Blog
HTTP Proxy Nasıl Çalışır?
İstemci İsteği: İstemci (genellikle bir web tarayıcısı), bir web sitesine erişmek için bir HTTP isteği yapar.
İsteğin içerisinde hedef web sitesinin URL'si ve isteğin türü (GET, POST, vb.) bulunur.
Proxy Sunucu İstemi Alır: İstemci, isteği belirtilen proxy sunucusuna gönderir. Bu, istemcinin ağ yapılandırmasında belirtilmiş bir HTTP proxy sunucusudur.
İstemci, isteği doğrudan hedef sunucuya değil, proxy sunucusuna gönderir.
Proxy Sunucusu İsteği Alır ve İşler: Proxy sunucusu, isteği alır ve isteğin hedef web sitesine yönlendirilmesi için gerekli işlemleri yapar. Proxy sunucusu, isteğin içeriğini ve başlıklarını kontrol edebilir, kimlik doğrulaması yapabilir veya içeriği önbelleğe alabilir.
Hedef Sunucuya Yönlendirme: Proxy sunucusu, işlediği isteği hedef web sitesine (örneğin, bir web sunucusuna) iletmek için bir HTTP isteği yapar.
Bu istek, hedef sunucunun URL'sini, isteğin türünü ve isteğe eklenen herhangi bir veriyi içerir.
Hedef Sunucudan Yanıt Alınır: Hedef sunucu, proxy sunucusuna isteği işler ve isteğe yanıt verir.
Yanıt genellikle istemcinin isteğine uygun bir HTTP yanıtıdır (200 OK, 404 Not Found, vb.).
Proxy Sunucusu Yanıtı Alır ve İşler: Proxy sunucusu, hedef sunucudan gelen yanıtı alır ve gerektiğinde işler.
Yanıtı istemciye iletmek için gerekli kontrolleri yapabilir ve gerekirse yanıtı önbelleğe alabilir.
İstemciye Yanıt İletilir: Proxy sunucusu, hedef sunucudan gelen yanıtı alır ve bunu istemciye iletmek için gereken HTTP yanıtını oluşturur.
Bu yanıt, hedef sunucunun yanıtının bir parçasıdır ve istemciye gönderilir.
Kısaca:
Ve dönüt içinde aynı yol izlenir.
NET/HTTP İle HTTP Proxy Kullanımı
Alıntı: Proxy Nedir? Proxy Ne İşe Yarar? | Millenicom Blog
HTTP Proxy Nasıl Çalışır?
İstemci İsteği: İstemci (genellikle bir web tarayıcısı), bir web sitesine erişmek için bir HTTP isteği yapar.
İsteğin içerisinde hedef web sitesinin URL'si ve isteğin türü (GET, POST, vb.) bulunur.
Proxy Sunucu İstemi Alır: İstemci, isteği belirtilen proxy sunucusuna gönderir. Bu, istemcinin ağ yapılandırmasında belirtilmiş bir HTTP proxy sunucusudur.
İstemci, isteği doğrudan hedef sunucuya değil, proxy sunucusuna gönderir.
Proxy Sunucusu İsteği Alır ve İşler: Proxy sunucusu, isteği alır ve isteğin hedef web sitesine yönlendirilmesi için gerekli işlemleri yapar. Proxy sunucusu, isteğin içeriğini ve başlıklarını kontrol edebilir, kimlik doğrulaması yapabilir veya içeriği önbelleğe alabilir.
Hedef Sunucuya Yönlendirme: Proxy sunucusu, işlediği isteği hedef web sitesine (örneğin, bir web sunucusuna) iletmek için bir HTTP isteği yapar.
Bu istek, hedef sunucunun URL'sini, isteğin türünü ve isteğe eklenen herhangi bir veriyi içerir.
Hedef Sunucudan Yanıt Alınır: Hedef sunucu, proxy sunucusuna isteği işler ve isteğe yanıt verir.
Yanıt genellikle istemcinin isteğine uygun bir HTTP yanıtıdır (200 OK, 404 Not Found, vb.).
Proxy Sunucusu Yanıtı Alır ve İşler: Proxy sunucusu, hedef sunucudan gelen yanıtı alır ve gerektiğinde işler.
Yanıtı istemciye iletmek için gerekli kontrolleri yapabilir ve gerekirse yanıtı önbelleğe alabilir.
İstemciye Yanıt İletilir: Proxy sunucusu, hedef sunucudan gelen yanıtı alır ve bunu istemciye iletmek için gereken HTTP yanıtını oluşturur.
Bu yanıt, hedef sunucunun yanıtının bir parçasıdır ve istemciye gönderilir.
Kısaca:
Ve dönüt içinde aynı yol izlenir.
NET/HTTP İle HTTP Proxy Kullanımı
Ruby:
require 'net/http'
# Proxy bilgileri
proxy_address = '202.131.65.110'
proxy_port = 80
# Hedef URL
url = URI::HTTP.build(host: 'example.com', path: '/')
# HTTP isteği oluşturma
request = Net::HTTP::Get.new(url)
# Proxy ayarları
http = Net::HTTP.Proxy(proxy_address, proxy_port).new(url.host, url.port)
http.use_ssl = (url.scheme == 'https')
# Proxy üzerinden istek yapma
response = http.request(request)
puts response.body
require 'net/http': Kodun başında, net/http kütüphanesini kullanacağımızı belirtir. Bu kütüphane, HTTP isteklerini yapmak ve yanıtları işlemek için kullanılır.
proxy_address ve proxy_port: HTTP proxy'nin adresi ve port numarası olarak tanımlanır. Bu bilgiler, proxy üzerinden istek yaparken kullanılacak olan proxy'nin konfigürasyonunu belirler.
url: Hedef URL, URI::HTTP.build metodu kullanılarak oluşturulur. Bu URL, example.com ana bilgisayarına yapılan bir HTTP isteğini temsil eder.
request: HTTP isteği, Net::HTTP::Get.new(url) ile oluşturulur. Bu istek, hedef URL'deki belirli bir kaynağı almak için GET metodunu kullanır.
http: HTTP bağlantısı, proxy ayarlarıyla oluşturulur. Net::HTTP.Proxy(proxy_address, proxy_port).new(url.host, url.port) ifadesiyle bir HTTP bağlantısı oluşturulur. Eğer URL şeması HTTPS ise, http.use_ssl = true ile SSL kullanımı etkinleştirilir.
response: HTTP isteği, oluşturulan HTTP bağlantısı üzerinden http.request(request) ile gönderilir. Bu, isteğin proxy aracılığıyla hedef sunucuya gönderilmesini sağlar. Ardından, response değişkenine yanıt atanır.
puts response.body: Yanıtın gövdesi, response.body kullanılarak konsola yazdırılır. Bu, hedef URL'den alınan içeriğin ekrana basılmasını sağlar.
Ücretsiz Proxy için kullanabilirsiniz: Get Unlimited Residential Proxies for $6 | Geonode
Eğer Proxy bağlantınız kullanıcı adı ve şifre ile korunuyorsa:
proxy_address ve proxy_port: HTTP proxy'nin adresi ve port numarası olarak tanımlanır. Bu bilgiler, proxy üzerinden istek yaparken kullanılacak olan proxy'nin konfigürasyonunu belirler.
url: Hedef URL, URI::HTTP.build metodu kullanılarak oluşturulur. Bu URL, example.com ana bilgisayarına yapılan bir HTTP isteğini temsil eder.
request: HTTP isteği, Net::HTTP::Get.new(url) ile oluşturulur. Bu istek, hedef URL'deki belirli bir kaynağı almak için GET metodunu kullanır.
http: HTTP bağlantısı, proxy ayarlarıyla oluşturulur. Net::HTTP.Proxy(proxy_address, proxy_port).new(url.host, url.port) ifadesiyle bir HTTP bağlantısı oluşturulur. Eğer URL şeması HTTPS ise, http.use_ssl = true ile SSL kullanımı etkinleştirilir.
response: HTTP isteği, oluşturulan HTTP bağlantısı üzerinden http.request(request) ile gönderilir. Bu, isteğin proxy aracılığıyla hedef sunucuya gönderilmesini sağlar. Ardından, response değişkenine yanıt atanır.
puts response.body: Yanıtın gövdesi, response.body kullanılarak konsola yazdırılır. Bu, hedef URL'den alınan içeriğin ekrana basılmasını sağlar.
Ücretsiz Proxy için kullanabilirsiniz: Get Unlimited Residential Proxies for $6 | Geonode
Eğer Proxy bağlantınız kullanıcı adı ve şifre ile korunuyorsa:
Ruby:
require 'net/http'
# Proxy bilgileri
proxy_address = '202.131.65.110'
proxy_port = 80
username = 'username'
password = 'password'
# Hedef URL
url = URI::HTTP.build(host: 'example.com', path: '/')
# HTTP isteği oluşturma
request = Net::HTTP::Get.new(url)
# Proxy ayarları
http = Net::HTTP.Proxy(proxy_address, proxy_port, username, password).new(url.host, url.port)
http.use_ssl = (url.scheme == 'https')
# Proxy üzerinden istek yapma
response = http.request(request)
puts response.body
Proxy İsteğin İncelenmesi
Okuyan herkese teşekkür ederim.
İyi forumlar!
Son düzenleme: