/80Web Scraping
Web Scraping için Proxy Çözümü
Web scraping işlerinde istek dağıtımı, kuyruk, hız sınırı, yeniden deneme ve oturum yönetimi nasıl kurulur; hangi proxy türü hangi işe uyar, sınırları nelerdir.
Senaryo
Bir veri ekibi, herkese açık sayfalardan düzenli olarak ürün ya da içerik verisi çeker. Tek bir çıkış adresinden gelen yoğun istek akışı hız sınırına takılır; istekleri birkaç çıkış adresine yaymak ve her hedef için ayrı bir hız sınırı tanımlamak bu yükü dengeler.
Doğru proxy türü hedefe göre seçilir: sabit adres isteyen işler için ISP ya da Datacenter, bölgeye ve ev tipi ağa duyarlı hedefler için Residential, geniş adres havuzu isteyen işler için IPv6.
Tipik mimari
İşten hedefe dört adım: proxy katmanı, isteklerin nasıl dağıtıldığına bağlıdır.
- kaynakURL kuyruğuÇekilecek sayfalar, öncelik ve yeniden deneme sayısıyla kuyruğa girer.
- dağıtımİstek dağıtımıAlan adı başına eşzamanlılık ve hız sınırı uygulanır; hatalı yanıtlarda geri çekilme yapılır.
- proxyProxy katmanıİstekler uygun türdeki proxy üzerinden çıkış adreslerine dağıtılır.
- hedefHedef siteYanıtlar ayrıştırılır, ham veri ve hata kayıtları ayrı tutulur.
Önerilen ürünler
Öneriler bir başlangıç noktasıdır; ürün özelliklerini ve sınırlamalarını ürün sayfasında kontrol edin.
Geniş adres alanından çıkış sağlar; hedef IPv6 yayını yapıyorsa istek yükünü yaymak için uygundur. Yalnızca HTTP(S) desteklenir.
Varsayılan olarak sabit IP verir; kullanıcı adına ttl-0 eklenince her istekte farklı IP kullanılır.
Ev tipi sabit IPv4 adresi gerektiren, oturum sürekliliği önemli işler için.
GB bazlı çalışır; dönen ya da sticky oturum seçilebilir. Trafik hacmi belli işlerde maliyeti öngörülebilir kılar.
Mobil ağdan gelen, rotasyonlu çıkış gerektiren hedefler için.
Teknik uygulama ipuçları
Web scraping, bir sitedeki kamuya açık sayfaları programla gezip içindeki veriyi yapılandırılmış biçimde saklamaktır. Proxy bu işin yalnızca bir parçasıdır: istekleri birden çok çıkış adresine yayar ve bölgeye bağlı içeriğe erişmenizi sağlar. Hız sınırına saygı, hata yönetimi ve hukuki uyum ise proxy'den bağımsız olarak sizin tasarımınıza kalır.
Senaryo ve gereksinimler
Aynı yöntem çok farklı işlerde karşınıza çıkar. Gereksinimleri baştan yazmak, hangi proxy türünün gerekeceğini büyük ölçüde belirler.
- Katalog taraması: Binlerce ürün ya da ilan sayfası, günde bir ya da haftada bir geçilir. Oturum gerekmez; sayfalar bağımsızdır.
- Giriş gerektiren panel okuma: Kendi hesabınızla bir panele girip rapor çekersiniz. Oturum boyunca adresin değişmemesi gerekir.
- Bölgesel içerik toplama: Aynı sayfa, ülkeye ya da şehre göre farklı içerik gösterir. Çıkışın hedef bölgede olması gerekir.
- API benzeri uçlar: Sayfa değil JSON döndüren uçlar çağrılır. İstek sayısı yüksek, yük küçüktür.
Her senaryo için şu soruları yazılı hale getirin: günde kaç istek, hedef başına en fazla kaç eşzamanlı bağlantı, oturum gerekli mi, bölge önemli mi, hata olduğunda ne kadar bekleneceği. Bu yanıtlar olmadan proxy sayısı konuşmak anlamsızdır.
Proxy hangi sorunu çözer?
Proxy üç somut sorunu çözer.
Yükün dağıtılması. Bir hedef, tek bir adresten gelen yoğun isteği hız sınırıyla (rate limit) yavaşlatabilir. İstekleri birden çok çıkış adresine yaymak, her adresin tek başına yarattığı yükü azaltır. Bu, hız sınırını aşmanın yolu değildir; yalnızca sınırı adres başına uygulayan sitelerde işinizi yönetilebilir kılar. Sitenin toplam trafiğe koyduğu bir sınır varsa proxy sayısını artırmak bir şey değiştirmez, hızınızı düşürmeniz gerekir.
Bölgeye erişim. Fiyat, dil, stok ya da reklam çıkış adresinin konumuna göre değişebilir. İstediğiniz bölgeden çıkan bir proxy, o bölgedeki kullanıcının gördüğüne yakın bir sayfa verir.
Ağ kimliğinin ayrılması. Üretim sunucunuzun adresini hedefe göstermeden çalışmak ve farklı işleri farklı çıkışlara bölmek, bir işteki sorunun diğerini etkilemesini önler.
Proxy şunu çözmez: kötü tasarlanmış bir tarayıcının hedefi yormasını, robots.txt kurallarını, kullanım koşullarını ya da veri koruma yükümlülüklerini. Bunlar bir sonraki bölümlerde ele alınıyor.
Önerilen mimari
Sağlam bir scraping hattı beş parçadan oluşur: kuyruk, dağıtıcı, hız sınırlayıcı, yeniden deneme mantığı ve depolama.
İstek kuyruğu ve dağıtım
Her çekilecek adres bir kuyruğa girer; işçiler (worker) kuyruktan alır. Kuyruk, işi proxy'den ayırır: bir proxy düştüğünde iş kaybolmaz, başka bir işçi ve çıkışla yeniden denenir. Kuyruğa adresin yanında en az şu bilgileri koyun: hedef alan adı, deneme sayısı, istenen oturum anahtarı (varsa).
Hedef başına hız sınırı
Hız sınırını proxy başına değil hedef alan adı başına uygulayın. Bir alan adına aynı anda en fazla N bağlantı ve saniyede en fazla M istek gibi sınırlar koyun; bu değerleri küçük başlatıp hedefin tepkisine göre artırın. Hedefin cevap süresi uzuyor ya da hata oranı yükseliyorsa hızı kendiliğinden düşüren bir mekanizma ekleyin.
Yeniden deneme
Geçici hatalarda (bağlantı zaman aşımı, 429, 503) yeniden deneyin; kalıcı hatalarda (404, 410) denemeyin. Denemeler arasında üstel artan, rastgele sapmalı bir bekleme kullanın. Sunucu Retry-After başlığı gönderiyorsa ona uyun.
import random
import time
import requests
PROXY = "http://KULLANICI:PAROLA@PROXY_HOST:PROXY_PORT"
PROXIES = {"http": PROXY, "https": PROXY}
def getir(url, en_cok=4):
for deneme in range(en_cok):
try:
r = requests.get(url, proxies=PROXIES, timeout=(5, 20))
except requests.RequestException:
r = None
if r is not None and r.status_code == 200:
return r.text
if r is not None and r.status_code in (404, 410):
return None
bekle = 2 ** deneme + random.random()
if r is not None and r.headers.get("Retry-After", "").isdigit():
bekle = max(bekle, int(r.headers["Retry-After"]))
time.sleep(bekle)
return NoneBu örnek tek bir çıkış adresi kullanır; gerçek hatta aynı mantık, çıkış seçen bir katmanın arkasına yerleştirilir.
Oturum ve sticky ihtiyacı
Oturumsuz sayfalarda her isteğin farklı bir çıkıştan gitmesinde sakınca yoktur. Sepet, sayfalama imleci ya da giriş çerezi gibi durum taşıyan akışlarda ise bütün adımların aynı çıkıştan gitmesi gerekir; aksi halde hedef, oturumun başka bir ağdan sürdürüldüğünü görür. Bunu iki yolla çözersiniz: sabit adresli bir proxy kullanmak ya da dönen havuzda "sticky" oturum istemek. Residential Proxy sayfasına göre sticky modda aynı IP en fazla 24 saat korunur; Rotating Mobil Proxy için session ID eklenir, ancak sticky oturumun süresi belirtilmemiştir.
Depolama ve izleme
Ham yanıtı ve ayrıştırılmış veriyi ayrı saklayın; ayrıştırıcı bozulduğunda ham yanıttan yeniden üretirsiniz. Her çıkış için başarı oranı, ortalama cevap süresi ve hata kodu dağılımını kaydedin. Bir çıkışın sürekli hata vermesi, o çıkışı geçici olarak havuzdan çıkarmak için yeterli bir işarettir. Çıkışın çalışıp çalışmadığını hızlıca denemek için proxy kontrol aracı işe yarar.
Doğru proxy türünü seçmek
Aşağıdaki tablo yalnızca ürün sayfalarında doğrulanan özelliklere dayanır. Hız ve ülke listeleri ürün sayfalarında kesin tanımlı olmayabilir; ayrıntı için ilgili ürün sayfasına bakın.
| İhtiyaç | Uygun ürün | Dikkat edilecek nokta |
|---|---|---|
| Çok sayıda ayrı çıkış adresiyle geniş tarama | IPv6 Proxy | Hedefin AAAA kaydı olmalı; SOCKS5 için sipariş öncesi teyit gerekir |
| Sabit adresli, düşük maliyetli toplu istek | Datacenter Proxy | Adres bir veri merkezine kayıtlıdır, sıkı korumalı sitelerde ek doğrulama çıkabilir |
| Ülke, şehir düzeyinde bölgesel içerik | Residential Proxy | Ücret kullanılan GB'a bağlıdır; ülke listesi sayfada tam verilmemiştir |
| Kota yerine hız kademesiyle sürekli çalışan iş | Limitsiz Residential Proxy | Makul kullanım kuralı geçerlidir |
| Her istekte yeni mobil IP, isteğe bağlı sabitleme | Rotating Mobil Proxy | Türkiye paketlerinde SOCKS5 yoktur |
| Uzun süre aynı kalması gereken oturum | ISP Proxy | IP adedi ve süreyle fiyatlanır, çıkış sabittir |
IPv6 çıkışın sınırları
IPv6 Proxy paketleri adet bazlı fiyatlanır ve her pakette size özel bir /64 subnet verildiği belirtilir. Bu, tek bir istemciden çok sayıda farklı çıkış adresi türetmeyi mümkün kılar; ancak iki sınırı bilmeniz gerekir.
Birincisi hedefin erişilebilirliğidir. Hedef alan adının yalnızca A kaydı varsa (AAAA yoksa), çıkış ağında bir çeviri katmanı olmadıkça yalnızca IPv6 çıkışlı bağlantı ona doğrudan ulaşamaz. NAT64 çevirisi (RFC 6146 (yeni sekmede açılır)) bu boşluğu kapatabilir; ürün sayfası böyle bir katmandan söz eder ama kapsamı doğrulanamamıştır. Hedefi önceden test edin ve hangi hedeflerin çift yığınlı olduğunu kaydedin. Adres türleri ve /64 mantığı için IPv6 ön ek rehberine bakabilirsiniz.
İkincisi adres niteliğidir. Bu adresler subnet içinden tahsis edilen IPv6 adresleridir, ev bağlantısı IP'si değildir; bazı platformlar IPv6 aralıklarına daha temkinli yaklaşabilir. Rotasyon yöntemi de ürün sayfasında tanımlı değildir, bu yüzden çıkış seçimini kendi tarafınızda yapmayı planlayın.
Sık yapılan hatalar
- Hızı proxy sayısıyla ölçeklemek. Çıkış adresi eklemek, hedefin sunucu tarafındaki yükünü azaltmaz. Hedef alan adı başına toplam hızı sınırlamıyorsanız, siteye zarar verme riskiniz proxy sayınızla birlikte büyür.
- Hata kodunu yok saymak. 403 ve 429 yanıtını "başarılı" sayıp boş sayfa kaydetmek, veri setini sessizce bozar. Her yanıtı durum koduna ve içerik imzasına göre doğrulayın.
- Oturumlu akışı dönen çıkışla yürütmek. Giriş çerezi bir adresten alınıp başka bir adresten kullanılırsa oturum düşer ya da şüphe uyandırır.
- Sınırsız kota varsaymak. "Sınırsız" paketlerde de makul kullanım kuralı geçerlidir; bant genişliğini kesintisiz tam kapasiteyle kullanmak ihlal sayılabilir.
- Kimlik bilgisini kodun içine gömmek. KULLANICI ve PAROLA değerlerini ortam değişkeninde ya da gizli yönetim aracında tutun.
- Güvenilmeyen ağda SOCKS5 kimlik bilgisi göndermek. SOCKS5'te parola düz metin taşınır (RFC 1929 (yeni sekmede açılır)); bu yüzden güvenmediğiniz ağlarda bu bağlantıyı ek şifrelemeden geçirin.
- Hata ayıklamayı atlamak. Yeni bir çıkışı hatta almadan önce küçük bir örnekle sınayın.
Sorumlu kullanım
Scraping, teknik olarak mümkün olduğu için hukuken serbest değildir. Şu noktaları işin tasarım aşamasına koyun.
- robots.txt. Hedefin
robots.txtdosyasını okuyup yasaklı yolları taramayın. Python'da standart kütüphanedekiurllib.robotparserbunu yapar. - Kullanım koşulları. Birçok sitenin koşulları otomatik veri çekmeyi kısıtlar. Koşulları okuyun; resmi bir API ya da veri sunumu varsa onu tercih edin.
- Kişisel veri. Toplanan veri gerçek kişilere ait olabilir. Kişisel verinin işlenmesi için hukuki dayanak, amaçla sınırlılık ve saklama süresi gibi yükümlülükler, verinin açık olmasından bağımsız geçerlidir.
- Ölçülü hız. Hedef siteyi yavaşlatan bir tarama, kendi başına bir sorundur. Gün içi yoğun saatlerden kaçının, mümkünse koşullu istek (
If-Modified-Since,ETag) kullanın. - Yasalara uyum. Yasalara ve hedef sitenin kullanım koşullarına uyum sizin sorumluluğunuzdadır. Spam, dolandırıcılık, kimlik bilgisi denemesi ya da hizmeti aksatma amaçlı kullanım desteklenmez.
Proxy bir hukuki koruma sağlamaz. Bir işin yasal olup olmadığı verinin türüne, hedefin koşullarına ve yaşadığınız ülkenin mevzuatına bağlıdır; kuşkunuz varsa bir hukukçuya danışın.
Benzer bir hat, zamanlanmış toplu işler için veri toplama sayfasında da anlatılır. Güncel paketler ve fiyatlar için ilgili ürün sayfasına bakın; satın alma Sağlam Proxy (saglamproxy.com) üzerinden yapılır, örneğin IPv6 Proxy için satın alma sayfası (yeni sekmede açılır).
Sorumlu kullanım
Yasalara ve hedef sitenin kullanım koşullarına uyum sizin sorumluluğunuzdadır. Proxy, kuralları aşma aracı değildir ve engellenmeyeceğiniz anlamına gelmez.
- robots.txt yönergelerine, hız sınırlarına ve hedef sitenin API kurallarına uyun.
- Kişisel veri işliyorsanız hukuki dayanağınızı belirleyin; gereğinden fazlasını toplamayın.
- Yalnızca herkese açık veriyi çekin; robots.txt yönergelerine ve sitenin hız sınırlarına uyun, oturum gerektiren alanlara izinsiz girmeyin.
Sık sorulan sorular
Web scraping için kaç proxy gerekir?
Sabit bir sayı yoktur; belirleyen şey hedef sitenin kabul ettiği istek hızı ve sizin toplam iş yükünüzdür. Önce hedef için güvenli bir istek hızı bulun, ardından toplam isteği bu hıza bölerek gerekli çıkış adresi sayısını kestirin.
IPv6 proxy her siteyle çalışır mı?
Hayır. Hedefin AAAA kaydı yoksa yalnızca IPv6 çıkışlı bir bağlantı ona doğrudan ulaşamaz. [IPv6 Proxy](product:ipv6-proxy) sayfası bir NAT64/DNS64 çeviri katmanından söz eder; kapsamı doğrulanmadığı için önemli işlerden önce hedefte test edin.
Dönen proxy mi sabit proxy mi seçmeliyim?
Oturum gerektirmeyen, herkese açık sayfalarda dönen çıkış işinizi kolaylaştırır. Giriş yapılmış oturum ya da çok adımlı akış varsa aynı adresin korunduğu sabit ya da sticky çıkış gerekir.
Proxy kullanmak scraping'i yasal yapar mı?
Hayır. Proxy yalnızca isteklerin hangi adresten çıktığını değiştirir. Verinin kamuya açık olması, kullanım koşulları, robots.txt ve kişisel veri mevzuatı proxy'den bağımsız olarak geçerlidir ve sorumluluk size aittir.
/112İlgili çözümler ve yazılar
- ÜrünIPv6 ProxyAdet bazlı fiyatlanan IPv6 proxy paketleri
- ÜrünDatacenter ProxyIP adedine göre fiyatlanan statik IPv4 datacenter proxy
- ÜrünResidential ProxyGB paketli dönen ve sticky residential proxy
- ÜrünRotating Mobil ProxyHer istekte yeni mobil IP; isteğe bağlı sticky oturum
- ÇözümVeri ToplamaZamanlanmış, toplu ve otomatik veri hatları
- AraçProxy KontrolHTTP, HTTPS ve SOCKS5 proxy bağlantısını sınar
/128Son adım
Web Scraping için ürün seçin
Ürün sayfalarında özellikleri ve başlangıç fiyatlarını bulabilir, sorularınız için WhatsApp'tan yazabilirsiniz.