Warum Detection passiert
Web-Schrotterkennung ist ein mehrschichtiger Prozess. Anti-Bot-Systeme verlassen sich nicht auf ein einziges Signal – sie kombinieren IP-Reputation, HTTP-Header, TLS Fingerabdrücke, Browser Fingerabdrücke, und Verhaltensanalyse zur Berechnung eines Risikopunktes. Wenn diese Punktzahl eine Schwelle überschreitet, werden Sie blockiert, eine CAPTCHA bedient oder irreführende Daten gespeist.
Diese Anleitung bietet einen umfassenden Ansatz, um die Detektion über alle Schichten zu reduzieren. Für einen Überblick über die Funktionsweise dieser Systeme finden Sie in unserem Säulenartikel über wie Anti-Bot-Systeme Proxis erkennen.
Ebene 1: IP-Reputation und Proxy-Auswahl
Ihre IP-Adresse ist das erste, was ein Server sieht. Anti-Bot-Systeme pflegen Datenbanken, die IP-Adressen nach Typ, Geschichte und Verhalten punkten.
Proxy Typ Auswahl
| Proxytyp | Nachweisrisiko | Das Beste für |
|---|---|---|
| Wohngebiet | Niedrig | Die meisten Schrottaufgaben, geschützte Standorte |
| ISP (Static Residential) | Low-Medium | Lange Sitzungen, Konten |
| Datencenter | hoch | Ungeschützte Standorte, hochvolumige Aufgaben |
| Mobil | Sehr niedrig | Höchste Schutzgebiete, Social Media |
Für die meisten Schrottprojekte, ProxyHat's Wohn-Proxies bieten die beste Balance von niedrigen Erkennungsrisiken und Kosteneffizienz. Sehen Sie unsere Details Proxytyp Vergleich zur Führung.
IP Rotation Strategie
# Python: Rotating proxy per request using ProxyHat
import requests
proxy_url = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
proxies = {
"http": proxy_url,
"https": proxy_url
}
# Each request through the gateway gets a different IP
for url in urls_to_scrape:
response = requests.get(url, proxies=proxies, timeout=30)
process(response)
- Drehen pro Anfrage zur Auflistung von Seiten und Suchergebnissen.
- Verwenden Sie klebrigen Sitzungen für mehrseitige Ströme (Pagination, Login-Sequenzen).
- Geo-target Ihre IPs das erwartete Publikum der Website mit ProxyHats Standortziel.
Ebene 2: HTTP-Header
Falsche oder fehlende HTTP-Header sind eines der einfachsten Signale für Anti-Bot-Systeme zu erkennen. Ein echter Browser sendet 15-20 Header in einer bestimmten Reihenfolge; ein Standard-Python-Skript sendet 3-4.
Grundlegende Köpfe
# Python: Realistic header set
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Cache-Control": "max-age=0",
"Sec-Ch-Ua": '"Chromium";v="131", "Not_A Brand";v="24"',
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": '"Windows"',
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"Connection": "keep-alive"
}
response = requests.get(url, headers=headers, proxies=proxies)
Header Consistency Rules
- Match Sec-Ch-Ua mit User-Agent: Wenn Sie Chrome 131, Ihre
Sec-Ch-Uamuss auf Version 131 Bezug genommen werden. - Alle Sec-Fetch-Header enthalten: Modern Chrome sendet diese auf jeder Navigation. Sie zu vermissen ist ein starkes Bot-Signal.
- Setzen Sie Akzept-Sprache zu Ihrem Proxy-Geo passen: Ein US-Proxy mit
Accept-Language: ja-JPist verdächtig. - Hauptanweisung: Einige Anti-Bot-Systeme überprüfen Header-Bestellung. Verwenden Sie Bibliotheken, die die Insertionsreihenfolge beibehalten.
Ebene 3: TLS und HTTP/2 Fingerprinting
Ihre HTTP-Client-Bibliothek produziert ein einzigartiges TLS Fingerabdruck dass Anti-Bot-Systeme auf Ihren beanspruchten Benutzer-Agent überprüfen. Ein Chrome Benutzer-Agent mit einem Python TLS Fingerabdruck ist sofort markiert.
Mitiging by Language
| Sprache | Standardbibliothek | Nachweisrisiko | Browser-Grad Alternative |
|---|---|---|---|
| Python | Anfragen/urllib3 | Sehr hoch | curl cffi mit impersonate |
| Node.js | Axios/Gott | hoch | Gescraping |
| Los! | Netz/http | Sehr hoch | uTLS + Sondertransport |
# Python: Browser-grade TLS with curl_cffi
from curl_cffi import requests as curl_requests
response = curl_requests.get(
"https://example.com",
impersonate="chrome",
proxies={
"http": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080",
"https": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
}
)
Ebene 4: Browser Fingerprinting
Wenn Sie einen Headless-Browser verwenden, testet Anti-Bot JavaScript Ihre Browser Fingerabdruck — Canvas, WebGL, AudioContext, Navigatoreigenschaften. Das Schlüsselprinzip ist interne Konsistenz:
- Alle Fingerabdrucksignale müssen miteinander übereinstimmen
- Der Fingerabdruck muss Ihren benutzerbezogenen Ansprüchen entsprechen
- Der Fingerabdruck sollte sich ändern, wenn Sie Proxis drehen
Stealth Konfiguration
// Node.js: Puppeteer with stealth and proxy
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({
headless: 'new',
args: [
'--proxy-server=http://gate.proxyhat.com:8080',
'--disable-blink-features=AutomationControlled',
'--window-size=1920,1080'
]
});
const page = await browser.newPage();
await page.authenticate({
username: 'USERNAME',
password: 'PASSWORD'
});
await page.setViewport({ width: 1920, height: 1080 });
Ebene 5: Verhaltensmuster
Auch bei perfekter technischer Mimicry werden botartige Verhaltensmuster die Erkennung auslösen. Anti-Bot-Systeme analysieren Timing, Navigationsmuster und Interaktionssignaturen.
Timing anfordern
- Zufällige Verzögerungen hinzufügen: Die Menschen stellen keine Anfragen in genauen Abständen vor. Fügen Sie 1-5 Sekunden zufällige Verzögerung zwischen Anfragen hinzu.
- Vary Verzögerungen nach Seitentyp: Inhaltsseiten verdienen längere "Lesepausen" als Auflistungsseiten.
- Berstmuster vermeiden: Machen Sie nicht 50 schnelle Anfragen dann Pause. Anträge gleichmäßig mit natürlicher Varianz verteilen.
# Python: Natural request timing
import time
import random
def scrape_with_natural_timing(urls, proxies):
for url in urls:
response = requests.get(url, proxies=proxies, headers=headers)
process(response)
# Random delay: 1-4 seconds with normal distribution
delay = max(0.5, random.gauss(2.5, 0.8))
time.sleep(delay)
Navigationsmuster
- Folgen Sie natürlichen Pfaden: Besuchen Sie zuerst die Homepage, dann Kategorieseiten, dann Detailseiten – nicht direkt zu tiefen URLs springen.
- Setzen Sie richtige Refereren-Header: Jede Seite sollte die vorherige Seite als Referent bezeichnen.
- Handle redirects: Folgen Sie HTTP redirects natürlich anstatt die ursprüngliche URL wiederherzustellen.
Sitzungsmanagement
- Bewahren von Keksen: Annahme und Rückgabe von Cookies innerhalb einer Sitzung – das Verwerfen aller Cookies ist ein Bot-Signal.
- Länge der Grenzsitzung: Nach 50-100 Anfragen starten Sie eine neue Sitzung mit einem neuen IP und Cookies.
- Grenzwerte für die Prüfung: Wenn Sie 429 Antworten erhalten, setzen Sie sich exponentiell zurück und nicht sofort wieder ein.
Ebene 6: Reaktionsvalidierung
Die Erkennung führt nicht immer zu einem Block. Websites können verschiedene Inhalte bedienen, irreführende Daten injizieren oder weiche Blöcke zurückgeben. validieren Sie Ihre Antworten immer:
- Statuscodes prüfen: 200 bedeutet nicht immer Erfolg – einige Seiten geben 200 mit CAPTCHA-Seiten oder leeren Inhalten zurück.
- Gültige Inhaltsstruktur: Stellen Sie sicher, dass die Antwort erwartete Elemente enthält (Produktpreise, Artikeltext, etc.).
- Monitor für Honeypots: Versteckte Links oder Formularfelder für automatisierte Raupen.
- Erfolgsquoten verfolgen: Wenn Ihre Erfolgsquote unter 90% sinkt, hat sich etwas geändert und eine Untersuchung erforderlich.
Umfassende Anti-Detection Checkliste
| Ebene | Aktion | Priorität |
|---|---|---|
| IP | Benutzen Sie Wohn-Proxies mit Geo-Targeting | Kritische |
| IP | IPs pro Anfrage oder Sitzung drehen | Kritische |
| Kopf | Komplette, realistische Header-Sets senden | Kritische |
| Kopf | Match Akzeptieren-Sprache für Proxy-Standort | hoch |
| TLS | Verwendung der Browser-Klasse TLS-Bibliothek | Kritische |
| TLS | Passen Sie TLS Fingerabdruck auf beanspruchten Browser | Kritische |
| Browser | Verwenden Sie Stealth-Plugins für kopflose Browser | hoch |
| Browser | Behalten Sie konsistente Fingerabdruckprofile | hoch |
| Verhalten | Fügen Sie zufällige Verzögerungen zwischen Anfragen hinzu | hoch |
| Verhalten | Folgen Sie natürlichen Navigationspfaden | Mittel |
| Verhalten | Bewahren Sie Cookies innerhalb von Sitzungen | Mittel |
| Validierung | Prüfen Sie Antwortinhalte, nicht nur Statuscodes | hoch |
Beispiel: Voller Anti-Detection Scraper
# Python: Complete anti-detection scraper setup
from curl_cffi import requests as curl_requests
import time
import random
class StealthScraper:
def __init__(self, proxy_user, proxy_pass):
self.proxy = f"http://{proxy_user}:{proxy_pass}@gate.proxyhat.com:8080"
self.session = curl_requests.Session(impersonate="chrome")
self.session.proxies = {
"http": self.proxy,
"https": self.proxy
}
self.request_count = 0
def get(self, url, referer=None):
headers = {}
if referer:
headers["Referer"] = referer
response = self.session.get(url, headers=headers, timeout=30)
self.request_count += 1
# Rotate session every 50-80 requests
if self.request_count >= random.randint(50, 80):
self._rotate_session()
# Natural delay
time.sleep(max(0.5, random.gauss(2.0, 0.6)))
return response
def _rotate_session(self):
self.session = curl_requests.Session(impersonate="chrome")
self.session.proxies = {
"http": self.proxy,
"https": self.proxy
}
self.request_count = 0
# Usage
scraper = StealthScraper("USERNAME", "PASSWORD")
home = scraper.get("https://example.com")
listing = scraper.get("https://example.com/products", referer="https://example.com")
detail = scraper.get("https://example.com/products/123", referer="https://example.com/products")
Wann Sie Ihren Ansatz Eskalieren
Beginnen Sie mit dem einfachsten Ansatz und eskalieren Sie nur bei Bedarf:
- Level 1 — HTTP Client + Header + Proxy: Arbeitet für die meisten Seiten. Verwendung
curl_cffiodergot-scrapingmit ProxyHat-Proxis. - Level 2 — Browser-Klasse TLS hinzufügen: Erforderlich, wenn die Seite JA3/JA4 Fingerabdrücke überprüft.
- Level 3 — Headless Browser + Stealth: Notwendig für JavaScript-erweiterte Inhalte und anspruchsvolle Anti-Bot-Systeme.
- Level 4 — Volle Browser-Automatisierung mit verhaltensabhängiger Mimicry: Reserviert für die geschütztsten Gebiete (Cloudflare Enterprise, PerimeterX, etc.).
Für die Umsetzungsmuster in bestimmten Sprachen finden Sie unsere Anleitungen: Python, Node.js, und Los!.
Ethische Leitlinien
Anti-Detektionstechniken sind Werkzeuge – ihre ethische Verwendung hängt von Kontext ab. Immer:
- Respect robots.txt und Servicebedingungen
- Verschlüsselung nur öffentlich verfügbare Daten
- Limit-Anforderungsraten zur Vermeidung von Serveraufprall
- Erfüllung der Datenschutzbestimmungen (DSGVO, CCPA)
- Verwendung ethische Schrottpraktiken als Basis
Ziel der Anti-Detektion ist es nicht, legitime Sicherheit zu umgehen. Es ist sicherzustellen, dass Ihr automatisierter Zugriff auf öffentliche Daten nicht falsch als schädlich markiert.






