Bloga geri dön

Proxy Sürekli Yasaklanıyorsa Ne Yapmalı: Tanı ve Çözüm İçin Tam Rehber

Proxy engelleme nedenlerini analiz ediyoruz ve pratik çözümler sunuyoruz: doğru rotasyondan tarayıcı parmak izinin ayarlanmasına kadar.

📅15 Aralık 2025

Proksiler sürekli yasaklanıyorsa ne yapmalı: tanılama ve sorun çözme için tam rehber

Sürekli proksi engellenmesi, web scraping, otomasyon ve çoklu hesap yönetimi sırasında en sık karşılaşılan sorunlardan biridir. Bu makalede, bunun neden olduğunu ve sorunu sistematik olarak nasıl çözeceğinizi, sağlayıcıları değiştirme umuduyla sonsuz döngüye girmeden açıklayacağız.

Proksiler gerçekten neden yasaklanıyor

Çözüm aramadan önce, engelleme mekanizmasını anlamanız gerekir. Modern anti-dolandırıcılık sistemleri çok katmanlı koruma kullanır ve proksi engellenmesi sadece bir sonuçtur, neden değildir. Bu sistemlerin nasıl çalıştığını anlamak, etkili bir atlatma stratejisi oluşturmanıza olanak sağlar.

IP itibarı ve kara listeler

Her IP adresinin, kullanım geçmişine dayalı bir itibarı vardır. Bir adres daha önce spam, DDoS saldırıları veya toplu scraping için kullanıldıysa, Spamhaus, SORBS veya belirli hizmetlerin özel listeleri gibi veritabanlarına girer. Bu IP üzerinden bağlandığınızda, sistem hemen size şüpheyle yaklaşır.

Veri merkezi proksileri bu soruna özellikle yatkındır. Tüm alt ağlar "hosting" olarak işaretlenebilir ve bu ağlardan gelen herhangi bir trafik otomatik olarak artan kontrol seviyesi alır. Amazon AWS, Google Cloud, DigitalOcean — bunların IP aralıkları iyi bilinir ve sıklıkla önleyici olarak engellenir.

IP itibarını IPQualityScore, Scamalytics veya AbuseIPDB gibi hizmetler aracılığıyla kontrol edebilirsiniz. Proksiniz 75'ten yüksek bir dolandırıcılık puanı gösteriyorsa, sorun budur — sağlayıcıyı değiştirin veya proksi türünü değiştirin.

İstek desenleri

İnsan saniyede 100 istek yapmaz. İnsan 2 saniye periyodikliğiyle sayfalar arasında gezinmez. İnsan resimleri, CSS ve JavaScript'i görmezden gelerek sadece HTML talep etmez. Anti-dolandırıcılık sistemleri tam olarak bu desenleri analiz eder ve "insan benzeri" davranıştan herhangi bir sapma engelleme riskini artırır.

İstekler arasındaki zaman istatistiği özellikle göstericidir. Sabit bir aralık varsa — bu otomasyonun açık bir işaretidir. Rastgele bir gecikme ekleme (örneğin, 1 ile 5 saniye arasında) tespit olasılığını önemli ölçüde azaltır.

Meta veri uyumsuzluğu

User-Agent'iniz Windows'ta Chrome kullandığınızı söylediğinde, ancak HTTP başlıkları Python requests özelliklerini ortaya çıkardığında — bu kırmızı bayraktır. IP adresi Almanya'da konumlandırıldığında, ancak tarayıcı dil ayarları Rusça gösterdiğinde — başka bir kırmızı bayraktır. JavaScript'teki saat dilimi IP coğrafyası ile eşleşmediğinde — üçüncü bayraktır.

Bu tür uyumsuzlukların birikimi, sistemin bağlantıyı şüpheli olarak sınıflandırmasına ve koruma önlemleri almasına yol açar: captcha'dan tam IP engellenmesine kadar.

Tarayıcı parmak izi

