/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.

/88Tipik mimari

Tipik mimari

İşten hedefe dört adım: proxy katmanı, isteklerin nasıl dağıtıldığına bağlıdır.

  1. kaynakURL kuyruğuÇekilecek sayfalar, öncelik ve yeniden deneme sayısıyla kuyruğa girer.
  2. 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.
  3. proxyProxy katmanıİstekler uygun türdeki proxy üzerinden çıkış adreslerine dağıtılır.
  4. hedefHedef siteYanıtlar ayrıştırılır, ham veri ve hata kayıtları ayrı tutulur.
Kavramsal şema: gerçek mimari iş yükünüze ve hedef sitenin kurallarına göre değişir.
/92Önerilen ürünler

Önerilen ürünler

Öneriler bir başlangıç noktasıdır; ürün özelliklerini ve sınırlamalarını ürün sayfasında kontrol edin.

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.

Python
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 None

Bu ö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ünDikkat edilecek nokta
Çok sayıda ayrı çıkış adresiyle geniş taramaIPv6 ProxyHedefin AAAA kaydı olmalı; SOCKS5 için sipariş öncesi teyit gerekir
Sabit adresli, düşük maliyetli toplu istekDatacenter ProxyAdres bir veri merkezine kayıtlıdır, sıkı korumalı sitelerde ek doğrulama çıkabilir
Ülke, şehir düzeyinde bölgesel içerikResidential 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 ProxyMakul kullanım kuralı geçerlidir
Her istekte yeni mobil IP, isteğe bağlı sabitlemeRotating Mobil ProxyTürkiye paketlerinde SOCKS5 yoktur
Uzun süre aynı kalması gereken oturumISP ProxyIP 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.txt dosyasını okuyup yasaklı yolları taramayın. Python'da standart kütüphanedeki urllib.robotparser bunu 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.
Uyarı

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.

/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.