Was tun, wenn Proxys ständig gesperrt werden: Vollständiger Leitfaden zur Diagnose und Problemlösung
Ständige Proxy-Blockierungen sind eines der häufigsten Probleme beim Web-Scraping, bei der Automatisierung und bei der Arbeit mit mehreren Konten. In diesem Artikel werden wir analysieren, warum dies geschieht und wie man das Problem systematisch löst, anstatt endlos die Anbieter zu wechseln in der Hoffnung auf ein Wunder.
Warum Proxys wirklich gesperrt werden
Bevor Sie nach einer Lösung suchen, müssen Sie die Mechanik der Blockierungen verstehen. Moderne Anti-Fraud-Systeme verwenden mehrschichtigen Schutz, und die Proxy-Sperrung ist nur eine Folge, nicht die Ursache. Das Verständnis, wie diese Systeme funktionieren, ermöglicht es Ihnen, eine effektive Umgehungsstrategie zu entwickeln.
IP-Reputation und schwarze Listen
Jede IP-Adresse hat einen Ruf, der auf der Grundlage ihrer Nutzungsgeschichte aufgebaut wird. Wenn eine Adresse zuvor für Spam, DDoS-Angriffe oder Massen-Scraping verwendet wurde, wird sie in Datenbanken wie Spamhaus, SORBS oder proprietäre Listen bestimmter Dienste aufgenommen. Wenn Sie sich über eine solche IP verbinden, behandelt das System Sie sofort mit Verdacht.
Rechenzentrum-Proxys sind besonders anfällig für dieses Problem. Ganze IP-Subnetze können als "Hosting" gekennzeichnet werden, und jeder Datenverkehr von ihnen erhält automatisch ein erhöhtes Überprüfungsniveau. Amazon AWS, Google Cloud, DigitalOcean – ihre IP-Bereiche sind gut bekannt und werden oft präventiv blockiert.
Sie können die IP-Reputation über Dienste wie IPQualityScore, Scamalytics oder AbuseIPDB überprüfen. Wenn Ihr Proxy einen Fraud-Score über 75 anzeigt, liegt das Problem genau hier – wechseln Sie den Anbieter oder den Proxy-Typ.
Anfragemuster
Ein Mensch macht nicht 100 Anfragen pro Sekunde. Ein Mensch wechselt nicht mit perfekter Regelmäßigkeit alle 2 Sekunden zwischen Seiten. Ein Mensch ignoriert nicht Bilder, CSS und JavaScript und fordert nur HTML an. Anti-Fraud-Systeme analysieren genau diese Muster, und jede Abweichung vom "menschlichen" Verhalten erhöht das Blockierungsrisiko.
Besonders aussagekräftig ist die Statistik der Zeit zwischen Anfragen. Wenn Sie einen stabilen Intervall haben – das ist ein klares Zeichen für Automatisierung. Das Hinzufügen einer zufälligen Verzögerung (z. B. 1 bis 5 Sekunden) reduziert die Erkennungswahrscheinlichkeit erheblich.
Metadaten-Nichtübereinstimmung
Wenn Ihr User-Agent sagt, dass Sie Chrome unter Windows verwenden, aber HTTP-Header die Eigenschaften von Python-Anfragen verraten – das ist ein rotes Flagge. Wenn die IP-Adresse in Deutschland geolokalisiert ist, aber die Spracheinstellungen des Browsers auf Russisch eingestellt sind – noch ein rotes Flagge. Wenn die Zeitzone in JavaScript nicht mit der Geografie der IP übereinstimmt – das dritte Flagge.
Die Ansammlung solcher Unstimmigkeiten führt dazu, dass das System die Verbindung als verdächtig einstuft und Schutzmaßnahmen ergreift: von Captchas bis zur vollständigen IP-Blockierung.
Browser-Fingerprint
Moderne Schutzsysteme sammeln Dutzende von Browser-Parametern: Bildschirmauflösung, installierte Schriftarten, Plugins, WebGL-Rendering, Audio-Kontext und vieles mehr. Die Kombination dieser Parameter erzeugt einen eindeutigen "Abdruck", der auch bei IP-Wechsel konstant bleibt.
Wenn Sie den Proxy wechseln, aber der Fingerprint gleich bleibt, versteht das System, dass Sie derselbe Benutzer sind. Und wenn ein Fingerprint in kurzer Zeit von Hunderten verschiedener IPs auftaucht – das ist ein klares Zeichen für Automatisierung.
Diagnose: Wie man die Blockierungsursache versteht
Bevor Sie blind Einstellungen ändern, führen Sie eine Diagnose durch. Dies spart Stunden von Experimenten und hilft, die eigentliche Ursache des Problems zu finden. Ein systematischer Diagnoseansatz ist der Schlüssel zu einer effektiven Lösung.
Schritt 1: Überprüfen Sie den Proxy selbst
Beginnen Sie mit einer grundlegenden Funktionsprüfung des Proxys unabhängig von Ihrem Hauptskript:
import requests
proxy = {
"http": "http://user:pass@proxy-server:port",
"https": "http://user:pass@proxy-server:port"
}
# Überprüfung der grundlegenden Funktionalität
try:
response = requests.get("https://httpbin.org/ip", proxies=proxy, timeout=10)
print(f"IP über Proxy: {response.json()['origin']}")
except Exception as e:
print(f"Verbindungsfehler: {e}")
# Überprüfung auf echte IP-Lecks
response = requests.get("https://browserleaks.com/ip", proxies=proxy)
# Vergleichen Sie mit Ihrer echten IP
Wenn der Proxy nicht einmal bei einfachen Anfragen funktioniert – liegt das Problem im Proxy selbst oder in den Anmeldedaten. Überprüfen Sie das Verbindungsformat, das Guthaben auf dem Konto und die Anbieter-Limits.
Schritt 2: Überprüfen Sie die IP-Reputation
Verwenden Sie mehrere Dienste für eine umfassende Bewertung:
# Holen Sie sich die Proxy-IP
proxy_ip = requests.get("https://api.ipify.org", proxies=proxy).text
# Überprüfen Sie auf diesen Diensten:
# 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"Überprüfen Sie IP {proxy_ip} auf den oben genannten Diensten")
Achten Sie auf die folgenden Indikatoren: Fraud-Score (sollte unter 50 liegen), IP-Typ (Residential ist besser als Datacenter), Vorhandensein in schwarzen Listen. Wenn die IP als VPN/Proxy gekennzeichnet ist – werden viele Websites sie von Anfang an verdächtig behandeln.
Schritt 3: Isolieren Sie das Problem
Versuchen Sie denselben Proxy auf verschiedenen Zielwebsites. Wenn die Blockierung überall auftritt – liegt das Problem im Proxy oder Ihrer Konfiguration. Wenn nur auf einer bestimmten Website – liegt das Problem in der Schutzmaßnahme dieser Website oder Ihrem Verhalten darauf.
Versuchen Sie auch verschiedene Proxys auf einer Website. Wenn alle blockiert werden – liegt das Problem nicht im Proxy, sondern in Ihrem Skript, Fingerprint oder Verhaltensmuster. Dies ist ein kritisch wichtiger Test, den viele überspringen.
Schritt 4: Analyse der Serverantworten
Verschiedene Blockierungstypen manifestieren sich unterschiedlich. Lernen Sie, sie zu unterscheiden:
def analyze_response(response):
status = response.status_code
if status == 403:
print("Zugriff verweigert – möglicherweise IP in schwarzer Liste")
elif status == 429:
print("Zu viele Anfragen – reduzieren Sie die Häufigkeit")
elif status == 503:
print("Dienst nicht verfügbar – möglicherweise DDoS-Schutz")
elif status == 407:
print("Proxy-Authentifizierung erforderlich – überprüfen Sie die Anmeldedaten")
elif "captcha" in response.text.lower():
print("Captcha erkannt – Botverdacht")
elif "blocked" in response.text.lower():
print("Explizite Blockierung – wechseln Sie die IP und überdenken Sie den Ansatz")
elif len(response.text) < 1000:
print("Verdächtig kurze Antwort – möglicherweise ein Stub")
else:
print(f"Status {status}, Antwortlänge: {len(response.text)}")
Korrekte Rotation: Häufigkeit, Logik, Implementierung
Proxy-Rotation ist nicht einfach "IP öfter wechseln". Falsche Rotation kann mehr schaden als nutzen. Lassen Sie uns verschiedene Strategien und deren Anwendungsfälle betrachten.
Strategie 1: Rotation nach Anfragezahl
Der einfachste Ansatz – wechseln Sie die IP nach einer bestimmten Anzahl von Anfragen. Geeignet für Web-Scraping, wo Sitzungspersistenz nicht erforderlich ist:
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:
# Fügen Sie Zufälligkeit in die Anfragezahl ein
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
# Verwendung
rotator = ProxyRotator(proxy_list)
for url in urls_to_scrape:
proxy = rotator.get_proxy()
response = requests.get(url, proxies={"http": proxy, "https": proxy})
Beachten Sie die Zufälligkeit in der Anfragezahl pro Proxy. Eine feste Zahl (z. B. genau 50) ist ein Muster, das erkannt werden kann. Ein zufälliger Bereich macht das Verhalten weniger vorhersehbar.
Strategie 2: Zeitbasierte Rotation
Für Aufgaben, bei denen Sitzungspersistenz wichtig ist (z. B. Kontoverwaltung), ist es besser, die IP an die Zeit zu binden:
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)
# Zufälliges Intervall bis zur nächsten Rotation
interval = random.randint(self.min_seconds, self.max_seconds)
self.rotation_time = current_time + interval
print(f"Neuer Proxy, nächste Rotation in {interval//60} Minuten")
return self.current_proxy
Strategie 3: Sticky Sessions für Konten
Bei der Arbeit mit mehreren Konten ist es kritisch, dass jedes Konto eine konstante IP verwendet. Ein IP-Wechsel für ein angemeldetes Konto ist ein sicherer Weg zur Sperrung:
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):
# Wenn dem Konto bereits ein Proxy zugewiesen ist – geben Sie ihn zurück
if account_id in self.account_proxies:
return self.account_proxies[account_id]
# Finden Sie einen freien Proxy
available = [p for p in self.proxy_pool if p not in self.used_proxies]
if not available:
raise Exception("Keine freien Proxys für neue Konten")
proxy = random.choice(available)
self.account_proxies[account_id] = proxy
self.used_proxies.add(proxy)
return proxy
def release_account(self, account_id):
"""Gibt den Proxy frei, wenn das Konto gelöscht wird"""
if account_id in self.account_proxies:
proxy = self.account_proxies.pop(account_id)
self.used_proxies.discard(proxy)
# Verwendung
manager = AccountProxyManager(residential_proxy_list)
for account in accounts:
proxy = manager.get_proxy_for_account(account.id)
# Alle Aktionen dieses Kontos gehen über eine IP
Strategie 4: Adaptive Rotation
Der fortgeschrittenste Ansatz – wechseln Sie den Proxy als Reaktion auf Signale von der Zielwebsite:
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} # Anfängliche Proxy-"Gesundheit"
def get_proxy(self):
return self.current_proxy
def report_result(self, success, response_code=200):
"""Wird nach jeder Anfrage aufgerufen"""
if success and response_code == 200:
# Erfolgreiche Anfrage – erhöhen Sie den Score leicht
self.proxy_scores[self.current_proxy] = min(100,
self.proxy_scores[self.current_proxy] + 1)
elif response_code == 429:
# Rate Limit – Score stark senken und rotieren
self.proxy_scores[self.current_proxy] -= 30
self._rotate()
elif response_code == 403:
# Sperrung – Score auf Null setzen und rotieren
self.proxy_scores[self.current_proxy] = 0
self._rotate()
elif response_code == 503:
# Möglicher Schutz – Score senken und rotieren
self.proxy_scores[self.current_proxy] -= 20
self._rotate()
def _rotate(self):
# Wählen Sie den Proxy mit dem besten Score
available = [(p, s) for p, s in self.proxy_scores.items() if s > 20]
if not available:
# Alle Proxys sind "tot" – Scores zurücksetzen
self.proxy_scores = {p: 50 for p in self.proxies}
available = list(self.proxy_scores.items())
# Gewichtete Auswahl nach Score
self.current_proxy = max(available, key=lambda x: x[1])[0]
print(f"Rotation zu Proxy mit Score {self.proxy_scores[self.current_proxy]}")
Browser-Fingerprint und seine Rolle bei Blockierungen
Fingerprint ist die Gesamtheit der Browser-Eigenschaften, die es ermöglichen, einen Benutzer auch ohne Cookies zu identifizieren. Wenn Sie den Proxy wechseln, aber der Fingerprint gleich bleibt, verbindet das Schutzsystem leicht alle Ihre Sitzungen miteinander.
Woraus besteht der Fingerprint
Der moderne Fingerprint umfasst Dutzende von Parametern. Hier sind die Hauptkategorien:
| Kategorie | Parameter | Gewicht bei Identifikation |
|---|---|---|
| User-Agent | Browser, Version, Betriebssystem | Mittel |
| Bildschirm | Auflösung, Farbtiefe, Pixel-Verhältnis | Mittel |
| Schriftarten | Liste installierter Schriftarten | Hoch |
| WebGL | Renderer, Anbieter, Rendering-Hash | Sehr hoch |
| Canvas | Hash des gerenderten Bildes | Sehr hoch |
| Audio | AudioContext-Fingerprint | Hoch |
| Zeitzone | Zeitzone, Offset | Mittel |
| Sprachen | navigator.languages | Mittel |
| Plugins | navigator.plugins | Niedrig (in modernen Browsern) |
Konsistenz von Fingerprint und IP
Es ist kritisch wichtig, dass der Fingerprint der Geografie der IP entspricht. Wenn der Proxy in Deutschland ist, sollte der Fingerprint wie ein deutscher Benutzer aussehen:
// Beispiel für Nichtübereinstimmung (SCHLECHT):
// IP: Deutschland
// Zeitzone: America/New_York
// Sprachen: ["ru-RU", "ru"]
// Dies wird Verdacht erregen
// Konsistenter Fingerprint (GUT):
// IP: Deutschland
// Zeitzone: Europe/Berlin
// Sprachen: ["de-DE", "de", "en-US", "en"]
Tools zur Fingerprint-Verwaltung
Verwenden Sie für ernsthafte Arbeit spezialisierte Tools:
Playwright mit Stealth:
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) # Wenden Sie Stealth-Patches an
page.goto("https://target-site.com")
Puppeteer mit 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();
// Überschreiben Sie die Zeitzone
await page.evaluateOnNewDocument(() => {
Object.defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', {
value: function() {
return { timeZone: 'Europe/Berlin' };
}
});
});
Anti-Detect-Browser
Für die Kontoverwaltung werden häufig Anti-Detect-Browser verwendet (Multilogin, GoLogin, Dolphin Anty und andere). Sie ermöglichen die Erstellung isolierter Profile mit eindeutigen Fingerprints. Jedes Profil hat seinen eigenen Satz von Parametern, Cookies, localStorage – eine vollständig isolierte Umgebung.
Der Vorteil von Anti-Detect-Browsern ist, dass sie das Fingerprint-Problem "out of the box" lösen. Der Nachteil ist der Preis und die Komplexität der Automatisierung (obwohl viele eine API haben).
Verhaltensmuster: Wie man nicht wie ein Bot aussieht
Auch mit perfektem Fingerprint und sauberer IP können Sie wegen unmenschlichen Verhaltens gesperrt werden. Moderne Systeme analysieren nicht nur technische Parameter, sondern auch Interaktionsmuster mit der Website.
Zeitliche Verzögerungen
Ein Mensch macht keine Anfragen mit konstanten Intervallen. Fügen Sie zufällige Verzögerungen mit Normalverteilung hinzu:
import random
import time
import numpy as np
def human_delay(min_sec=1, max_sec=5, mean=2.5):
"""
Generiert eine menschenähnliche Verzögerung.
Verwendet eine logarithmische Normalverteilung –
die meisten Verzögerungen sind kurz, aber manchmal gibt es lange.
"""
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():
"""Verzögerung zwischen Tastendrücken beim Tippen"""
return random.uniform(0.05, 0.25)
# Verwendung
for url in urls:
response = requests.get(url, proxies=proxy)
process(response)
time.sleep(human_delay()) # Zufällige Pause zwischen Anfragen
Imitation der Navigation
Ein Mensch geht nicht direkt über einen direkten Link zur Produktseite. Er geht zur Startseite, nutzt die Suche, durchsucht Kategorien. Imitieren Sie diesen Weg:
async def human_like_navigation(page, target_url):
"""Imitiert menschenähnliche Navigation zur Zielseite"""
# 1. Gehen Sie zur Startseite
await page.goto("https://example.com")
await page.wait_for_timeout(random.randint(2000, 4000))
# 2. Manchmal scrollen Sie die Startseite
if random.random() > 0.5:
await page.evaluate("window.scrollBy(0, 300)")
await page.wait_for_timeout(random.randint(1000, 2000))
# 3. Verwenden Sie Suche oder Navigation
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. Gehen Sie zur Zielseite
await page.goto(target_url)
# 5. Scrollen Sie die Seite wie ein Mensch
await human_scroll(page)
async def human_scroll(page):
"""Imitiert menschliches Scrollen"""
scroll_height = await page.evaluate("document.body.scrollHeight")
current_position = 0
while current_position < scroll_height * 0.7: # Nicht bis zum Ende
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))
Mausbewegungen
Einige Systeme verfolgen Mausbewegungen. Eine geradlinige Bewegung von Punkt A zu Punkt B ist ein Zeichen eines Bots. Ein Mensch bewegt die Maus mit Kurven und Mikrokorrektionen:
import bezier
import numpy as np
def generate_human_mouse_path(start, end, num_points=50):
"""
Generiert einen Mausweg, der menschlich aussieht,
unter Verwendung von Bezier-Kurven mit leichtem Rauschen.
"""
# Kontrollpunkte für die Bezier-Kurve
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)
)
# Erstellen Sie eine Bezier-Kurve
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)
# Generieren Sie Punkte auf der Kurve
points = []
for t in np.linspace(0, 1, num_points):
point = curve.evaluate(t)
# Fügen Sie Mikrorauschen hinzu
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):
"""Klickt auf ein Element mit menschenähnlicher Mausbewegung"""
element = await page.query_selector(selector)
box = await element.bounding_box()
# Zielpunkt – nicht die Mitte, sondern ein zufälliger Punkt im Element
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)
# Aktuelle Mausposition (oder zufällige Startposition)
start_x = random.randint(0, 1920)
start_y = random.randint(0, 1080)
# Generieren Sie den Weg
path = generate_human_mouse_path((start_x, start_y), (target_x, target_y))
# Bewegen Sie die Maus entlang des Weges
for x, y in path:
await page.mouse.move(x, y)
await page.wait_for_timeout(random.randint(5, 20))
# Kleine Pause vor dem Klick
await page.wait_for_timeout(random.randint(50, 150))
await page.mouse.click(target_x, target_y)
Ressourcenladung
Ein echter Browser lädt nicht nur HTML, sondern auch CSS, JavaScript, Bilder, Schriftarten. Wenn Sie Anfragen verwenden und nur HTML anfordern – das ist verdächtig. Bei der Arbeit mit Headless-Browsern wird dieses Problem automatisch gelöst, aber bei der Verwendung von HTTP-Clients müssen Sie diesen Moment berücksichtigen.
Auswahl des Proxy-Typs für die Aufgabe
Verschiedene Proxy-Typen haben unterschiedliche Eigenschaften und eignen sich für verschiedene Aufgaben. Die falsche Wahl ist eine häufige Ursache für Blockierungen.
Rechenzentrum-Proxys
Rechenzentrum-Proxys sind IP-Adressen, die Hosting-Anbietern gehören. Sie können leicht anhand der Zugehörigkeit zu AS (autonome Systeme) großer Rechenzentren identifiziert werden.
Vorteile:
- Hohe Geschwindigkeit und Stabilität
- Niedrige Kosten
- Große IP-Pools
Nachteile:
- Leicht zu erkennen
- Oft in schwarzen Listen
- Nicht geeignet für Websites mit ernsthaftem Schutz
Geeignet für: SEO-Tools, Verfügbarkeitsprüfung, Arbeit mit APIs ohne strengen Schutz, Tests.
Wohnproxys
Wohnproxys sind IP-Adressen echter Benutzer, die über Partnerprogramme oder SDKs in Anwendungen bereitgestellt werden. Sie gehören normalen Internetanbietern (ISP).
Vorteile:
- Sehen aus wie normale Benutzer
- Niedriger Fraud-Score
- Breite Geografie
- Schwer zu erkennen
Nachteile:
- Höhere Kosten (Zahlung pro Datenverkehr)
- Geschwindigkeit hängt vom Endbenutzer ab
- IPs können "verschwinden" (Benutzer hat das Gerät ausgeschaltet)
Geeignet für: Scraping geschützter Websites, Arbeit mit sozialen Netzwerken, E-Commerce, alle Aufgaben, bei denen es wichtig ist, nicht erkannt zu werden.
Mobile Proxys
Mobile Proxys sind IP-Adressen von Mobilfunkanbietern (MTS, Beeline, Megafon und Analoga in anderen Ländern). Sie haben einen besonderen Status aufgrund der CGNAT-Technologie.
Vorteile:
- Maximales Vertrauen von Websites
- Eine IP wird von Tausenden echten Benutzern verwendet – schwer zu bannen
- Ideal für die Kontoverwaltung
- IP-Wechsel auf Anfrage (Netzwerk-Neuverbindung)
Nachteile:
- Höchste Kosten
- Begrenzte Geschwindigkeit
- Weniger Geografieauswahl
Geeignet für: Multi-Accounting, Arbeit mit Instagram/Facebook/TikTok, Kontoregistrierung, alle Aufgaben mit hohem Sperrrisiko.
Vergleichstabelle
| Parameter | Rechenzentrum | Wohnproxys | Mobile |
|---|---|---|---|
| Erkennbarkeit | Hoch | Niedrig | Sehr niedrig |
| Geschwindigkeit | Hoch | Mittel | Niedrig-mittel |
| Kosten | $ | $$ | $$$ |
| Für soziale Netzwerke | Nicht geeignet | Geeignet | Ideal |
| Für Scraping | Einfache Websites | Alle Websites | Übermäßig |
Fortgeschrittene Techniken zum Umgehen von Schutzmaßnahmen
Wenn grundlegende Methoden nicht funktionieren, müssen Sie komplexere Techniken verwenden. Lassen Sie uns mehrere fortgeschrittene Ansätze betrachten.
Arbeit mit Cloudflare und ähnlichen Schutzmaßnahmen
Cloudflare, Akamai, PerimeterX – diese Systeme verwenden JavaScript-Challenges zur Browser-Überprüfung. Eine einfache HTTP-Anfrage wird nicht durchgehen. Lösungsvarianten:
1. Verwendung eines echten Browsers:
from playwright.sync_api import sync_playwright
def bypass_cloudflare(url, proxy):
with sync_playwright() as p:
browser = p.chromium.launch(
headless=False, # Manchmal wird headless erkannt
proxy={"server": proxy}
)
page = browser.new_page()
page.goto(url)
# Warten Sie auf die Überprüfung (normalerweise 5-10 Sekunden)
page.wait_for_timeout(10000)
# Überprüfen Sie, ob wir bestanden haben
if "challenge" not in page.url:
# Speichern Sie Cookies für nachfolgende Anfragen
cookies = page.context.cookies()
return cookies
browser.close()
return None
2. Verwendung fertiger Lösungen:
# cloudscraper – Bibliothek zum Umgehen von Cloudflare
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-Lösung
Wenn die Website eine Captcha anzeigt, gibt es mehrere Ansätze:
Erkennungsdienste: 2Captcha, Anti-Captcha, CapMonster. Sie lösen Captchas für Sie