Modern koruma sistemleri tarayıcının onlarca parametresini toplar: ekran çözünürlüğü, yüklü yazı tipleri, eklentiler, WebGL işleme, ses bağlamı ve çok daha fazlası. Bu parametrelerin toplamı, hatta cookies olmadan bile sizi tanımlamanıza izin veren benzersiz bir "parmak izi" oluşturur.

Proksisini değiştirirseniz, ancak parmak izi aynı kalırsa, sistem bunun aynı kullanıcı olduğunu anlar. Bir parmak izi kısa sürede yüzlerce farklı IP'den görünürse — bu otomasyonun açık bir işaretidir.

Tanılama: engelleme nedenini nasıl anlayacaksınız

Ayarları rastgele değiştirmeden önce, tanılama yapın. Bu, saatlerce deney yapmanızı kurtaracak ve sorunun gerçek nedenini bulmanıza yardımcı olacaktır. Sistematik bir tanılama yaklaşımı, etkili bir çözümün anahtarıdır.

Adım 1: Proksinin kendisini kontrol edin

Ana komut dosyanızdan bağımsız olarak temel proksi işlevselliğini kontrol ederek başlayın:

import requests

proxy = {
    "http": "http://user:pass@proxy-server:port",
    "https": "http://user:pass@proxy-server:port"
}

# Temel işlevsellik kontrolü
try:
    response = requests.get("https://httpbin.org/ip", proxies=proxy, timeout=10)
    print(f"Proksiden IP: {response.json()['origin']}")
except Exception as e:
    print(f"Bağlantı hatası: {e}")

# Gerçek IP sızıntısını kontrol edin
response = requests.get("https://browserleaks.com/ip", proxies=proxy)
# Gerçek IP'niz ile karşılaştırın

Proksi basit isteklerde bile çalışmıyorsa — sorun proksinin kendisinde veya kimlik bilgilerindedir. Bağlantı biçiminin doğruluğunu, sağlayıcı bakiyesinin mevcudiyetini ve limitlerini kontrol edin.

Adım 2: IP itibarını kontrol edin

Kapsamlı bir değerlendirme için birkaç hizmet kullanın:

# Proksi IP'sini alın
proxy_ip = requests.get("https://api.ipify.org", proxies=proxy).text

# Bu hizmetlerde kontrol edin:
# https://www.ipqualityscore.com/free-ip-lookup-proxy-vpn-test
# https://scamalytics.com/ip/{proxy_ip}
# https://www.abuseipdb.com/check/{proxy_ip}
# https://whatismyipaddress.com/ip/{proxy_ip}

print(f"Yukarıdaki hizmetlerde {proxy_ip} IP'sini kontrol edin")

