Bloga geri dön

Düşük Başarı Oranının Nedenini Teşhis Etme: Kapsamlı Rehber

Proxy başarı oranı, herhangi bir proje için kritik bir metrik olmuştur. Düşüşün nedenini nasıl belirleyeceğimizi ve verimliliği nasıl geri kazanacağımızı öğrenelim.

📅3 Aralık 2025

Düşük başarı oranının nedenini teşhis etme: adım adım rehber

Başarı oranı (Success Rate) — toplam deneme sayısından başarılı isteklerin yüzdesidir. Bu gösterge normalin altına düştüğünde, para, zaman ve veriler kaybedilir. Ancak nedenleri onlarca olabilir: yanlış yapılandırmadan hedef sunucunun engellemelerine kadar. Bu makalede sistematik bir tanı yaklaşımını inceleyeceğiz ve çözüm bulacağız.

Başarı oranı nedir ve normal değer nedir

Başarı Oranı (SR) = (Başarılı istekler / Toplam istek sayısı) × 100%

Normal değerler görev türüne bağlıdır:

Görev Normal SR Kritik seviye
Herkese açık verileri ayrıştırma 95–99% %85'in altında
SMM otomasyonu 90–97% %80'in altında
Reklam doğrulaması 98–99.5% %95'in altında
API entegrasyonu 99–99.9% %98'in altında

SR temel seviyenizden %5–10 düşerse — bu tanı yapmanın zamanı gelmiştir. %20 veya daha fazla düşerse — acil işlem gereklidir.

Tanının ilk adımları

Adım 1: Günlükleri ve metrikleri kontrol edin

Son 24–72 saat için veri toplayın:

  • SR tam olarak ne zaman düştü? (kesin zaman)
  • İsteklerin yüzde kaçı 407 hatası (Proxy Authentication Required) döndürüyor?
  • Yüzde kaçı 429 (Çok Fazla İstek)?
  • Yüzde kaçı zaman aşımı (connection timeout)?
  • Yük değişti mi (RPS — saniye başına istek)?

Adım 2: İzole olarak test edin

Uygulamanız olmadan proxy'yi kontrol etmek için basit bir komut dosyası kullanın:

import requests
import time

proxy = "http://proxy_ip:port"
proxies = {"http": proxy, "https": proxy}
target_url = "https://httpbin.org/ip"

success = 0
failed = 0

for i in range(100):
    try:
        response = requests.get(
            target_url, 
            proxies=proxies, 
            timeout=10,
            verify=False
        )
        if response.status_code == 200:
            success += 1
            print(f"✓ Deneme {i+1}: başarılı")
        else:
            failed += 1
            print(f"✗ Deneme {i+1}: durum {response.status_code}")
    except Exception as e:
        failed += 1
        print(f"✗ Deneme {i+1}: {str(e)}")
    time.sleep(0.5)

sr = (success / (success + failed)) * 100
print(f"\nBaşarı Oranı: {sr:.1f}%")
print(f"Başarılı: {success}, Hatalar: {failed}")

Bu test normal SR gösterirse — sorun kodunuzda veya yapılandırmanızda. SR burada da düşükse — sorun proxy'de veya hedef sunucuda.

Proxy tarafındaki sorunlar

Hata 407: Proxy Kimlik Doğrulaması Gerekli

Nedenler:

  • Yanlış kimlik bilgileri (kullanıcı adı/şifre)
  • Hesap süresi doldu
  • IP adresi beyaz listeye dahil değil (gerekiyorsa)
  • IP rotasyonu çalışmıyor veya devre dışı

Çözüm:

import requests

# Konut proxy'leri için doğru format
proxy = "http://login:password@proxy-host:port"
proxies = {"http": proxy, "https": proxy}

# Test
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print(response.text)

Proxy sunucusunun aşırı yüklenmesi

Hizmetin tüm kullanıcıları aynı anda çok sayıda istek gönderirse, RPS (saniye başına istek) sınırlaması olabilir. Bu nadirdir, ancak olur.

Kontrol edin:

  • Mevcut RPS'niz en yüksek seviyede
  • Tarife limitleri
  • Günlüklerde 429 hatası var mı

Çözüm: istekler arasına gecikme ekleyin veya tarifenizi yükseltin.

IP adreslerinin kalitesi

Konut proxy'leri için düşük SR, size engellenen adresleri döndürdükleri anlamına gelebilir. Kontrol edin:

  • IP adreslerinin yüzde kaçı 403 Yasak döndürüyor?
  • Aynı adresler tekrar ediliyor mu?
  • Bir desen var mı — bir ülke/bölge çalışıyor, diğeri değil mi?

Hedef sunucunun engelleri ve filtreleri

Hata 429: Çok Fazla İstek

Hedef sunucu tek bir IP'den veya genel olarak çok fazla istek görüyor. Çözümler:

  • Gecikme ekleyin: `time.sleep(random.uniform(1, 3))`
  • IP rotasyonu kullanın: her istek — yeni IP
  • RPS'yi düşürün: istekleri paralel değil, sırayla gönderin
  • Gerçekçi başlıklar ekleyin: User-Agent, Referer, Accept-Language

Hata 403 Yasak

Sunucu IP'nizi (veya proxy IP'sini) engelledi. Bu şu olabilir:

  • Coğrafi konum filtresi
  • Proxy hizmetlerinin kara listesi
  • Bot dedektörü (JavaScript, CAPTCHA)

Çözüm: mobil proxy'ler veya konut proxy'leri rotasyonla kullanın. Engellenmesi daha zordur.

