So diagnostizieren Sie die Ursache einer niedrigen Success Rate: Schritt-für-Schritt-Anleitung
Success Rate ist der Prozentsatz erfolgreicher Anfragen von der Gesamtzahl der Versuche. Wenn dieser Indikator unter die Norm fällt, gehen Geld, Zeit und Daten verloren. Es kann aber Dutzende von Gründen geben: von falscher Konfiguration bis zu Blockierungen des Zielservers. In diesem Artikel werden wir einen systematischen Ansatz zur Diagnose durchgehen und eine Lösung finden.
Was ist Success Rate und welche Norm
Success Rate (SR) = (Erfolgreiche Anfragen / Gesamtzahl der Anfragen) × 100%
Normale Werte hängen vom Aufgabentyp ab:
| Aufgabe | Normaler SR | Kritisches Niveau |
|---|---|---|
| Parsing öffentlicher Daten | 95–99% | unter 85% |
| SMM-Automatisierung | 90–97% | unter 80% |
| Ad Verification | 98–99,5% | unter 95% |
| API-Integration | 99–99,9% | unter 98% |
Wenn die SR um 5–10% von Ihrer Baseline fällt – das ist ein Signal zur Diagnose. Wenn sie um 20%+ fällt – sofortige Maßnahmen sind erforderlich.
Erste Schritte der Diagnose
Schritt 1: Überprüfen Sie Protokolle und Metriken
Sammeln Sie Daten aus den letzten 24–72 Stunden:
- Wann genau ist die SR gefallen? (genaue Zeit)
- Welcher Prozentsatz der Anfragen gibt Fehler 407 (Proxy Authentication Required) zurück?
- Welcher Prozentsatz – 429 (Too Many Requests)?
- Welcher Prozentsatz – Timeouts (Connection Timeout)?
- Hat sich die Last geändert (RPS – Anfragen pro Sekunde)?
Schritt 2: Testen Sie isoliert
Verwenden Sie ein einfaches Skript, um den Proxy ohne Ihre Anwendung zu überprüfen:
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"✓ Versuch {i+1}: erfolgreich")
else:
failed += 1
print(f"✗ Versuch {i+1}: Status {response.status_code}")
except Exception as e:
failed += 1
print(f"✗ Versuch {i+1}: {str(e)}")
time.sleep(0.5)
sr = (success / (success + failed)) * 100
print(f"\nSuccess Rate: {sr:.1f}%")
print(f"Erfolgreich: {success}, Fehler: {failed}")
Wenn dieser Test eine normale SR zeigt – liegt das Problem in Ihrem Code oder Ihrer Konfiguration. Wenn die SR auch hier niedrig ist – liegt das Problem beim Proxy oder beim Zielserver.
Probleme auf der Proxy-Seite
Fehler 407: Proxy Authentication Required
Ursachen:
- Falsche Anmeldedaten (Benutzername/Passwort)
- Kontoablauf abgelaufen
- IP-Adresse nicht in der Whitelist (falls erforderlich)
- IP-Rotation funktioniert nicht oder ist deaktiviert
Lösung:
import requests
# Korrektes Format für Residential Proxys
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)
Überlastung des Proxy-Servers
Wenn alle Benutzer des Dienstes eine große Anzahl von Anfragen gleichzeitig senden, kann es eine Beschränkung pro RPS (Anfragen pro Sekunde) geben. Das ist selten, aber es passiert.
Überprüfen Sie:
- Ihre aktuelle RPS in der Spitzenlast
- Limits Ihres Tarifs
- Gibt es Fehler 429 in den Protokollen
Lösung: Fügen Sie eine Verzögerung zwischen Anfragen hinzu oder aktualisieren Sie Ihren Tarif.
Qualität der IP-Adressen
Für Residential Proxys kann eine niedrige SR bedeuten, dass Ihnen blockierte Adressen rotiert werden. Überprüfen Sie:
- Welcher Prozentsatz der IP-Adressen gibt 403 Forbidden zurück?
- Wiederholen sich die gleichen Adressen?
- Gibt es ein Muster – ein Land/eine Region funktioniert, eine andere nicht?
Blockierungen und Filter des Zielservers
Fehler 429: Too Many Requests
Der Zielserver sieht zu viele Anfragen von einer IP oder insgesamt. Lösungen:
- Verzögerung hinzufügen: `time.sleep(random.uniform(1, 3))`
- IP-Rotation verwenden: jede Anfrage – neue IP
- RPS senken: Anfragen sequenziell senden, nicht parallel
- Realistische Header hinzufügen: User-Agent, Referer, Accept-Language
Fehler 403 Forbidden
Der Server hat Ihre IP (oder die Proxy-IP) blockiert. Dies kann sein:
- Geolokationsfilter
- Blacklist von Proxy-Diensten
- Bot-Detektor (JavaScript, CAPTCHA)
Lösung: Verwenden Sie Mobile Proxys oder Residential Proxys mit Rotation. Sie sind schwerer zu blockieren.
Fehler 403: User-Agent-Überprüfung
Einige Dienste lehnen Anfragen mit verdächtigem User-Agent ab:
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)
Fehler im Client-Code
Falsche Fehlerbehandlung
Häufiger Fehler: Der Code behandelt einen Verbindungsfehler als fehlgeschlagene Anfrage, versucht aber nicht, sich erneut zu verbinden:
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# Korrekter Weg mit Wiederholungen
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"Fehler: {e}")
# Protokollieren und zur nächsten Anfrage übergehen
Falsche Timeouts
Wenn das Timeout zu kurz ist (1–2 Sekunden), werden langsame Proxys abgelehnt:
- Für normales Parsing: 10–30 Sekunden
- Für Mobile Proxys: 15–45 Sekunden
- Für API: 5–10 Sekunden
SSL/TLS-Fehler
Wenn Sie `verify=False` verwenden, kann dies echte Probleme maskieren. Es ist besser, Zertifikate zu aktualisieren:
import requests
import certifi
# Korrekt
response = requests.get(
url,
proxies=proxies,
verify=certifi.where(), # Statt verify=False
timeout=15
)
Netzwerkprobleme und Timeouts
Connection Timeout vs Read Timeout
Der Unterschied ist wichtig:
- Connection Timeout: Proxy antwortet nicht (Problem mit Proxy oder Netzwerk)
- Read Timeout: Zielserver sendet Daten langsam (Problem des Zielservers)
import requests
# timeout = (connection_timeout, read_timeout)
try:
response = requests.get(
url,
proxies=proxies,
timeout=(5, 15) # 5 Sek. zum Verbinden, 15 zum Lesen
)
except requests.exceptions.ConnectTimeout:
print("Proxy antwortet nicht")
except requests.exceptions.ReadTimeout:
print("Zielserver ist langsam")
DNS-Probleme
Wenn der Zielserver nicht aufgelöst wird, ist dies kein Proxy-Fehler:
import socket
# DNS außerhalb des Proxys überprüfen
try:
ip = socket.gethostbyname("target-site.com")
print(f"Aufgelöst: {ip}")
except socket.gaierror:
print("DNS-Fehler – Website nicht gefunden")
Checkliste zur Diagnose niedriger SR
- Legen Sie eine Baseline fest: Welche SR war früher normal?
- Führen Sie einen isolierten Test aus (Skript oben) mit 100 Anfragen
- Überprüfen Sie die Protokolle: Welche HTTP-Codes dominieren? (407, 429, 403, Timeouts?)
- Wenn 407: Überprüfen Sie Benutzername/Passwort und IP-Whitelist
- Wenn 429: Fügen Sie eine Verzögerung zwischen Anfragen hinzu, verwenden Sie IP-Rotation
- Wenn 403: Überprüfen Sie User-Agent, Referer, fügen Sie realistische Header hinzu
- Wenn Timeouts: Erhöhen Sie das Timeout, überprüfen Sie RPS, verwenden Sie Retry-Logik
- Überprüfen Sie Ihren Code: Richtige Fehlerbehandlung, richtige Timeouts
- Überprüfen Sie den Zielserver: Ist er direkt verfügbar (ohne Proxy)?
- Wenn alles andere nicht hilft: Versuchen Sie einen anderen Proxy-Typ oder einen anderen Anbieter
Schnelle Diagnose-Tabelle
| HTTP-Code | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| 407 | Falsche Proxy-Anmeldedaten | Überprüfen Sie Benutzername/Passwort, IP-Whitelist |
| 429 | Zu viele Anfragen | Fügen Sie eine Verzögerung hinzu, verwenden Sie IP-Rotation |
| 403 | IP blockiert oder Bot-Detektor | Fügen Sie realistische Header hinzu, verwenden Sie Mobile Proxys |
| Timeout | Proxy ist langsam oder Zielserver überlastet | Erhöhen Sie das Timeout, überprüfen Sie RPS |
| Connection refused | Proxy-Server nicht erreichbar | Überprüfen Sie IP:Port, Proxy-Status |
Zusammenfassung
Eine niedrige Success Rate ist ein Symptom, keine Krankheit. Es kann viele Ursachen geben: von einem Tippfehler im Code bis zur Blockierung durch den Zielserver. Systematische Diagnose ist der Schlüssel zur Lösung:
- Überprüfen Sie Metriken und Protokolle
- Isolieren Sie das Problem (Proxy vs. Zielserver vs. Ihr Code)
- Bestimmen Sie den Fehlertyp (407, 429, 403, Timeout)
- Wenden Sie die entsprechende Lösung an
Für Aufgaben, die Zuverlässigkeit und hohe SR erfordern, werden Residential Proxys mit IP-Rotation empfohlen. Sie sind schwerer zu erkennen und stabiler. Versuchen Sie einen kostenlosen Test auf proxycove.com und testen Sie ihn auf Ihre Aufgabe.