Aşağıdaki göstergelere dikkat edin: dolandırıcılık puanı (50'den düşük olmalı), IP türü (veri merkezi yerine residential daha iyidir), kara listelerde bulunma. IP, VPN/Proxy olarak işaretlenmişse — birçok site başlangıçta buna şüpheyle yaklaşacaktır.

Adım 3: Sorunu izole edin

Aynı proksisini farklı hedef sitelerde deneyin. Engelleme her yerde oluyorsa — sorun proksidedir veya ayarlarınızdadır. Sadece belirli bir sitede oluyorsa — sorun o sitenin korumasında veya davranışınızdadır.

Ayrıca bir sitede farklı proksiler deneyin. Tümü engellenmişse — sorun prokside değil, komut dosyanızda, parmak izinde veya davranış deseninde. Bu, birçok kişinin atladığı kritik bir testtir.

Adım 4: Sunucu yanıtlarını analiz edin

Farklı engelleme türleri farklı şekillerde ortaya çıkar. Bunları ayırt etmeyi öğrenin:

def analyze_response(response):
    status = response.status_code
    
    if status == 403:
        print("Erişim reddedildi — IP muhtemelen kara listede")
    elif status == 429:
        print("Çok fazla istek — istek sıklığını azaltın")
    elif status == 503:
        print("Hizmet kullanılamıyor — DDoS koruması olabilir")
    elif status == 407:
        print("Proksi yetkilendirmesi gerekli — kimlik bilgilerini kontrol edin")
    elif "captcha" in response.text.lower():
        print("Captcha algılandı — bot şüphesi")
    elif "blocked" in response.text.lower():
        print("Açık engelleme — IP'yi değiştirin ve yaklaşımı gözden geçirin")
    elif len(response.text) < 1000:
        print("Şüpheli kısa yanıt — muhtemelen sahte")
    else:
        print(f"Durum {status}, yanıt uzunluğu: {len(response.text)}")

Doğru rotasyon: sıklık, mantık, uygulama

Proksi rotasyonu sadece "IP'yi daha sık değiştirmek" değildir. Yanlış rotasyon, yokluğundan daha fazla zarar verebilir. Farklı stratejileri ve ne zaman uygulanacağını inceleyelim.

Strateji 1: İstek sayısına göre rotasyon

En basit yaklaşım — belirli sayıda istekten sonra IP'yi değiştirmek. Oturum gerekli olmayan scraping için uygundur:

import random

class ProxyRotator:
    def __init__(self, proxy_list, requests_per_proxy=50):
        self.proxies = proxy_list
        self.requests_per_proxy = requests_per_proxy
        self.current_proxy = None
        self.request_count = 0
    
    def get_proxy(self):
        if self.current_proxy is None or self.request_count >= self.requests_per_proxy:
            # İstek sayısına rastgelelik ekleyin
            self.requests_per_proxy = random.randint(30, 70)
            self.current_proxy = random.choice(self.proxies)
            self.request_count = 0
        
        self.request_count += 1
        return self.current_proxy

# Kullanım
rotator = ProxyRotator(proxy_list)
for url in urls_to_scrape:
    proxy = rotator.get_proxy()
    response = requests.get(url, proxies={"http": proxy, "https": proxy})

İstek sayısında rastgeleliğe dikkat edin. Sabit bir sayı (örneğin, tam olarak 50) — tespit edilebilecek bir desendir. Rastgele bir aralık davranışı daha az öngörülebilir hale getirir.

Strateji 2: Zamana göre rotasyon

Oturum gerekli olan görevler için (örneğin, hesap yönetimi), IP'yi zamana bağlamak daha iyidir:

import time
import random

class TimeBasedRotator:
    def __init__(self, proxy_list, min_minutes=10, max_minutes=30):
        self.proxies = proxy_list
        self.min_seconds = min_minutes * 60
        self.max_seconds = max_minutes * 60
        self.current_proxy = None
        self.rotation_time = 0
    
    def get_proxy(self):
        current_time = time.time()
        
        if self.current_proxy is None or current_time >= self.rotation_time:
            self.current_proxy = random.choice(self.proxies)
            # Sonraki rotasyona kadar rastgele aralık
            interval = random.randint(self.min_seconds, self.max_seconds)
            self.rotation_time = current_time + interval
            print(f"Yeni proksi, sonraki rotasyon {interval//60} dakika içinde")
        
        return self.current_proxy

Strateji 3: Hesaplar için yapışkan oturumlar

Birden fazla hesapla çalışırken, her hesabın sabit bir IP kullanması kritik öneme sahiptir. Oturum açmış bir hesap için IP değiştirmek — yasaklanmanın kesin yoludur:

class AccountProxyManager:
    def __init__(self, proxy_pool):
        self.proxy_pool = proxy_pool
        self.account_proxies = {}  # account_id -> proxy
        self.used_proxies = set()
    
    def get_proxy_for_account(self, account_id):
        # Hesaba zaten bir proksi atanmışsa — onu döndürün
        if account_id in self.account_proxies:
            return self.account_proxies[account_id]
        
        # Boş bir proksi bulun
        available = [p for p in self.proxy_pool if p not in self.used_proxies]
        
        if not available:
            raise Exception("Yeni hesaplar için boş proksi yok")
        
        proxy = random.choice(available)
        self.account_proxies[account_id] = proxy
        self.used_proxies.add(proxy)
        
        return proxy
    
    def release_account(self, account_id):
        """Hesap silindiğinde proksisini serbest bırakır"""
        if account_id in self.account_proxies:
            proxy = self.account_proxies.pop(account_id)
            self.used_proxies.discard(proxy)

# Kullanım
manager = AccountProxyManager(residential_proxy_list)

for account in accounts:
    proxy = manager.get_proxy_for_account(account.id)
    # Bu hesabın tüm işlemleri bir IP üzerinden yapılır

Strateji 4: Uyarlanabilir rotasyon

En gelişmiş yaklaşım — hedef siteden gelen sinyallere yanıt olarak proksisini değiştirmek:

class AdaptiveRotator:
    def __init__(self, proxy_list):
        self.proxies = proxy_list
        self.current_proxy = random.choice(proxy_list)
        self.proxy_scores = {p: 100 for p in proxy_list}  # Başlangıç "sağlığı"
    
    def get_proxy(self):
        return self.current_proxy
    
    def report_result(self, success, response_code=200):
        """Her istekten sonra çağrılır"""
        if success and response_code == 200:
            # Başarılı istek — puanı biraz artırın
            self.proxy_scores[self.current_proxy] = min(100, 
                self.proxy_scores[self.current_proxy] + 1)
        elif response_code == 429:
            # Oran sınırı — puanı azaltın ve döndürün
            self.proxy_scores[self.current_proxy] -= 30
            self._rotate()
        elif response_code == 403:
            # Yasaklama — puanı sıfırlayın ve döndürün
            self.proxy_scores[self.current_proxy] = 0
            self._rotate()
        elif response_code == 503:
            # Muhtemel koruma — puanı azaltın ve döndürün
            self.proxy_scores[self.current_proxy] -= 20
            self._rotate()
    
    def _rotate(self):
        # En iyi puana sahip proksisini seçin
        available = [(p, s) for p, s in self.proxy_scores.items() if s > 20]
        if not available:
            # Tüm proksiler "ölü" — puanları sıfırlayın
            self.proxy_scores = {p: 50 for p in self.proxies}
            available = list(self.proxy_scores.items())
        
        # Puana göre ağırlıklı seçim
        self.current_proxy = max(available, key=lambda x: x[1])[0]
        print(f"Puanı {self.proxy_scores[self.current_proxy]} olan proksiye döndürüldü")

Tarayıcı parmak izi ve engellemenin rolü

Parmak izi, cookies olmadan bile sizi tanımlamanıza izin veren tarayıcı özelliklerinin toplamıdır. IP'yi değiştirirseniz, ancak parmak izi aynı kalırsa, koruma sistemi tüm oturumlarınızı kolayca bağlantılandırır.

Parmak izinden oluşan şey

Modern parmak izi onlarca parametreyi içerir. İşte ana kategoriler:

Kategori Parametreler Tanımlamadaki ağırlık
User-Agent Tarayıcı, sürüm, işletim sistemi Orta
Ekran Çözünürlük, renk derinliği, piksel oranı Orta
Yazı tipleri Yüklü yazı tipleri listesi Yüksek
WebGL Renderer, vendor, işleme karması Çok yüksek
Canvas Çizilen görüntünün karması Çok yüksek
Ses AudioContext parmak izi Yüksek
Saat dilimi Saat dilimi, ofset Orta
Diller navigator.languages Orta
Eklentiler navigator.plugins Düşük (modern tarayıcılarda)

Parmak izi ve IP tutarlılığı

Parmak izinin IP coğrafyası ile eşleşmesi kritik öneme sahiptir. Proksi Almanya'daysa, parmak izi Alman bir kullanıcı gibi görünmelidir:

// Uyumsuzluk örneği (KÖTÜ):
// IP: Almanya
// Saat dilimi: America/New_York
// Diller: ["ru-RU", "ru"]
// Bu şüphe uyandıracaktır

// Tutarlı parmak izi (İYİ):
// IP: Almanya
// Saat dilimi: Europe/Berlin
// Diller: ["de-DE", "de", "en-US", "en"]

Parmak izi yönetimi araçları

Ciddi çalışma için özel araçlar kullanın:

Stealth ile Playwright:

from playwright.sync_api import sync_playwright
from playwright_stealth import stealth_sync

with sync_playwright() as p:
    browser = p.chromium.launch(
        proxy={"server": "http://proxy:port", "username": "user", "password": "pass"}
    )
    
    context = browser.new_context(
        viewport={"width": 1920, "height": 1080},
        locale="de-DE",
        timezone_id="Europe/Berlin",
        geolocation={"latitude": 52.52, "longitude": 13.405},
        permissions=["geolocation"]
    )
    
    page = context.new_page()
    stealth_sync(page)  # Stealth yamaları uygulayın
    
    page.goto("https://target-site.com")

Puppeteer ile puppeteer-extra:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({
    args: [`--proxy-server=http://proxy:port`]
});

const page = await browser.newPage();

// Saat dilimini geçersiz kılın
await page.evaluateOnNewDocument(() => {
    Object.defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', {
        value: function() {
            return { timeZone: 'Europe/Berlin' };
        }
    });
});