Hata 403: User-Agent Kontrolü

Bazı hizmetler şüpheli User-Agent'lar ile istekleri reddeder:

import requests
import random

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",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15"
]

headers = {
    "User-Agent": random.choice(user_agents),
    "Accept-Language": "en-US,en;q=0.9",
    "Accept": "text/html,application/xhtml+xml",
    "Referer": "https://google.com"
}

response = requests.get(
    "https://target-site.com",
    headers=headers,
    proxies={"http": proxy, "https": proxy},
    timeout=10
)
print(response.status_code)

İstemci kodundaki hatalar

Yanlış istisna işleme

Yaygın hata: kod bağlantı hatasını başarısız istek olarak sayar, ancak yeniden bağlanmaya çalışmaz:

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# Yeniden denemelerle doğru yol
session = requests.Session()
retry_strategy = Retry(
    total=3,
    backoff_factor=1,
    status_forcelist=[429, 500, 502, 503, 504],
    allowed_methods=["GET", "POST"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("http://", adapter)
session.mount("https://", adapter)

try:
    response = session.get(url, proxies=proxies, timeout=10)
except requests.exceptions.RequestException as e:
    print(f"Hata: {e}")
    # Günlüğe kaydedip sonraki isteğe geçin

Yanlış zaman aşımları

Zaman aşımı çok kısa ise (1–2 saniye), yavaş proxy'ler reddedilecektir:

  • Normal ayrıştırma için: 10–30 saniye
  • Mobil proxy'ler için: 15–45 saniye
  • API için: 5–10 saniye

SSL/TLS hataları

`verify=False` kullanırsanız, bu gerçek sorunları maskeleyebilir. Sertifikaları güncellenmesi daha iyidir:

import requests
import certifi

# Doğru
response = requests.get(
    url,
    proxies=proxies,
    verify=certifi.where(),  # verify=False yerine
    timeout=15
)

Ağ sorunları ve zaman aşımları

Bağlantı zaman aşımı vs Okuma zaman aşımı

Fark önemlidir:

  • Bağlantı zaman aşımı: proxy yanıt vermiyor (proxy veya ağ sorunu)
  • Okuma zaman aşımı: hedef sunucu yavaş veri gönderiyor (hedef sunucu sorunu)
import requests

# timeout = (connection_timeout, read_timeout)
try:
    response = requests.get(
        url,
        proxies=proxies,
        timeout=(5, 15)  # 5 sn bağlantı, 15 sn okuma
    )
except requests.exceptions.ConnectTimeout:
    print("Proxy yanıt vermiyor")
except requests.exceptions.ReadTimeout:
    print("Hedef sunucu yavaş")

DNS sorunları

Hedef sunucu çözümlenirse, bu proxy hatası değildir:

import socket

# Proxy olmadan DNS kontrol edin
try:
    ip = socket.gethostbyname("target-site.com")
    print(f"Çözümlendi: {ip}")
except socket.gaierror:
    print("DNS hatası — site bulunamadı")

Düşük SR tanı kontrol listesi

  1. Temel seviyeyi belirleyin: daha önce normal SR neydi?
  2. İzole test çalıştırın (yukarıdaki komut dosyası) 100 istekle
  3. Günlükleri kontrol edin: hangi HTTP kodları baskın? (407, 429, 403, zaman aşımı?)
  4. 407 ise: kullanıcı adı/şifre ve IP beyaz listesini kontrol edin
  5. 429 ise: istekler arasına gecikme ekleyin, IP rotasyonu kullanın
  6. 403 ise: User-Agent, Referer kontrol edin, gerçekçi başlıklar ekleyin
  7. Zaman aşımı ise: zaman aşımını artırın, RPS kontrol edin, yeniden deneme mantığı kullanın
  8. Kodunuzu kontrol edin: doğru istisna işleme, doğru zaman aşımları
  9. Hedef sunucuyu kontrol edin: proxy olmadan erişilebilir mi?
  10. Diğer her şey başarısız olursa: farklı proxy türü veya farklı sağlayıcı deneyin

Hızlı tanı tablosu

HTTP kodu Muhtemel neden Çözüm
407 Yanlış proxy kimlik bilgileri Kullanıcı adı/şifre, IP beyaz listesini kontrol edin
429 Çok fazla istek Gecikme ekleyin, IP rotasyonu kullanın
403 IP engellendi veya bot dedektörü Gerçekçi başlıklar ekleyin, mobil proxy'ler kullanın
Zaman aşımı Proxy yavaş veya hedef sunucu aşırı yüklü Zaman aşımını artırın, RPS kontrol edin
Bağlantı reddedildi Proxy sunucusu erişilemez IP:port kontrol edin, proxy durumunu kontrol edin

Özet

Düşük başarı oranı — bu bir semptom, hastalık değil. Nedenleri çok olabilir: kodda yazım hatasından hedef sunucu tarafından engellemeye kadar. Sistematik tanı — çözümün anahtarıdır:

  1. Metrikleri ve günlükleri kontrol edin
  2. Sorunu izole edin (proxy vs hedef sunucu vs kodunuz)
  3. Hata türünü belirleyin (407, 429, 403, zaman aşımı)
  4. İlgili çözümü uygulayın

Güvenilirlik ve yüksek SR gerektiren görevler için, IP rotasyonlu konut proxy'leri önerilir. Tespit edilmesi daha zordur ve daha istikrarlıdır. proxycove.com üzerinde ücretsiz test deneyin ve görevinizde test edin.