Bu makalede: IP adresi rotasyonunun ne olduğunu, 2025'te neden gerekli olduğunu, mevcut rotasyon türlerini (zamana dayalı, isteğe dayalı, rastgele), otomatik proxy değişimini doğru bir şekilde nasıl ayarlayacağınızı, hangi araçları kullanacağınızı ve engellemelerden nasıl kaçınacağınızı öğreneceksiniz. Kod örnekleri ve pratik tavsiyeler içeren kapsamlı bir rehber.
📑 Bölüm 1 İçeriği
🔄 IP Adresi Rotasyonu Nedir?
IP adresi rotasyonu (IP rotation), internete istek gönderilirken kullanılan proxy sunucularını otomatik veya manuel olarak değiştirerek giden IP adresini değiştirme işlemidir. Tüm istekler için aynı proxy yerine, sistem mevcut IP havuzundan periyodik olarak veya belirli koşullar altında başka bir IP adresine geçiş yapar.
IP Rotasyonu Nasıl Çalışır?
- Proxy Havuzu Oluşturma — Mevcut IP adreslerinden oluşan bir liste (onlarca ila milyonlarca) oluşturulur
- Rotasyon Kurallarını Belirleme — IP değiştirme koşulları (zaman, istek sayısı, olay) belirlenir
- Otomatik Geçiş — Sistem, belirlenen kurallara göre proxy'yi kendisi değiştirir
- Durum İzleme — Proxy'lerin çalışıp çalışmadığı kontrol edilir ve çalışmayanlar havuzdan çıkarılır
- Yeniden Kullanım — IP'ler "soğuma" süresinden sonra havuza geri döner
2025 yılında IP rotasyonu, web isteklerinin otomasyonuyla ilgili her türlü görev için standart bir uygulama haline gelmiştir. Bright Data'nın araştırmasına göre, profesyonel veri kazıyıcıların %87'sinden fazlası engellemelerden kaçınmak için bir tür IP rotasyonu kullanmaktadır.
Basit Bir Rotasyon Örneği:
İstek 1 → Proxy A (185.45.12.34) → Site görür: 185.45.12.34
İstek 2 → Proxy B (92.118.45.78) → Site görür: 92.118.45.78
İstek 3 → Proxy C (178.62.91.22) → Site görür: 178.62.91.22
İstek 4 → Proxy A (185.45.12.34) → Site görür: 185.45.12.34
Hedef site için her istek farklı bir kullanıcıdan geliyormuş gibi görünür, bu da otomasyonun tespitini zorlaştırır.
💡 Temel Fark: IP rotasyonu, sadece proxy kullanmaktan farklıdır çünkü IP adresi oturum boyunca sabit kalmak yerine sürekli değişir.
🎯 Proxy Rotasyonu 2025'te Neden Gereklidir?
Modern web siteleri botları ve otomatik sistemleri tespit etme konusunda çok daha akıllı hale geldi. Sadece proxy kullanmak artık yeterli değil; siteler davranışsal kalıpları, istek sıklığını ve diğer birçok faktörü analiz ediyor. IP rotasyonu, birden fazla gerçek kullanıcının doğal davranışını taklit etmeye yardımcı olur.
IP Rotasyonu Kullanmanın Temel Nedenleri:
1. Rate Limiting (İstek Sınırlarını) Aşma
Çoğu site, bir IP adresinden gelen istek sayısını belirli bir zaman diliminde sınırlar. Örneğin, bir API tek bir IP'den saatte yalnızca 100 istek iznine izin verebilir. 10 IP'lik bir rotasyon havuzu kullanarak, yükü dağıtarak saatte 1,000 istek gönderebilirsiniz.
2. Veri Kazıma Sırasında IP Yasaklamalarından Kaçınma
Büyük hacimli veri toplarken (e-ticaret fiyat takibi, iletişim bilgisi toplama), tek bir IP'den gelen sık istekler hızla engellenmeye yol açar. Rotasyon, her IP'nin saatte yalnızca birkaç istek yapmasını sağlayarak normal kullanıcı davranışını taklit eder.
3. Coğrafi Engellemeleri Aşma
Birçok servis, coğrafi konuma göre farklı içerik veya fiyatlar gösterir. Farklı ülkelerden proxy'ler kullanmak, fiziksel olarak orada bulunmadan tüm bölgelerdeki verileri toplamanıza olanak tanır.
4. Otomasyonun Gizlenmesi
Cloudflare, Akamai, PerimeterX gibi koruma sistemleri davranışsal kalıpları analiz eder. Kısa sürede tek bir IP'den yüzlerce istek gelmesi bot olduğunuzun açık işaretidir. Rotasyon, çok sayıda bağımsız kullanıcının var olduğu illüzyonunu yaratmaya yardımcı olur.
5. Rekabet Analizi
Rakip fiyatlarını izlemek, reklam kampanyalarını takip etmek, SEO pozisyonlarını kontrol etmek sık sık kontrol gerektirir. IP rotasyonu, rakiplerin dikkatini çekmeden bu verileri toplamanızı sağlar.
6. Test ve İzleme
Sitenin farklı bölgelerden erişilebilirliğini kontrol etmek, A/B testlerini yürütmek, farklı ülkelerdeki SEO pozisyonlarını izlemek, hepsi farklı lokasyonlardan IP adresi kullanımını gerektirir.
📊 2025'te IP Rotasyonu Kullanım İstatistikleri:
- Veri kazıma yapan şirketlerin %92'si IP rotasyonu kullanıyor
- Pazarlama ajanslarının %78'i rekabet analizi için rotasyon kullanıyor
- E-ticaret işletmelerinin %65'i fiyat takibi için rotasyon kullanıyor
- SEO uzmanlarının %54'ü pozisyon takibi için rotasyon kullanıyor
- Ticari veri kazıma için ortalama proxy havuzu boyutu: 500-5,000 IP
⚠️ Önemli: IP rotasyonu sizi tamamen görünmez yapmaz. Modern koruma sistemleri tarayıcı parmak izi, cookies, User-Agent, TLS parmak izi, davranışsal metrikler gibi birçok faktörü analiz eder. IP rotasyonu, kapsamlı bir koruma aşma stratejisinin yalnızca bir bileşenidir.
🔍 Web Siteleri Proxy Kullanımını Nasıl Tespit Eder?
Etkili IP rotasyonu kullanmak için, modern web sitelerinin 2025 yılında uyguladığı tespit mekanizmalarını anlamak önemlidir. Bu, rotasyon sıklığını ve stratejisini doğru ayarlamanıza yardımcı olacaktır.
Otomasyon Tespit Yöntemleri:
1. Rate Limiting (İstek Sıklığı Analizi)
Siteler, belirli bir zaman diliminde belirli bir IP'den gelen istek sayısını izler. Tipik eşikler şunlardır:
- Muhafazakar Siteler: Dakikada 10-30 istek
- Ortalama Siteler: Dakikada 50-100 istek
- API Servisleri: Saatte 100-1000 istek (genellikle dokümantasyonda belirtilir)
2. IP İtibar Analizi
IP adreslerini türlerine göre sınıflandıran kapsamlı veritabanları mevcuttur:
- Residential IP — Ev internet sağlayıcıları (yüksek itibar)
- Datacenter IP — Barındırma şirketlerinin sunucuları (şüpheli)
- Mobile IP — Mobil operatörler (yüksek itibar)
- Known proxy IP — Bilinen proxy sunucuları (genellikle engellenir)
3. Tarayıcı Parmak İzi (Browser Fingerprinting)
IP adresi değişse bile, sistemler ekran çözünürlüğü, yüklü yazı tipleri, eklentiler, WebGL parmak izi, Canvas parmak izi, Audio context parmak izi gibi benzersiz "tarayıcı izi" ile istekleri ilişkilendirebilir.
4. Davranışsal Analiz (Behavioral Analysis)
Modern anti-bot sistemleri aşağıdaki davranışları analiz eder:
- Sayfa kaydırma hızı
- Fare hareketleri
- Tıklama kalıpları
- Eylemler arasındaki süre
- Sayfa ziyaret sırası
5. TLS Parmak İzi
HTTPS bağlantısı sırasında sunucu, kullanılan TLS sürümünü, şifreleme paketlerini, eklentileri belirleyebilir; bu veriler IP değişse bile izleme için kullanılabilen bir parmak izi oluşturur.
💡 Sonuç: IP rotasyonu, yalnızca diğer yöntemlerle (User-Agent rotasyonu, çerez kullanımı, insan davranışının taklidi, datacenter yerine residential proxy kullanımı) birlikte kullanıldığında etkilidir.
⚙️ IP Adresi Rotasyonu Türleri
IP adresi rotasyonunun üç ana stratejisi vardır ve her biri belirli kullanım senaryolarına uygundur. Doğru stratejiyi seçmek projenizin başarısı için kritik öneme sahiptir.
⏰ Zamana Dayalı Rotasyon (Time-based Rotation)
Nasıl Çalışır?
Zamana dayalı rotasyonda, IP adresi gönderilen istek sayısından bağımsız olarak sabit zaman aralıklarında otomatik olarak değişir. Bu, en basit ve en öngörülebilir rotasyon stratejisidir.
Tipik Rotasyon Aralıkları:
- Her 5 Dakika — Yoğun istekli veri kazıma için
- Her 10-15 Dakika — Çoğu görev için standart mod
- Her 30-60 Dakika — Düşük istek sıklığı olan görevler için
- Her 2-24 Saat — Yapışkan oturumlar (sticky sessions) için
✅ Avantajları:
- Öngörülebilirlik — IP değişiminin ne zaman olacağını tam olarak bilirsiniz
- Uygulama Kolaylığı — Zamanlayıcılar (timer) ile kolayca ayarlanır
- Yapışkan Oturum Desteği — Belirli bir süre IP'yi sabit tutabilir
- Eşit Dağılım — Yük zamana göre eşit dağıtılır
- Kolay Ölçeklenebilirlik — Farklı zamanlayıcılara sahip birden fazla oturum paralel çalıştırılabilir
❌ Dezavantajları:
- Değişken Yükte Verimsizlik — İstek az olsa bile IP gereksiz yere değişir
- Sınırları Aşma Riski — Kısa aralıkta çok fazla istek gönderilirse limit aşılabilir
- Öngörülebilir Desen — İleri düzey koruma sistemleri düzenliliği tespit edebilir
- Oturum Kaybı — IP değiştiğinde yetkilendirme veya bağlam kaybolabilir
🎯 En Uygun Olduğu Durumlar:
- Öngörülebilir yüke sahip görevler
- Uzun süreli oturumlar (yetkilendirme, hesap işlemleri)
- Sabit aralıklarla izleme
- Belirli bir süre IP stabilitesinin önemli olduğu durumlar
Pratik Kullanım Örneği:
Senaryo: E-ticaret sitesindeki fiyatların her 30 dakikada bir izlenmesi
10:30 - Proxy B → Fiyat kontrolü (50 ürün)
11:00 - Proxy C → Fiyat kontrolü (50 ürün)
11:30 - Proxy D → Fiyat kontrolü (50 ürün)
12:00 - Proxy A → Fiyat kontrolü (50 ürün)
Site için bu, her 2 saatte bir ürünleri kontrol eden 4 farklı kullanıcı gibi görünür — tamamen doğal bir davranış.
🔢 İsteğe Dayalı Rotasyon (Request-based Rotation)
Nasıl Çalışır?
İsteğe dayalı rotasyonda, IP adresi belirli sayıda istekten sonra (her istekten sonra veya N istekten sonra) değişir.
Uygulama Seçenekleri:
- İstek Başına Rotasyon (Per-request rotation) — Her istek için yeni IP (en agresif strateji)
- Yığın Rotasyonu (Burst rotation) — N istekten sonra IP değişimi (örneğin, her 10 istekte bir)
- Uyarlanabilir Rotasyon (Adaptive rotation) — Belirli HTTP kodları alındığında IP değişimi (429, 403, 503)
- Oturum Tabanlı (Session-based) — Yeni bir mantıksal oturum başladığında IP değişimi
✅ Avantajları:
- Rate Limit'e Karşı Maksimum Koruma — Her IP minimum istek yapar
- Uyarlanabilirlik — Rotasyon yalnızca gerektiğinde gerçekleşir
- Havuzun Verimli Kullanımı — IP'ler yalnızca ihtiyaç duyulduğunda değişir
- Engellemelere Hızlı Tepki — Hata alındığında IP anında değiştirilebilir
- Veri Kazıma İçin İdeal — Her sayfa yeni bir IP'den istenir
❌ Dezavantajları:
- Oturum Kaybı — Sürekli IP değişimi yetkilendirmeyi bozar
- Hata Ayıklama Zorluğu — Belirli bir IP ile ilgili sorunu tekrarlamak zordur
- Havuzun Hızlı Tükenmesi — Yoğun çalışmada tüm IP'ler hızla tüketilebilir
- Daha Pahalı — Etkili çalışma için daha büyük proxy havuzu gerektirir
- Geçiş Yükü (Overhead) — Her IP değişimi milisaniyeler sürer
🎯 En Uygun Olduğu Durumlar:
- Büyük hacimli veri kazıma işlemleri
- Sert rate limit'leri aşma
- Durum kaydı gerektirmeyen tek seferlik istekler
- Yetkilendirme gerektirmeyen genel sayfa kazıma
- Her isteğin bir öncekinden bağımsız olduğu görevler
IP Başına Önerilen İstek Sayısı:
| Site Tipi | Önerilen İstek Sayısı | İstek Arası Aralık |
|---|---|---|
| Yüksek Korumalı (Bankalar, Sosyal Medya) | 1-3 istek | 5-10 saniye arası |
| E-ticaret (Pazar Yerleri) | 5-10 istek | 2-5 saniye arası |
| Haber Portalları | 10-20 istek | 1-3 saniye arası |
| Halka Açık API'ler | API Limitlerine Göre | Dokümantasyona Göre |
| Statik Siteler | 20-50 istek | 0.5-2 saniye arası |
🎲 Rastgele Rotasyon (Random Rotation)
Nasıl Çalışır?
Rastgele rotasyon, IP adresinin rastgele zamanlarda veya rastgele sayıda istekten sonra değiştiği hibrit bir yaklaşımdır. Bu, en öngörülemez stratejidir ve gerçek kullanıcı davranışını en iyi şekilde taklit eder.
Rastgele Rotasyon Seçenekleri:
- Rastgele Zaman Aralıkları — IP değişimi rastgele aralıklarla (örneğin, 3 ila 15 dakika arası)
- Rastgele İstek Sayısı — IP değişimi rastgele sayıda istekten sonra (örneğin, 5 ila 20 arası)
- Rastgele IP Seçimi — Bir sonraki IP, sırayla değil, havuzdan rastgele seçilir
- Ağırlıklı Rastgele — Daha iyi itibara sahip IP'ler daha sık kullanılır
- Jittered Rotasyon — Sabit aralıklara rastgele gecikme eklenmesi
✅ Avantajları:
- Öngörülemezlik — Sistemlerin kalıp bulması zorlaşır
- Gerçek Kullanıcı Taklidi — İnsanlar mükemmel bir düzen içinde hareket etmez
- Esneklik — Diğer stratejilerle birleştirilebilir
- Doğal Trafik Kalıbı — Organik trafiğe daha çok benzer
- Tespit Edilmesi Zor — Büyük veri analizinde bile zor tespit edilir
❌ Dezavantajları:
- Tahmin Edilmesi Zor — Görevin tamamlama hızını değerlendirmek zordur
- Etkisiz Olabilir — Yanlış bir rastgelelik sonucu IP çok sık değişebilir
- Hata Ayıklama Zorluğu — Rastgelelik nedeniyle sorunu tekrarlamak zordur
- Daha Büyük Havuz Gereksinimi — Eşit yük dağılımı sağlamak için
- Uygulaması Daha Zor — İyi bir rastgelelik üretme algoritması gerektirir
🎯 En Uygun Olduğu Durumlar:
- Gelişmiş koruma sistemlerini (Cloudflare, Akamai) aşma
- Gizlilik gereksinimleri yüksek olan uzun vadeli projeler
- Rekabet analizi
- Davranışsal analiz yapan siteleri kazıma
- Maksimum insan davranışı taklidi gerektiren görevler
💡 Tavsiye: 2025'te en etkili yaklaşım stratejilerin birleşimidir. Örneğin, temel time-based rotasyon (her 10-15 dakikada bir) + jitter (±5 dakika rastgele sapma) + hata alındığında adaptive rotation.
📊 Rotasyon Yöntemlerinin Karşılaştırılması
| Kriter | Zamana Dayalı | İsteğe Dayalı | Rastgele |
|---|---|---|---|
| Uygulama Karmaşıklığı | ⭐ Kolay | ⭐⭐ Orta | ⭐⭐⭐ Zor |
| Öngörülebilirlik | ✅ Yüksek | ⚠️ Orta | ❌ Düşük |
| Rate Limit'ten Korunma | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Gizlilik/Fark Edilmeme | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Oturum Desteği | ✅ Evet | ❌ Hayır | ⚠️ Kısmen |
| Havuz Kullanım Verimliliği | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Kazıma Hızı | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Gereken Havuz Boyutu | Küçük-Orta | Büyük | Orta-Büyük |
| Hata Ayıklama Kolaylığı | ✅ Kolay | ⚠️ Orta | ❌ Zor |
| Maliyet | 💰 Düşük | 💰💰💰 Yüksek | 💰💰 Orta |
🔀 Yapışkan Oturumlar vs Dönen Proxy'ler
Proxy'lerle çalışırken kilit sorulardan biri, sticky sessions (oturum boyunca tek IP tutma) ile rotating proxies (sürekli IP değiştirme) arasında seçim yapmaktır. Farkı anlamak, projenizi başarılı bir şekilde uygulamak için hayati önem taşır.
Sticky Sessions (Yapışkan Oturumlar)
Sticky session, aynı IP adresinin belirli bir süre veya tüm oturum boyunca sabit kalması anlamına gelir. 2025'te çoğu sağlayıcı, yapılandırılabilir sürelerle yapışkan oturumlar sunmaktadır.
Tipik Sticky Session Ayarları:
- 1-5 Dakika — Hızlı işlemler için kısa oturumlar
- 10-30 Dakika — Çoğu görev için standart mod
- 1-2 Saat — Hesap yönetimi ve yetkilendirme için
- 12-24 Saat — Uzun süreli işlemler için maksimum süre
- Infinite (Sonsuz) — Oturum sonlanana kadar IP sabit kalır
✅ Sticky Session Avantajları:
- Yetkilendirmeyi Koruma — Hesap girişi yapılıp o kimlikle çalışılabilir
- Çerez Desteği — Site sizi oturumlar arasında hatırlar
- Doğal Davranış — Normal bir kullanıcı oturumu boyunca tek IP kullanır
- Daha Az CAPTCHA — Sabit bir IP daha az şüphe çeker
- Eylemlerin Sıralı Olması — Çok adımlı işlemlerin (checkout) yapılabilmesi
- Hata Ayıklama Kolaylığı — Belirli bir IP ile ilgili sorunu tekrarlamak kolaydır
❌ Sticky Session Dezavantajları:
- Rate Limiting'e Karşı Hassasiyet — Tüm istekler tek IP'den gelir
- Tüm Oturumun Banlanma Riski — IP engellenirse tüm ilerleme kaybedilir
- Ölçeklenebilirlik Sınırlı — Tek bir IP'nin hızıyla sınırlıdır
- Sınırlı Süre — Oturum kaçınılmaz olarak sona erecek ve IP değişecektir
Rotating Proxies (Dönen Proxy'ler)
Rotating proxies, her istekte veya belirli aralıklarla IP adresini otomatik olarak değiştirir. Sticky session'ların tam tersidir; maksimum anonimlik ve yük dağıtımı sağlar.
✅ Rotating Proxy Avantajları:
- Rate Limiting'e Karşı Maksimum Koruma — Her IP minimum istek yapar
- Yüksek Kazıma Hızı — Binlerce paralel isteği işleyebilir
- Düşük Banlanma Riski — Bir IP engellense bile çalışma kesintiye uğramaz
- Ölçeklenebilirlik — İş hacmini artırmak kolaydır
- Gizlilik — Çok sayıda bağımsız kullanıcı gibi görünür
❌ Rotating Proxy Dezavantajları:
- Yetkilendirme Mümkün Değil — Sürekli IP değişimi oturumu bozar
- Çerezler Çalışmaz — Her istek yeni bir kullanıcıdan geliyormuş gibi görünür
- Çok Adımlı İşlemler Yapılamaz — Sepet, ödeme gibi işlemler çalışmaz
- Daha Fazla CAPTCHA Riski — Sık IP değişimi şüphe uyandırabilir
- Daha Pahalı — Etkili olması için büyük proxy havuzu gerekir
📊 Karşılaştırma Tablosu
| Kriter | Sticky Sessions | Rotating Proxies |
|---|---|---|
| Yetkilendirme | ✅ Evet | ❌ Hayır |
| Çerezler | ✅ Çalışır | ❌ Çalışmaz |
| Rate Limit'ten Korunma | ⚠️ Sınırlı | ✅ Mükemmel |
| Kazıma Hızı | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Bloklanma Riski | ⚠️ Orta | ✅ Düşük |
| Maliyet | 💰 Daha Düşük | 💰💰 Daha Yüksek |
| Karmaşıklık | ⭐ Basit | ⭐⭐ Orta |
🎯 Sticky Sessions Ne Zaman Kullanılmalı?
Sticky Session'lar İçin İdeal Senaryolar:
1. Sosyal Medya Yönetimi
Birden fazla Instagram, Facebook, Twitter hesabı ile çalışırken oturum boyunca tek bir IP adresini korumak gerekir. Yetkilendirilmiş bir hesapla IP adresi sık sık değişirse engellenme riski yüksektir.
Tavsiye: 1-2 saatlik sticky session, her hesap için benzersiz bir IP.
2. E-ticaret ve Alışveriş Sepetleri
Ürünleri sepete ekleme, sipariş verme, ödeme (checkout) işlemleri oturumun korunmasını gerektirir. IP değişimi sepetin kaybolmasına ve işlemin sıfırlanmasına neden olur.
Tavsiye: Tam bir satın alma döngüsü için 30-60 dakikalık sticky session.
3. Form Doldurma ve Kayıt
Çok adımlı formlar, site kayıtları, e-posta doğrulama gibi işlemler IP tutarlılığı gerektirir. Adımlar arasındaki IP değişimi şüphe uyandırabilir veya doğrulama hatalarına yol açabilir.
Tavsiye: İşlemin tamamlanması için 10-30 dakikalık sticky session.
4. Web Uygulaması Testi
Uçtan uca (E2E) testler, Selenium/Puppeteer ile otomasyon, kullanıcı senaryolarının doğrulanması — tüm bunlar gerçek kullanıcı deneyimini taklit etmek için IP sabitliği gerektirir.
Tavsiye: Testin tüm süresi boyunca (5-60 dakika) sticky session.
5. Kimlik Doğrulama Gerektiren API'ler
Birçok API, erişim jetonunu (token) IP adresine bağlar. IP değişimi jetonun geçersiz olmasına ve yeniden kimlik doğrulaması yapılmasına neden olur.
Tavsiye: Jetonun geçerlilik süresi boyunca (genellikle 1-24 saat) sticky session.
💡 Hibrit Yaklaşım: Birçok durumda en uygun çözüm hibrit bir yaklaşımdır — yetkilendirme ve işlem yapma için sticky session kullanmak, ardından veri toplama için rotating proxies'e geçmek.
🐍 Python'da Rotasyon Ayarlama
Python, web kazıma ve otomasyon için en popüler dillerden biridir. requests kütüphanesini kullanarak IP rotasyonunu uygulamanın birkaç yolunu inceleyelim.
Örnek 1: Basit Döngüsel Rotasyon
import requests
from itertools import cycle
# Proxy listesi
proxies_list = [
'http://user:pass@185.45.12.34:8000',
'http://user:pass@92.118.45.78:8000',
'http://user:pass@178.62.91.22:8000',
'http://user:pass@45.89.234.56:8000'
]
# Sonsuz yineleyici (iterator) oluşturma
proxy_pool = cycle(proxies_list)
# İstek gönderme fonksiyonu
def make_request(url):
proxy = next(proxy_pool)
proxies = {
'http': proxy,
'https': proxy
}
try:
response = requests.get(url, proxies=proxies, timeout=10)
print(f"Başarılı {proxy} ile: {response.status_code}")
return response
except Exception as e:
print(f"Hata {proxy} ile: {e}")
return None
# Kullanım
urls = ['https://example.com/page1', 'https://example.com/page2']
for url in urls:
make_request(url)
# Her istek listedeki bir sonraki proxy'yi kullanır
Açıklama: Bu kod, listedeki proxy'leri döngüsel olarak kullanır. Sonuncudan sonra baştan başlar. Sınırlı sayıda proxy ile küçük görevler için uygundur.
Örnek 2: Hata Durumunda Yeniden Deneme Mantığı ile Rastgele Rotasyon
import requests
import random
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
class ProxyRotator:
def __init__(self, proxies_list):
self.proxies = proxies_list
self.failed_proxies = set()
def get_random_proxy(self):
"""Rastgele çalışan bir proxy alır"""
available = [p for p in self.proxies if p not in self.failed_proxies]
if not available:
# Tüm proxy'ler başarısız olursa, listeyi sıfırla
self.failed_proxies.clear()
available = self.proxies
return random.choice(available)
def make_request(self, url, max_retries=3):
"""Hatalarda otomatik rotasyon ile istek gönderir"""
session = requests.Session()
# Yeniden deneme stratejisi ayarı
retry = Retry(
total=max_retries,
backoff_factor=0.5,
status_forcelist=[500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
for attempt in range(max_retries):
proxy = self.get_random_proxy()
proxies = {'http': proxy, 'https': proxy}
try:
response = session.get(url, proxies=proxies, timeout=15)
# Rate limiting kontrolü
if response.status_code == 429:
print(f"{proxy} üzerinde limit aşımı, rotasyon yapılıyor...")
self.failed_proxies.add(proxy)
continue
print(f"✓ Başarılı: {proxy}")
return response
except Exception as e:
print(f"✗ Hata: {proxy}: {e}")
self.failed_proxies.add(proxy)
raise Exception(f"{url} için tüm denemeler başarısız oldu")
# Kullanım
proxies = [
'http://user:pass@proxy1.com:8000',
'http://user:pass@proxy2.com:8000',
'http://user:pass@proxy3.com:8000'
]
rotator = ProxyRotator(proxies)
response = rotator.make_request('https://example.com')
Açıklama: Hata durumunda otomatik proxy değiştiren, başarısız olan proxy'leri izleyen ve yeniden deneme mantığı içeren gelişmiş bir versiyon. Üretim ortamı kullanımı için uygundur.
Örnek 3: Zamana Dayalı Rotasyon
import requests
import time
from datetime import datetime, timedelta
class TimeBasedRotator:
def __init__(self, proxies_list, rotation_interval=600):
"""
rotation_interval: saniye cinsinden zaman aralığı (600 = 10 dakika)
"""
self.proxies = proxies_list
self.rotation_interval = rotation_interval
self.current_proxy = None
self.last_rotation = None
self.current_index = 0
def get_proxy(self):
"""Geçerli proxy'yi alır veya süre dolduysa rotasyon yapar"""
now = datetime.now()
# İlk çalıştırma veya süre doldu
if (self.last_rotation is None or
(now - self.last_rotation).seconds >= self.rotation_interval):
self.current_proxy = self.proxies[self.current_index]
self.current_index = (self.current_index + 1) % len(self.proxies)
self.last_rotation = now
print(f"🔄 Rotasyon yapıldı: {self.current_proxy}")
return self.current_proxy
def make_request(self, url):
proxy = self.get_proxy()
proxies = {'http': proxy, 'https': proxy}
response = requests.get(url, proxies=proxies, timeout=10)
return response
# Kullanım: IP her 10 dakikada bir değişecek
rotator = TimeBasedRotator(proxies_list, rotation_interval=600)
for i in range(100):
response = rotator.make_request('https://example.com')
print(f"İstek {i}: {response.status_code}")
time.sleep(2) # İstekler arasında 2 saniye bekleme
Açıklama: Zamana dayalı rotasyonun uygulaması. IP adresi, belirlenen aralık boyunca otomatik olarak değişir.
⚡ JavaScript/Node.js'de Rotasyon Ayarlama
Node.js için axios veya node-fetch kütüphaneleri proxy desteğiyle kullanılabilir. Axios ve popüler axios-proxy-rotation kütüphanesi ile örnekleri inceleyelim.
Örnek 1: Axios ile Temel Rotasyon
const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');
class ProxyRotator {
constructor(proxies) {
this.proxies = proxies;
this.currentIndex = 0;
}
getNextProxy() {
const proxy = this.proxies[this.currentIndex];
this.currentIndex = (this.currentIndex + 1) % this.proxies.length;
return proxy;
}
async makeRequest(url, options = {}) {
const proxy = this.getNextProxy();
const agent = new HttpsProxyAgent(proxy);
try {
const response = await axios.get(url, {
...options,
httpAgent: agent,
httpsAgent: agent,
timeout: 10000
});
console.log(`✓ Başarılı ${proxy} ile: ${response.status}`);
return response.data;
} catch (error) {
console.error(`✗ Hata ${proxy} ile: ${error.message}`);
throw error;
}
}
}
// Kullanım
const proxies = [
'http://user:pass@proxy1.com:8000',
'http://user:pass@proxy2.com:8000',
'http://user:pass@proxy3.com:8000'
];
const rotator = new ProxyRotator(proxies);
async function scrape() {
const urls = [
'https://example.com/page1',
'https://example.com/page2',
'https://example.com/page3'
];
for (const url of urls) {
try {
await rotator.makeRequest(url);
} catch (error) {
console.error(`Sayfa kazınamadı ${url}`);
}
}
}
scrape();
Örnek 2: Puppeteer ile Gelişmiş Proxy Rotasyonu
const puppeteer = require('puppeteer');
class PuppeteerProxyRotator {
constructor(proxies) {
this.proxies = proxies;
this.currentIndex = 0;
}
getNextProxy() {
const proxy = this.proxies[this.currentIndex];
this.currentIndex = (this.currentIndex + 1) % this.proxies.length;
return proxy;
}
async scrapeWithRotation(url) {
const proxy = this.getNextProxy();
// Proxy URL'sini ayrıştırma
const proxyUrl = new URL(proxy);
const browser = await puppeteer.launch({
headless: true,
args: [
`--proxy-server=${proxyUrl.protocol}//${proxyUrl.host}`,
'--no-sandbox',
'--disable-setuid-sandbox'
]
});
try {
const page = await browser.newPage();
// Proxy kimlik doğrulaması (varsa)
if (proxyUrl.username && proxyUrl.password) {
await page.authenticate({
username: proxyUrl.username,
password: proxyUrl.password
});
}
await page.goto(url, { waitUntil: 'networkidle2', timeout: 30000 });
const content = await page.content();
console.log(`✓ ${proxy} ile kazındı ${url}`);
await browser.close();
return content;
} catch (error) {
console.error(`✗ Hata ${proxy} ile: ${error.message}`);
await browser.close();
throw error;
}
}
}
// Kullanım
const proxies = [
'http://user:pass@185.45.12.34:8000',
'http://user:pass@92.118.45.78:8000'
];
const rotator = new PuppeteerProxyRotator(proxies);
async function scrapeMultiplePages() {
const urls = ['https://example.com/1', 'https://example.com/2'];
for (const url of urls) {
await rotator.scrapeWithRotation(url);
// Her sayfa yeni bir proxy ile açılır
}
}
scrapeMultiplePages();
Açıklama: Tarayıcı otomasyonu (Puppeteer) ile IP rotasyonunun entegrasyonu. Her yeni tarayıcı örneği yeni bir proxy sunucusuyla başlatılır.
🛠️ Otomasyon Araçları
2025 yılında, otomatik IP rotasyonu için birçok hazır araç ve servis bulunmaktadır. En popüler çözümleri inceleyelim.
Rotating Proxy Gateway (Dönen Proxy Ağ Geçidi)
Modern sağlayıcıların çoğu (ProxyCove dahil), kendi taraflarında otomatik IP rotasyonu yapan Rotating Proxy Gateway sunar.
Nasıl Çalışır?
- Tek bir uç noktaya bağlanırsınız (örneğin,
rotate.proxycove.com:8000) - Ağ geçidi, her istekte havuzdan rastgele bir IP seçer
- Proxy listesini yönetmek ve rotasyon kodunu yazmak zorunda kalmazsınız
- Sticky session'lar kullanıcı adındaki session_id parametresi ile ayarlanabilir
# Python örneği (rotating gateway ile)
import requests
# Her istekte yeni IP için rotating
proxies = {
'http': 'http://username:password@rotate.proxycove.com:8000',
'https': 'http://username:password@rotate.proxycove.com:8000'
}
# Sticky session için session_id eklenir
sticky_proxies = {
'http': 'http://username-session-abc123:password@rotate.proxycove.com:8000',
'https': 'http://username-session-abc123:password@rotate.proxycove.com:8000'
}
# Rotating: her istekte yeni IP
for i in range(10):
r = requests.get('https://api.ipify.org', proxies=proxies)
print(f"İstek {i}: IP = {r.text}") # Her seferinde farklı IP
# Sticky: tüm istekler aynı IP ile
for i in range(10):
r = requests.get('https://api.ipify.org', proxies=sticky_proxies)
print(f"İstek {i}: IP = {r.text}") # Her zaman aynı IP
Avantajları: Rotasyon kodu yazmaya gerek yok, çalışmayan proxy'ler otomatik kaldırılır, ölçeklenebilirlik, esnek ayarlar.
📚 Hazır Kütüphaneler ve Servisler
Python Kütüphaneleri:
1. ProxyBroker
Proxy bulma, doğrulama ve otomatik rotasyon ile proxy kullanma kütüphanesi.
2. rotating-proxies (Scrapy middleware)
Scrapy için otomatik rotasyon ve kara liste yönetimi desteği sunan middleware.
3. requests-ip-rotator
IP rotasyonu desteği sunan requests kütüphanesi eklentisi.
JavaScript/Node.js Kütüphaneleri:
1. proxy-chain
Rotasyonlu ve tünelleme destekli HTTP proxy sunucusu oluşturmak için kütüphane.
2. puppeteer-extra-plugin-proxy-rotation
Her sayfa için otomatik proxy rotasyonu sağlayan Puppeteer eklentisi.
🚀 Gelişmiş Rotasyon Teknikleri
1. Ağırlıklı Rotasyon (Weighted Rotation)
Daha iyi itibara ve hıza sahip proxy'ler daha sık kullanılır. Örneğin, residential IP'lere 0.6, datacenter IP'lere 0.4 ağırlık verilebilir.
2. Coğrafi Hedefli Rotasyon
Hedef URL'ye bağlı olarak otomatik olarak doğru ülke/şehirdeki proxy'nin seçilmesi. Örneğin, .de alan adı için Alman proxy'leri kullanılır.
3. Sağlık Kontrolü ve Otomatik Kaldırma
Proxy'lerin sağlığının periyodik olarak kontrol edilmesi ve çalışmayanların havuzdan otomatik olarak çıkarılması. "Soğuma" süresinden sonra geri yükleme.
4. İstek Sıklığı Uyarlanabilir Rotasyon
Rotasyon sıklığı, alınan HTTP kodlarına göre otomatik olarak ayarlanır. 429 (Too Many Requests) alındığında rotasyon hızlandırılır.
🚀 Kutudan Çıktığı Gibi Profesyonel IP Rotasyonu İçin Hazır Mısınız?
ProxyCove, zamana dayalı, isteğe dayalı ve rastgele rotasyon dahil olmak üzere tüm IP rotasyon türlerini destekleyen güçlü residential ve mobile proxy'ler sunar. 1 dakika ile 24 saate kadar yapılandırılabilir yapışkan oturumlar.
💎 ProxyCove Tarifeleri 2025:
🎁 Promosyon kodu ARTHELLO ile:
- İlk ay +%20 trafik
- Kaliteyi test etmek için Ücretsiz 500 MB deneme
- Rusça 7/24 Teknik Destek
📖 Devamı Gelecek...
İkinci bölümde sticky sessions vs rotating proxies'i, Python ve JavaScript'te rotasyon ayarlarını, hazır otomasyon kütüphanelerini ve 2025 için en iyi uygulamaları kod örnekleriyle inceleyeceğiz.
İkinci Bölümde: sticky sessions vs rotating proxies'i, Python ve JavaScript'te IP rotasyon ayarlarını, hazır kütüphaneleri ve otomasyon araçlarını, pratik örnekleri ve 2025 için en iyi uygulamaları inceliyoruz.
📑 Bölüm 2 İçeriği
🔀 Yapışkan Oturumlar vs Dönen Proxy'ler
Proxy'lerle çalışırken kilit sorulardan biri, sticky sessions (oturum boyunca tek IP tutma) ile rotating proxies (sürekli IP değiştirme) arasında seçim yapmaktır. Farkı anlamak, projenizi başarılı bir şekilde uygulamak için hayati önem taşır.
Sticky Sessions (Yapışkan Oturumlar)
Sticky session, aynı IP adresinin belirli bir süre veya tüm oturum boyunca sabit kalması anlamına gelir. 2025'te çoğu sağlayıcı, yapılandırılabilir sürelerle yapışkan oturumlar sunmaktadır.
Tipik Sticky Session Ayarları:
- 1-5 Dakika — Kısa işlemler için kısa oturumlar
- 10-30 Dakika — Çoğu görev için standart mod
- 1-2 Saat — Hesap yönetimi için
- 12-24 Saat — Uzun süreli işlemler için maksimum süre
- Infinite (Sonsuz) — Oturum sonlanana kadar IP sabit kalır
✅ Sticky Session Avantajları:
- Yetkilendirmeyi Koruma — Hesap girişi yapılabilir
- Çerez Desteği — Site sizi hatırlar
- Doğal Davranış — Normal kullanıcı davranışı taklit edilir
- Daha Az CAPTCHA — Sabit IP daha az şüphe çeker
- Sıralı Eylemler — Çok adımlı işlemler yapılabilir
- Hata Ayıklama Kolaylığı — Sorunları belirli bir IP ile ilişkilendirmek kolaydır
❌ Sticky Session Dezavantajları:
- Rate Limiting'e Karşı Hassasiyet — Tüm istekler tek IP'den gelir
- Tüm Oturumun Banlanma Riski — IP engellenirse ilerleme kaybedilir
- Ölçeklenebilirlik Sınırlı — Tek bir IP hızıyla sınırlıdır
- Sınırlı Süre — Oturum kaçınılmaz olarak sona erer
Rotating Proxies (Dönen Proxy'ler)
Rotating proxies, her istekte veya belirli aralıklarla IP adresini otomatik olarak değiştirir. Maksimum anonimlik ve yük dağıtımı sağlar.
✅ Rotating Proxy Avantajları:
- Maksimum Rate Limit Koruma — Her IP minimum istek yapar
- Yüksek Kazıma Hızı — Binlerce paralel istek
- Minimum Bloklanma Riski — Bir IP engellense bile çalışma devam eder
- Ölçeklenebilirlik — İş hacmini artırmak kolaydır
- Gizlilik — Çok sayıda bağımsız kullanıcı gibi görünür
❌ Rotating Proxy Dezavantajları:
- Yetkilendirme Mümkün Değil — Sürekli IP değişimi oturumu bozar
- Çerezler Çalışmaz — Her istek yeni kullanıcıdan gelir
- Çok Adımlı İşlemler Yapılamaz — Sepet, ödeme çalışmaz
- Daha Fazla CAPTCHA Riski — Sık IP değişimi şüphe uyandırabilir
- Daha Pahalı — Etkili olması için büyük havuz gerekir
📊 Karşılaştırma Tablosu
| Kriter | Sticky Sessions | Rotating Proxies |
|---|---|---|
| Yetkilendirme | ✅ Evet | ❌ Hayır |
| Çerezler | ✅ Çalışır | ❌ Çalışmaz |
| Rate Limit'ten Korunma | ⚠️ Sınırlı | ✅ Mükemmel |
| Kazıma Hızı | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Bloklanma Riski | ⚠️ Orta | ✅ Düşük |
| Maliyet | 💰 Daha Düşük | 💰💰 Daha Yüksek |
| Karmaşıklık | ⭐ Basit | ⭐⭐ Orta |
🎯 Sticky Session'lar Ne Zaman Kullanılmalı?
Sticky Session'lar İçin İdeal Senaryolar:
1. Sosyal Medya Yönetimi
Birden fazla sosyal medya hesabı ile çalışırken oturum boyunca tek bir IP adresini korumak gerekir. Sık IP değişimi yetkilendirilmiş hesapların engellenmesine yol açar.
Tavsiye: 1-2 saatlik sticky session, her hesap için benzersiz bir IP.
2. E-ticaret ve Sepet İşlemleri
Ürün sepete ekleme, sipariş verme, ödeme işlemleri oturumun korunmasını gerektirir. IP değişimi sepetin kaybolmasına neden olur.
Tavsiye: Tam bir satın alma döngüsü için 30-60 dakikalık sticky session.
3. Form Doldurma ve Kayıt
Çok adımlı formlar ve kayıt işlemleri IP tutarlılığı gerektirir. Adımlar arasındaki IP değişimi şüphe uyandırabilir.
Tavsiye: İşlemin tamamlanması için 10-30 dakikalık sticky session.
4. Web Uygulaması Testi
Otomasyon testleri (Selenium/Puppeteer) gerçek kullanıcı deneyimini taklit etmek için IP sabitliği gerektirir.
Tavsiye: Testin tüm süresi boyunca (5-60 dakika) sticky session.
5. Kimlik Doğrulama Gerektiren API'ler
Erişim jetonunun IP adresine bağlı olduğu API'ler için IP değişimi jetonun geçersiz olmasına neden olur.
Tavsiye: Jetonun geçerlilik süresi boyunca (1-24 saat) sticky session.
💡 Hibrit Yaklaşım: En uygun çözüm, yetkilendirme için sticky session kullanmak, ardından veri toplama için rotating proxies'e geçmektir.
🐍 Python'da Rotasyon Ayarlama
Python, web kazıma için popülerdir. requests kütüphanesi ile IP rotasyonunu uygulamanın yollarını inceleyelim.
Örnek 1: Basit Döngüsel Rotasyon
import requests
from itertools import cycle
# Proxy listesi
proxies_list = [
'http://user:pass@185.45.12.34:8000',
'http://user:pass@92.118.45.78:8000',
'http://user:pass@178.62.91.22:8000',
'http://user:pass@45.89.234.56:8000'
]
# Sonsuz yineleyici oluşturma
proxy_pool = cycle(proxies_list)
# İstek gönderme fonksiyonu
def make_request(url):
proxy = next(proxy_pool)
proxies = {
'http': proxy,
'https': proxy
}
try:
response = requests.get(url, proxies=proxies, timeout=10)
print(f"Başarılı {proxy} ile: {response.status_code}")
return response
except Exception as e:
print(f"Hata {proxy} ile: {e}")
return None
# Kullanım
urls = ['https://example.com/page1', 'https://example.com/page2']
for url in urls:
make_request(url)
# Her istek listedeki bir sonraki proxy'yi kullanır
Açıklama: Bu kod, proxy listesini döngüsel olarak kullanır. Küçük görevler için uygundur.
Örnek 2: Hata Durumunda Yeniden Deneme Mantığı ile Rastgele Rotasyon
import requests
import random
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
class ProxyRotator:
def __init__(self, proxies_list):
self.proxies = proxies_list
self.failed_proxies = set()
def get_random_proxy(self):
"""Rastgele çalışan bir proxy alır"""
available = [p for p in self.proxies if p not in self.failed_proxies]
if not available:
# Tüm proxy'ler başarısız olursa, listeyi sıfırla
self.failed_proxies.clear()
available = self.proxies
return random.choice(available)
def make_request(self, url, max_retries=3):
"""Hatalarda otomatik rotasyon ile istek gönderir"""
session = requests.Session()
# Yeniden deneme stratejisi ayarı
retry = Retry(
total=max_retries,
backoff_factor=0.5,
status_forcelist=[500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
for attempt in range(max_retries):
proxy = self.get_random_proxy()
proxies = {'http': proxy, 'https': proxy}
try:
response = session.get(url, proxies=proxies, timeout=15)
# Rate limiting kontrolü
if response.status_code == 429:
print(f"{proxy} üzerinde limit aşımı, rotasyon yapılıyor...")
self.failed_proxies.add(proxy)
continue
print(f"✓ Başarılı: {proxy}")
return response
except Exception as e:
print(f"✗ Hata: {proxy}: {e}")
self.failed_proxies.add(proxy)
raise Exception(f"{url} için tüm denemeler başarısız oldu")
# Kullanım
proxies = [
'http://user:pass@proxy1.com:8000',
'http://user:pass@proxy2.com:8000',
'http://user:pass@proxy3.com:8000'
]
rotator = ProxyRotator(proxies)
response = rotator.make_request('https://example.com')
Açıklama: Hata durumunda otomatik proxy değiştiren, başarısız olan proxy'leri izleyen ve yeniden deneme mantığı içeren gelişmiş bir versiyon.
Örnek 3: Zamana Dayalı Rotasyon
import requests
import time
from datetime import datetime, timedelta
class TimeBasedRotator:
def __init__(self, proxies_list, rotation_interval=600):
"""
rotation_interval: saniye cinsinden zaman aralığı (600 = 10 dakika)
"""
self.proxies = proxies_list
self.rotation_interval = rotation_interval
self.current_proxy = None
self.last_rotation = None
self.current_index = 0
def get_proxy(self):
"""Geçerli proxy'yi alır veya süre dolduysa rotasyon yapar"""
now = datetime.now()
# İlk çalıştırma veya süre doldu
if (self.last_rotation is None or
(now - self.last_rotation).seconds >= self.rotation_interval):
self.current_proxy = self.proxies[self.current_index]
self.current_index = (self.current_index + 1) % len(self.proxies)
self.last_rotation = now
print(f"🔄 Rotasyon yapıldı: {self.current_proxy}")
return self.current_proxy
def make_request(self, url):
proxy = self.get_proxy()
proxies = {'http': proxy, 'https': proxy}
response = requests.get(url, proxies=proxies, timeout=10)
return response
# Kullanım: IP her 10 dakikada bir değişecek
rotator = TimeBasedRotator(proxies_list, rotation_interval=600)
for i in range(100):
response = rotator.make_request('https://example.com')
print(f"İstek {i}: {response.status_code}")
time.sleep(2) # 2 saniye bekleme
Açıklama: Zamana dayalı rotasyonun uygulaması.
⚡ JavaScript/Node.js'de Rotasyon Ayarlama
Node.js için axios veya node-fetch kullanılabilir. Axios ve axios-proxy-rotation ile örnekleri inceleyelim.
Örnek 1: Axios ile Temel Rotasyon
const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');
class ProxyRotator {
constructor(proxies) {
this.proxies = proxies;
this.currentIndex = 0;
}
getNextProxy() {
const proxy = this.proxies[this.currentIndex];
this.currentIndex = (this.currentIndex + 1) % this.proxies.length;
return proxy;
}
async makeRequest(url, options = {}) {
const proxy = this.getNextProxy();
const agent = new HttpsProxyAgent(proxy);
try {
const response = await axios.get(url, {
...options,
httpAgent: agent,
httpsAgent: agent,
timeout: 10000
});
console.log(`✓ Başarılı ${proxy} ile: ${response.status}`);
return response.data;
} catch (error) {
console.error(`✗ Hata ${proxy} ile: ${error.message}`);
throw error;
}
}
}
// Kullanım
const proxies = [
'http://user:pass@proxy1.com:8000',
'http://user:pass@proxy2.com:8000',
'http://user:pass@proxy3.com:8000'
];
const rotator = new ProxyRotator(proxies);
async function scrape() {
const urls = [
'https://example.com/page1',
'https://example.com/page2',
'https://example.com/page3'
];
for (const url of urls) {
try {
await rotator.makeRequest(url);
} catch (error) {
console.error(`Sayfa kazınamadı ${url}`);
}
}
}
scrape();
Örnek 2: Puppeteer ile Gelişmiş Proxy Rotasyonu
const puppeteer = require('puppeteer');
class PuppeteerProxyRotator {
constructor(proxies) {
this.proxies = proxies;
this.currentIndex = 0;
}
getNextProxy() {
const proxy = this.proxies[this.currentIndex];
this.currentIndex = (this.currentIndex + 1) % this.proxies.length;
return proxy;
}
async scrapeWithRotation(url) {
const proxy = this.getNextProxy();
// Proxy URL'sini ayrıştırma
const proxyUrl = new URL(proxy);
const browser = await puppeteer.launch({
headless: true,
args: [
`--proxy-server=${proxyUrl.protocol}//${proxyUrl.host}`,
'--no-sandbox',
'--disable-setuid-sandbox'
]
});
try {
const page = await browser.newPage();
// Proxy kimlik doğrulaması (varsa)
if (proxyUrl.username && proxyUrl.password) {
await page.authenticate({
username: proxyUrl.username,
password: proxyUrl.password
});
}
await page.goto(url, { waitUntil: 'networkidle2', timeout: 30000 });
const content = await page.content();
console.log(`✓ ${proxy} ile kazındı ${url}`);
await browser.close();
return content;
} catch (error) {
console.error(`✗ Hata ${proxy} ile: ${error.message}`);
await browser.close();
throw error;
}
}
}
// Kullanım
const proxies = [
'http://user:pass@185.45.12.34:8000',
'http://user:pass@92.118.45.78:8000'
];
const rotator = new PuppeteerProxyRotator(proxies);
async function scrapeMultiplePages() {
const urls = ['https://example.com/1', 'https://example.com/2'];
for (const url of urls) {
await rotator.scrapeWithRotation(url);
// Her sayfa yeni bir proxy ile açılır
}
}
scrapeMultiplePages();
Açıklama: Tarayıcı otomasyonu (Puppeteer) ile IP rotasyonunun entegrasyonu.
🛠️ Otomasyon Araçları
2025 yılında otomatik IP rotasyonu için birçok hazır araç ve servis mevcuttur.
Rotating Proxy Gateway (Dönen Proxy Ağ Geçidi)
Çoğu sağlayıcı (ProxyCove dahil), otomatik IP rotasyonu yapan Rotating Proxy Gateway sunar.
Nasıl Çalışır?
- Tek bir uç noktaya bağlanırsınız (örneğin,
rotate.proxycove.com:8000) - Ağ geçidi, her istekte rastgele bir IP seçer
- Proxy listesini yönetme ve rotasyon kodu yazma zorunluluğu kalkar
- Sticky session'lar kullanıcı adındaki session_id ile ayarlanabilir
# Python örneği (rotating gateway ile)
import requests
# Her istekte yeni IP için rotating
proxies = {
'http': 'http://username:password@rotate.proxycove.com:8000',
'https': 'http://username:password@rotate.proxycove.com:8000'
}
# Sticky session için session_id eklenir
sticky_proxies = {
'http': 'http://username-session-abc123:password@rotate.proxycove.com:8000',
'https': 'http://username-session-abc123:password@rotate.proxycove.com:8000'
}
# Rotating: her istekte yeni IP
for i in range(10):
r = requests.get('https://api.ipify.org', proxies=proxies)
print(f"İstek {i}: IP = {r.text}") # Her seferinde farklı IP
# Sticky: tüm istekler aynı IP ile
for i in range(10):
r = requests.get('https://api.ipify.org', proxies=sticky_proxies)
print(f"İstek {i}: IP = {r.text}") # Her zaman aynı IP
Avantajları: Rotasyon kodu yazmaya gerek yok, çalışmayan proxy'ler otomatik kaldırılır, ölçeklenebilirlik, esnek ayarlar.
📚 Hazır Kütüphaneler ve Servisler
Python Kütüphaneleri:
1. ProxyBroker
Proxy bulma, doğrulama ve otomatik rotasyon ile proxy kullanma kütüphanesi.
2. rotating-proxies (Scrapy middleware)
Scrapy için otomatik rotasyon ve kara liste yönetimi desteği sunan middleware.
3. requests-ip-rotator
IP rotasyonu desteği sunan requests kütüphanesi eklentisi.
JavaScript/Node.js Kütüphaneleri:
1. proxy-chain
Rotasyonlu ve tünelleme destekli HTTP proxy sunucusu oluşturmak için kütüphane.
2. puppeteer-extra-plugin-proxy-rotation
Her sayfa için otomatik proxy rotasyonu sağlayan Puppeteer eklentisi.
🚀 Gelişmiş Rotasyon Teknikleri
1. Ağırlıklı Rotasyon (Weighted Rotation)
Daha iyi itibara sahip proxy'ler daha sık kullanılır. Residential IP'lere daha yüksek ağırlık verilir.
2. Coğrafi Hedefli Rotasyon
Hedef URL'ye bağlı olarak otomatik olarak doğru ülkedeki proxy'nin seçilmesi.
3. Sağlık Kontrolü ve Otomatik Kaldırma
Proxy'lerin sağlığının periyodik olarak kontrol edilmesi ve çalışmayanların havuzdan otomatik olarak çıkarılması.
4. İstek Sıklığı Uyarlanabilir Rotasyon
Rotasyon sıklığı, alınan HTTP kodlarına göre otomatik olarak ayarlanır.
🎯 ProxyCove: Kutudan Çıktığı Gibi Profesyonel IP Rotasyonu
ProxyCove, rotating gateway, sticky sessions, geo-targeting ve otomatik sağlık izleme ile hazır bir çözüm sunar.
💎 ProxyCove Tarifeleri 2025:
🎁 Promosyon kodu ARTHELLO:
- İlk ay +%20 trafik ücretsiz
- 500 MB Ücretsiz test
- 7/24 Öncelikli Destek
📖 Devamı Gelecek...
Son bölümde, farklı senaryolar için optimum rotasyon sıklığını belirliyor, hız ve gizlilik arasındaki dengeyi kurmayı öğreniyor, tipik sorunları ve çözümlerini ele alıyor ve 2025 için nihai tavsiyelerimizi sunuyoruz.
Final Bölümde: Farklı görevler için optimum IP rotasyon sıklığını belirliyor, hız ve gizlilik arasındaki dengeyi kurmayı öğreniyor, tipik sorunları ve çözümlerini ele alıyor, ileri düzey stratejileri inceliyor ve 2025 için pratik tavsiyelerle sonuçları özetliyoruz.
📑 Final Bölüm İçeriği
⚡ Optimum IP Rotasyon Sıklığı
Doğru rotasyon sıklığını seçmek, başarılı veri kazıma ve otomasyonun anahtarıdır. Çok sık rotasyon ek yük yaratır ve dikkat çeker, çok seyrek rotasyon ise engellenmeye yol açar. 2025'te optimum sıklık birçok faktöre bağlıdır.
Rotasyon Sıklığını Etkileyen Faktörler
1. Hedef Site Tipi
- Yüksek Korumalı (Bankalar, Sosyal Medya): Her 3-5 istekte bir veya 10-15 dakikada bir rotasyon
- E-ticaret (Amazon, Walmart): Her 5-10 istekte bir veya 5-10 dakikada bir rotasyon
- Haber Siteleri: Her 10-20 istekte bir veya 15-30 dakikada bir rotasyon
- Halka Açık API'ler: API limitlerine göre (genellikle IP başına 100-1000 istek/saat)
- Statik Siteler: Her 20-50 istekte bir veya 30-60 dakikada bir rotasyon
2. Toplanacak Veri Hacmi
- Küçük Hacim (1,000 sayfaya kadar): Zamana dayalı, her 15-30 dakikada bir rotasyon
- Orta Hacim (1,000-10,000 sayfa): İsteğe dayalı rotasyon, her 10-15 istekte bir
- Büyük Hacim (10,000+ sayfa): İstek başına rotasyon (per-request rotation) ve büyük proxy havuzu
3. Proxy Havuzu Boyutu
- Küçük Havuz (10-50 IP): Her IP'nin "soğuması" için 30-60 dakikalık Time-based rotasyon
- Orta Havuz (50-200 IP): Her IP başına 10-20 istekte bir Request-based rotasyon
- Büyük Havuz (200+ IP): İstek başına rotasyon, maksimum hız
4. Oturum Gereksinimi
- Yetkilendirme Yok: Agresif rotasyon, her 1-5 istekte bir
- Yetkilendirme Var: Sticky session tüm oturum boyunca (1-24 saat)
- Hibrit Mod: Yetkilendirme için sticky, ardından veri toplama için rotating
📊 Optimum Rotasyon Sıklığı Matrisi
| Kullanım Senaryosu | Rotasyon Sıklığı | IP Havuzu Boyutu | İstek Arası Gecikme |
|---|---|---|---|
| Google Arama Kazıma | Her 3-5 istekte bir | 200-500 IP | 5-10 saniye |
| Amazon Fiyat Takibi | Her 5-10 istekte bir | 100-300 IP | 3-7 saniye |
| Instagram Otomasyonu | Sticky 1-2 saat | Hesap başına 1 IP | 30-60 saniye |
| Haber Toplayıcı | Her 15-30 dakikada bir | 50-100 IP | 1-3 saniye |
| Emlak Kazıma | Her 10-20 istekte bir | 50-200 IP | 2-5 saniye |
| API İzleme | API Limitlerine Göre | Limitlere Göre | Dokümantasyona Göre |
| SEO Pozisyon Takibi | Her 20-30 istekte bir | 100-300 IP | 3-8 saniye |
| Avito/Sahibinden Kazıma | Her 7-15 istekte bir | 100-200 IP | 3-6 saniye |
💡 2025 Altın Kuralı: Muhafazakar bir rotasyon sıklığıyla (her 15-20 istekte bir veya 10-15 dakikada bir) başlayın ve istek hatalarını/bloklamaları izleyerek yoğunluğu kademeli olarak artırın. Uzun vadeli istikrar, hızdan daha önemlidir.
⚖️ Yük Dengeleme ve Dağıtımı
Proxy'ler arasında doğru yük dengelemesi yapmak, uzun vadeli stabilite için kritik öneme sahiptir. Dengesiz dağıtım, bazı IP'lerin hızla "tükenmesine" ve genel verimliliğin düşmesine neden olur.
Yük Dengeleme Stratejileri
1. Round-Robin (Döngüsel)
Proxy'ler listeden sırayla seçilir. En basit yöntemdir ve eşit dağılım sağlar.
✅ Artıları: Basitlik, öngörülebilirlik, eşit dağıtım
❌ Eksileri: Proxy performansını ve durumunu dikkate almaz
2. Random (Rastgele)
Her seferinde havuzdan rastgele bir proxy seçilir. Tespit edilmesi daha zordur.
✅ Artıları: Öngörülemezlik, doğallık
❌ Eksileri: Küçük örneklemde düzensiz dağılım olabilir
3. Least Connections (En Az Bağlantı)
En az aktif bağlantıya sahip proxy seçilir. Paralel istekler için idealdir.
✅ Artıları: Paralelizmde optimum dağıtım
❌ Eksileri: Durum takibi gerektirir
4. Weighted Round-Robin (Ağırlıklı Döngüsel)
Daha iyi performans gösteren proxy'ler daha sık kullanılır. Residential IP'lere ağırlık 3, datacenter IP'lere ağırlık 1 verilebilir.
✅ Artıları: Proxy kalitesini dikkate alır, optimum performans
❌ Eksileri: Uygulaması daha karmaşıktır, ağırlık ayarı gerektirir
5. IP Hash (Hashleme)
Proxy, URL veya alan adının hash değerine göre seçilir. Aynı alan adına yapılan istekler her zaman aynı IP'den gider.
✅ Artıları: Belirli bir alan adı için IP tutarlılığı
❌ Eksileri: Az sayıda alan adı varsa dağılım dengesiz olabilir
Cooldown Süresi (Soğuma Dönemi)
Kullanılan bir IP'nin, tekrar kullanılmadan önce "soğuması" gerekir. Bu, tespit edilmeyi önlemek için kritik öneme sahiptir.
Önerilen Soğuma Süreleri:
- Küçük Havuz (10-50 IP): IP başına kullanım arasında 30-60 dakika
- Orta Havuz (50-200 IP): Kullanım arasında 15-30 dakika
- Büyük Havuz (200+ IP): İstek başına rotasyonda 5-15 dakika veya cooldown yok
Havuz Boyutu Hesaplama Formülü: Dakikada N istek yapıyorsanız ve cooldown M dakika ise, minimum havuz boyutu = N × M IP olmalıdır.
🎭 Hız vs Gizlilik
Kazıma hızı ile gizlilik arasında temel bir ödünleşme (trade-off) vardır. Agresif kazıma daha hızlı sonuç verir ancak engellenme riski taşır. Dikkatli kazıma daha yavaştır ancak daha istikrarlıdır.
Dengeleme İçin Üç Yaklaşım
1. Agresif Mod (Hız Öncelikli)
- İstek başına rotasyon
- Minimum gecikmeler (0.5-1 saniye arası)
- Büyük proxy havuzu (500+ IP)
- Yüksek paralellik (5-50 iş parçacığı)
⚠️ Riskler: Yüksek bloklanma olasılığı, IP'lerin kısa ömrü, rotasyonla bile rate limiting tetiklenme riski.
📊 Uygun Olduğu Durumlar: Tek seferlik görevler, genel veri toplama, toleranslı siteler.
2. Dengeli Mod (Balanced)
- İstek başına rotasyon (her 10-20 istekte bir)
- Orta gecikmeler (2-5 saniye arası)
- Orta havuz (100-300 IP)
- Makul paralellik (5-15 iş parçacığı)
✅ Avantajları: Hız ve stabilite arasında iyi denge, çoğu görev için uygundur.
📊 Uygun Olduğu Durumlar: E-ticaret izleme, düzenli kazıma, uzun vadeli projeler.
3. Gizlilik Öncelikli Mod (Stealth-First)
- Zamana dayalı rotasyon (her 15-30 dakikada bir)
- Büyük gecikmeler (5-15 saniye arası)
- Daha küçük, kaliteli havuz (50-100 residential IP)
- Minimum paralellik (1-3 iş parçacığı)
- İnsan davranışını taklit etme (rastgele gecikmeler, kullanıcı eylemleri)
✅ Avantajları: Minimum bloklanma riski, uzun vadeli stabilite, gerçek kullanıcıya benzer görünüm.
📊 Uygun Olduğu Durumlar: Sosyal medya, yüksek korumalı siteler, hesap yönetimi, rekabet analizi.
💡 2025 Tavsiyesi: En iyi yaklaşım, dikkatli modda başlamak ve başarı metriklerini izleyerek agresifliği kademeli olarak artırmaktır. Koruma sistemleri sürekli geliştiği için esneklik, sabit bir yapılandırmadan daha önemlidir.
🔧 Sorun Giderme: Tipik Sorunlar ve Çözümleri
Sık Karşılaşılan Sorunlar ve Çözümleri
❌ Sorun 1: Rotasyonla bile 429 (Too Many Requests) alıyorum
Olası Nedenler:
- Aynı alana çok sık istek gönderme
- Tüm proxy'lerin aynı alt ağdan gelmesi (ASN ile tespit edilir)
- User-Agent ve diğer başlıkların rotasyonunun yapılmaması
- Çok kısa cooldown süresi
✅ Çözümler:
- İstekler arasındaki gecikmeyi 5-10 saniyeye çıkarın
- Residential proxy kullanın veya farklı ASN'lerden IP'ler seçin
- User-Agent, başlıklar ve TLS parmak izi rotasyonu ekleyin
- Proxy havuzunu 2-3 kat artırın
- Gecikmelere jitter (rastgele sapma) ekleyin
❌ Sorun 2: IP değiştiğinde sürekli CAPTCHA alıyorum
Olası Nedenler:
- Kötü itibarlı Datacenter proxy'leri
- Çok agresif rotasyon
- Ücretsiz veya halka açık proxy kullanımı
- IP değişse bile tarayıcı parmak izinin sabit kalması
✅ Çözümler:
- Residential veya mobile proxy'lere geçiş yapın
- Sticky session kullanmayı deneyin
- CAPTCHA çözme servislerini entegre edin (2Captcha, AntiCaptcha)
- Anti-detect tarayıcılar (Playwright, puppeteer-extra-plugin-stealth) kullanın
- Proxy'leri ana işe başlamadan önce "ısıtın" (warm-up)
❌ Sorun 3: Yetkilendirme sırasında oturum kaybı
Olası Nedenler:
- IP rotasyonu oturumu bozuyor
- Çerezler istekler arasında korunmuyor
- Sticky session süresi doldu
✅ Çözümler:
- Yetkilendirme için session_id ile sticky session kullanın
- Sticky session süresini uzatın (1-24 saat)
- Çerezleri/token'ları oturumlar arasında kaydedip yeniden kullanın
- Hibrit yaklaşım: auth için sticky, veri toplama için rotating
❌ Sorun 4: Proxy havuzunun hızla tükenmesi
Olası Nedenler:
- Çok agresif istek başına rotasyon
- Büyük hacimli iş için küçük havuz
- Cooldown süresinin dikkate alınmaması
✅ Çözümler:
- Burst rotation'a geçin (her N istekte bir)
- İş hacmine göre proxy havuzunu artırın
- Kuyruk sistemi ile cooldown takibi yapın
- Prowvider'ın rotating gateway özelliğini kullanın
❌ Sorun 5: Yavaş Kazıma Hızı
Olası Nedenler:
- Yüksek pingli proxy'ler
- Paralel işleme yerine sıralı işleme
- Büyük gecikmeler
- Sık rotasyonun getirdiği bağlantı kurulum yükü
✅ Çözümler:
- Bağlantı havuzlama (connection pooling) ve keep-alive kullanın
- Paralel işleme (threading/asyncio) uygulayın
- Rotasyon sıklığını azaltın (burst yerine per-request'ten kaçının)
- Düşük pingli proxy'leri filtreleyin
- Daha hızlı proxy türlerini (ISP) kullanın
📊 İzleme ve Analitik
Etkili rotasyon izleme, sorunları erken aşamada tespit etmek ve stratejiyi optimize etmek için gereklidir. 2025'te profesyonel yaklaşım, birçok metriğin takibini gerektirir.
İzlenecek Temel Metrikler
| Metrik | Normal Değer | Sorun Varsa |
|---|---|---|
| Başarı Oranı | > %95 | < %85 |
| 429 Hata Oranı | < %2 | > %10 |
| 403/503 Hata Oranı | < %3 | > %15 |
| CAPTCHA Oranı | < %1 | > %5 |
| Ortalama Yanıt Süresi | < 3 saniye | > 10 saniye |
| Zaman Aşımı Oranı | < %1 | > %5 |
| Kullanılan Benzersiz IP | > %80 havuz | < %50 havuz |
🔔 Uyarılar ve Otomasyon
Eşik değerleri aşıldığında otomatik bildirimler ayarlayın:
- Başarı oranı %90'ın altına düşerse e-posta/Slack bildirimi
- 429 hataları > %10 olursa istek hızını otomatik yavaşlatma
- CAPTCHA oranı > %5 olursa daha kaliteli proxy'lere geçiş
- Proxy'lerin %30'dan fazlası kullanılamaz durumdaysa kritik uyarı
⭐ En İyi Uygulamalar 2025
✅ 1. IP rotasyonunu her zaman diğer tekniklerle birleştirin
IP rotasyonu sadece bir bileşendir. User-Agent, başlıklar, çerezler ve insan davranışını taklit etmeyi de rotasyona dahil edin.
✅ 2. Kritik görevler için residential/mobile proxy kullanın
Datacenter proxy'leri daha ucuzdur ancak itibarları düşüktür. Sosyal medya, e-ticaret ve yüksek korumalı siteler için yalnızca residential veya mobile IP kullanın.
✅ 3. Graceful degradation (Kademeli Düşüş) uygulayın
Hata artışına göre otomatik olarak gecikmeleri artırın, daha kaliteli proxy'lere geçin. Adaptasyon, sabit yapılandırmadan daha değerlidir.
✅ 4. Ölçeklendirmeden önce küçük örneklemde test edin
Büyük kazımaya başlamadan önce stratejinizi 1000 istek üzerinde test edin. Başarı oranının %95'in üzerinde olduğundan, engelleme olmadığından ve hızın kabul edilebilir olduğundan emin olun.
✅ 5. robots.txt ve Hizmet Şartlarına uyun
Etik kazıma, uzun vadeli başarı için önemlidir. Sunucuları aşırı yüklemeyin, kişisel verileri izinsiz toplamayın.
✅ 6. Kaliteli proxy'lere yatırım yapın
Ucuz veya ücretsiz proxy'ler uzun vadede daha pahalıya mal olur: düşük hız, sık engelleme, veri kaybı riski. ProxyCove gibi güvenilir sağlayıcıları tercih edin.
🎯 Sonuç ve Tavsiyeler
2025'te IP adresi rotasyonu, sadece proxy değiştirmek değil, aynı zamanda birçok faktörün dengelenmesini gerektiren karmaşık bir koruma aşma stratejisidir.
Temel Çıkarımlar:
- Evrensel çözüm yok — Strateji seçimi site tipine, veri hacmine, bütçeye ve hız gereksinimlerine bağlıdır
- Üç ana rotasyon tipi: time-based (stabilite), request-based (hız), random (gizlilik) — kombinasyonları kullanın
- Sticky sessions zorunludur — Yetkilendirme, sepetler ve çok adımlı işlemler için gereklidir. Rotating ise toplu kazıma içindir
- Kalite nicelikten önemlidir — Çoğu görev için 50 residential IP, 500 datacenter IP'den iyidir
- İzleme şarttır — Başarı oranı, hata kodları ve yanıt süresini izleyerek optimizasyon yapın
- Hız ve gizliliği dengeleyin — Agresif kazıma kısa vadeli, dikkatli kazıma uzun vadeli başarı getirir
- Prowvider üzerinden otomasyon — Kendi rotasyon kodunuz yerine rotating gateway kullanın
- Adaptasyon esastır — Koruma sistemleri geliştiği için stratejiniz de gelişmelidir
🚀 Kazımaya Başlamadan Önce Kontrol Listesi:
💼 İşletmeler İçin:
Veri kazımaya dayalı işleriniz (fiyat takibi, rekabet analizi) için proxy altyapısından tasarruf etmeyin. Kesinti veya engelleme maliyeti, kaliteli proxy ve doğru rotasyon stratejisine yapılan yatırımdan çok daha yüksektir.
🎓 Geliştiriciler İçin:
Sürekli engelleme sorunlarıyla uğraşmak yerine, sağlam bir rotasyon sistemi yazmaya zaman ayırın. Hazır kütüphaneleri kullanın, metrikleri günlüğe kaydedin ve farklı stratejileri test edin. Otomasyon yatırımı kendini kat kat geri ödeyecektir.
🚀 Profesyonel IP Rotasyonunu Uygulamaya Hazır Mısınız?
ProxyCove, 2025'te IP rotasyonu gerektiren tüm görevleriniz için güvenilir ortağınızdır.
🎁 Özel Teklif
- ✨ İlk ay +%20 ek trafik ücretsiz
- 🎯 Kalite testi için 500 MB deneme
- 💬 Rusça 7/24 Öncelikli Destek
- 📚 Python ve JavaScript için Hazır Kod Örnekleri
- 🔧 Rotasyon ayarları için Ücretsiz Danışmanlık
- ✅ Rotating + Sticky
- ✅ 50+ ülke
- ✅ API erişimi
- ✅ Başlangıçtaki her şey
- ✅ Geo-targeting
- ✅ Mobile proxy'ler
- ✅ Hız Önceliği
- ✅ Profesyonel'deki her şey
- ✅ Özel havuz
- ✅ Özel çözümler
- ✅ %99.9 SLA
Uzun vadeli taahhüt yok • Her an iptal edilebilir • 7 gün para iade garantisi
📈 5,000'den fazla şirket 2025'te kazıma, izleme ve otomasyon için ProxyCove'a güveniyor