Anti-detect tarayıcılar

Hesap yönetimi için sıklıkla anti-detect tarayıcılar kullanılır (Multilogin, GoLogin, Dolphin Anty ve diğerleri). Benzersiz parmak izine sahip izole profiller oluşturmanıza izin verirler. Her profil kendi parametrelerine, cookies'lerine, localStorage'ına sahiptir — tamamen izole bir ortam.

Anti-detect'in avantajı — parmak izi sorununu "kutudan çıkar çıkmaz" çözmesidir. Dezavantajı — maliyet ve otomasyon karmaşıklığıdır (ancak çoğunun API'si vardır).

Davranış desenleri: bot gibi görünmemek

Mükemmel parmak izi ve temiz IP ile bile, insan olmayan davranış nedeniyle yasaklanabilirsiniz. Modern sistemler sadece teknik parametreleri değil, site ile etkileşim desenlerini de analiz eder.

Zaman gecikmeleri

İnsan sabit aralıklarla istek yapmaz. Normal dağılımlı rastgele gecikmeler ekleyin:

import random
import time
import numpy as np

def human_delay(min_sec=1, max_sec=5, mean=2.5):
    """
    İnsan benzeri gecikme oluşturur.
    Lognormal dağılımı kullanır — 
    çoğu gecikme kısa, ancak bazen uzun olur.
    """
    delay = np.random.lognormal(mean=np.log(mean), sigma=0.5)
    delay = max(min_sec, min(max_sec, delay))
    return delay

