Web Scraping İçin Proxy ve User-Agent Yönetimi
1 viewsWeb Scraping İçin Proxy ve User-Agent Yönetimi
Web scraping projelerinde en büyük sorunlardan biri ban yemektir. Siteler botları tespit etmek için IP adresini ve tarayıcı bilgilerini (User-Agent) kontrol eder. Bu nedenle proxy ve User-Agent yönetimi scraping projelerinin en kritik parçalarından biridir.
Bu makalede etkili proxy ve User-Agent yönetim stratejilerini anlatacağız.
1. Neden Proxy ve User-Agent Kullanmalıyız?
| Sebep | Açıklama |
|---|---|
| IP Tespiti | Aynı IP’den çok fazla istek atarsanız ban yersiniz |
| User-Agent Tespiti | Bot gibi görünen User-Agent’lar kolayca engellenir |
| Davranış Analizi | Gerçek kullanıcı gibi davranmak gerekir |
| Coğrafi Kısıtlamalar | Bazı içerikler sadece belirli ülkelerden erişilebilir |
2. User-Agent Rotasyonu
User-Agent’ı her istekte değiştirerek bot gibi görünmeyi azaltabilirsiniz.
Python Örneği (requests + fake-useragent):
Python
import requests from fake_useragent import UserAgent ua = UserAgent() headers = { 'User-Agent': ua.random } response = requests.get("https://example.com", headers=headers)
Daha Güvenilir Yöntem (Kendi User-Agent Listeniz):
Python
import random import requests USER_AGENTS = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36...", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36..." ] headers = { 'User-Agent': random.choice(USER_AGENTS) }
3. Proxy Rotasyonu
Proxy rotasyonu, scraping’in en önemli tekniklerinden biridir.
Basit Proxy Rotasyonu Örneği:
Python
import requests import random PROXIES = [ "http://proxy1:8080", "http://kullanici:sifre@proxy2:3128", "socks5://proxy3:1080" ] proxy = random.choice(PROXIES) response = requests.get( "https://example.com", proxies={"http": proxy, "https": proxy}, headers={"User-Agent": "Mozilla/5.0..."} )
4. Gelişmiş Strateji: Proxy + User-Agent + Delay
En etkili yöntem bu üçünü bir arada kullanmaktır:
Python
import requests import random import time from fake_useragent import UserAgent ua = UserAgent() PROXIES = [...] # Proxy listeniz def scrape(url): proxy = random.choice(PROXIES) headers = {'User-Agent': ua.random} try: response = requests.get( url, proxies={"http": proxy, "https": proxy}, headers=headers, timeout=10 ) return response.text except Exception as e: print(f"Hata: {e}") return None # Kullanım for url in url_list: html = scrape(url) time.sleep(random.uniform(1, 3)) # Rastgele bekleme
5. En İyi Uygulamalar
| Uygulama | Açıklama |
|---|---|
| Residential / Mobile Proxy | En düşük ban riski |
| User-Agent Rotasyonu | Her istekte farklı User-Agent |
| Rastgele Bekleme | time.sleep(random.uniform(1, 4)) |
| Proxy Rotasyonu | Her istekte veya her 5-10 istekte proxy değiştir |
| Session Yönetimi | Aynı proxy ile uzun süre kalmayın (Sticky Session dikkat) |
| Referer ve Header Yönetimi | Gerçek tarayıcı gibi header’lar gönderin |
6. Hangi Proxy Türü Ne Zaman Kullanılmalı?
| Proje Türü | Önerilen Proxy Türü | Neden? |
|---|---|---|
| Basit sitelerden scraping | Datacenter Proxy | Hızlı ve ucuz |
| Korumalı siteler (Instagram, vs.) | Residential / Mobile | Düşük tespit riski |
| Yüksek hacimli scraping | Residential Proxy | Denge |
| Sosyal medya otomasyonu | Mobile Proxy | En güvenli |
Sonuç
Web scraping’de başarı, sadece kod yazmakla değil, proxy ve User-Agent yönetimini ne kadar iyi yaptığınızla doğrudan ilişkilidir.
Proxy rotasyonu + User-Agent rotasyonu + rastgele bekleme kombinasyonu, ban riskini büyük ölçüde azaltır.
Profesyonel projelerde bu üçünü mutlaka bir arada kullanmanızı öneririz.
Bir sonraki makalemizde Proxy ile IP Rotasyonu ve Sticky Session Yönetimi konusunu detaylı olarak inceleyeceğiz.