def human_typing_delay():
    """Tuş vuruşları arasındaki gecikme"""
    return random.uniform(0.05, 0.25)

# Kullanım
for url in urls:
    response = requests.get(url, proxies=proxy)
    process(response)
    time.sleep(human_delay())  # İstekler arasında rastgele duraklama

Gezinmeyi taklit etme

İnsan doğrudan ürün sayfasına gitmez. Ana sayfaya girer, arama kullanır, kategorileri görüntüler. Bu yolu taklit edin:

async def human_like_navigation(page, target_url):
    """İnsan benzeri gezinmeyi taklit eder"""
    
    # 1. Ana sayfaya girin
    await page.goto("https://example.com")
    await page.wait_for_timeout(random.randint(2000, 4000))
    
    # 2. Bazen ana sayfayı kaydırın
    if random.random() > 0.5:
        await page.evaluate("window.scrollBy(0, 300)")
        await page.wait_for_timeout(random.randint(1000, 2000))
    
    # 3. Arama veya gezinme kullanın
    if random.random() > 0.3:
        search_box = await page.query_selector('input[type="search"]')
        if search_box:
            await search_box.type("search query", delay=100)
            await page.keyboard.press("Enter")
            await page.wait_for_timeout(random.randint(2000, 4000))
    
    # 4. Hedef sayfaya gidin
    await page.goto(target_url)
    
    # 5. Sayfayı insan gibi kaydırın
    await human_scroll(page)

async def human_scroll(page):
    """İnsan benzeri kaydırmayı taklit eder"""
    scroll_height = await page.evaluate("document.body.scrollHeight")
    current_position = 0
    
    while current_position < scroll_height * 0.7:  # Sonuna kadar değil
        scroll_amount = random.randint(200, 500)
        await page.evaluate(f"window.scrollBy(0, {scroll_amount})")
        current_position += scroll_amount
        await page.wait_for_timeout(random.randint(500, 1500))

Fare hareketleri

Bazı sistemler fare hareketlerini izler. A noktasından B noktasına doğrusal hareket — bot işaretidir. İnsan fare'yi eğri bir yolla mikro-düzeltmelerle hareket ettirir:

import bezier
import numpy as np

def generate_human_mouse_path(start, end, num_points=50):
    """
    İnsan benzeri fare yolunu oluşturur,
    Bezier eğrileri ve hafif gürültü kullanarak.
    """
    # Bezier eğrisi için kontrol noktaları
    control1 = (
        start[0] + (end[0] - start[0]) * random.uniform(0.2, 0.4) + random.randint(-50, 50),
        start[1] + (end[1] - start[1]) * random.uniform(0.2, 0.4) + random.randint(-50, 50)
    )
    control2 = (
        start[0] + (end[0] - start[0]) * random.uniform(0.6, 0.8) + random.randint(-50, 50),
        start[1] + (end[1] - start[1]) * random.uniform(0.6, 0.8) + random.randint(-50, 50)
    )
    
    # Bezier eğrisi oluşturun
    nodes = np.asfortranarray([
        [start[0], control1[0], control2[0], end[0]],
        [start[1], control1[1], control2[1], end[1]]
    ])
    curve = bezier.Curve(nodes, degree=3)
    
    # Eğri üzerinde noktalar oluşturun
    points = []
    for t in np.linspace(0, 1, num_points):
        point = curve.evaluate(t)
        # Mikro-gürültü ekleyin
        x = point[0][0] + random.uniform(-2, 2)
        y = point[1][0] + random.uniform(-2, 2)
        points.append((x, y))
    
    return points

async def human_click(page, selector):
    """İnsan benzeri fare hareketi ile tıklar"""
    element = await page.query_selector(selector)
    box = await element.bounding_box()
    
    # Hedef nokta — merkez değil, öğe içinde rastgele nokta
    target_x = box['x'] + random.uniform(box['width'] * 0.2, box['width'] * 0.8)
    target_y = box['y'] + random.uniform(box['height'] * 0.2, box['height'] * 0.8)
    
    # Fare'nin mevcut konumu (veya rastgele başlangıç)
    start_x = random.randint(0, 1920)
    start_y = random.randint(0, 1080)
    
    # Yol oluşturun
    path = generate_human_mouse_path((start_x, start_y), (target_x, target_y))
    
    # Fare'yi yol boyunca hareket ettirin
    for x, y in path:
        await page.mouse.move(x, y)
        await page.wait_for_timeout(random.randint(5, 20))
    
    # Tıklamadan önce küçük duraklama
    await page.wait_for_timeout(random.randint(50, 150))
    await page.mouse.click(target_x, target_y)

Kaynakların yüklenmesi

Gerçek tarayıcı sadece HTML değil, CSS, JavaScript, resimler, yazı tipleri de yükler. Sadece HTML talep ederseniz — bu şüphelidir. Headless tarayıcılarla çalışırken bu sorun otomatik olarak çözülür, ancak HTTP istemcileri kullanırken bu noktayı göz önünde bulundurun.

Göreviniz için proksi türü seçimi

Farklı proksi türlerinin farklı özellikleri vardır ve farklı görevler için uygundur. Yanlış seçim — engellemenin sık nedenidir.

Veri merkezi proksiler

Veri merkezi proksiler — barındırma sağlayıcılarına ait IP adresler. Bunlar, büyük veri merkezlerinin AS'lerine (otonom sistemler) ait olduğu için kolayca tanımlanabilir.

Artıları:

  • Yüksek hız ve istikrar
  • Düşük maliyet
  • Geniş IP havuzları

Eksileri:

  • Kolayca tespit edilir
  • Sıklıkla kara listelerde
  • Ciddi korumaya sahip siteler için uygun değil

Uygun görevler: SEO araçları, erişilebilirlik kontrolü, katı korumaya sahip olmayan API'lerle çalışma, test.

Residential proksiler

Residential proksiler — ortaklık programları veya uygulamalardaki SDK aracılığıyla sağlanan gerçek kullanıcıların IP adresleri. Sıradan internet sağlayıcılarına (ISP) aittir.

Artıları:

  • Sıradan kullanıcılar gibi görünür
  • Düşük dolandırıcılık puanı
  • Geniş coğrafya
  • Tespit edilmesi zor

Eksileri:

  • Daha yüksek maliyet (trafik için ödeme)
  • Hız son kullanıcıya bağlı
  • IP'ler "gidebilir" (kullanıcı cihazı kapattı)

Uygun görevler: korumalı siteleri scraping, sosyal ağlarla çalışma, e-ticaret, tespit edilmemek önemli olan herhangi bir görev.

Mobil proksiler

Mobil proksiler — mobil operatörlerin IP adresleri (MTS, Beeline, Megafon ve diğer ülkelerdeki analoglar). CGNAT teknolojisi nedeniyle özel bir statüye sahiptir.

Artıları:

  • Siteler tarafından maksimum güven
  • Bir IP'yi binlerce gerçek kullanıcı kullanır — yasaklamak zor
  • Hesap yönetimi için ideal
  • İstek üzerine IP değişimi (ağa yeniden bağlanma)

Eksileri:

  • En yüksek maliyet
  • Sınırlı hız
  • Daha az coğrafya seçeneği

Uygun görevler: çoklu hesap yönetimi, Instagram/Facebook/TikTok ile çalışma, hesap kaydı, yasaklanma riski yüksek olan herhangi bir görev.

Karşılaştırma tablosu

Parametre Veri merkezi Residential Mobil
Tespit edilebilirlik Yüksek Düşük Çok düşük
Hız Yüksek Orta Düşük-orta
Maliyet $ $$ $$$
Sosyal ağlar için Uygun değil Uygun İdeal
Scraping için Basit siteler Herhangi bir site Aşırı

Koruma atlatmanın ileri teknikleri

Temel yöntemler işe yaramadığında, daha karmaşık teknikler kullanmanız gerekir. Birkaç ileri yaklaşımı inceleyelim.

Cloudflare ve benzer korumalarla çalışma

Cloudflare, Akamai, PerimeterX — bu sistemler tarayıcıyı kontrol etmek için JavaScript-challenge'ları kullanır. Basit HTTP isteği geçmeyecektir. Çözüm seçenekleri:

1. Gerçek tarayıcı kullanma:

from playwright.sync_api import sync_playwright

def bypass_cloudflare(url, proxy):
    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=False,  # Bazen headless tespit edilir
            proxy={"server": proxy}
        )
        
        page = browser.new_page()
        page.goto(url)
        
        # Kontrolün geçilmesini bekleyin (genellikle 5-10 saniye)
        page.wait_for_timeout(10000)
        
        # Geçip geçmediğimizi kontrol edin
        if "challenge" not in page.url:
            # Sonraki istekler için cookies'leri kaydedin
            cookies = page.context.cookies()
            return cookies
        
        browser.close()
        return None

2. Hazır çözümleri kullanma:

# cloudscraper — Cloudflare'yi atlatmak için kütüphane
import cloudscraper

scraper = cloudscraper.create_scraper(
    browser={
        'browser': 'chrome',
        'platform': 'windows',
        'desktop': True
    }
)

scraper.proxies = {"http": proxy, "https": proxy}
response = scraper.get("https://protected-site.com")

Captcha çözme

Site captcha gösteriyorsa, birkaç yaklaşım vardır:

Tanıma hizmetleri: 2Captcha, Anti-Captcha, CapMonster. Captcha'yı sizin için çözerler