Wie man die Erkennung beim Scraping reduziert: Eine komplette Anleitung

Ein umfassender Mehrschichtführer, um die Erkennung beim Web-Schrotten zu vermeiden – mit IP-Drehung, HTTP-Headern, TLS-Fingerabdrücken, Browser-Fingerabdrücken, Verhaltensmustern und Session-Management.

Wie man die Erkennung beim Scraping reduziert: Eine komplette Anleitung

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

Proxy Typ Auswahl
ProxytypNachweisrisikoDas Beste für
WohngebietNiedrigDie meisten Schrottaufgaben, geschützte Standorte
ISP (Static Residential)Low-MediumLange Sitzungen, Konten
DatencenterhochUngeschützte Standorte, hochvolumige Aufgaben
MobilSehr niedrigHö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-Ua muss 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-JP ist 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

Mitiging by Language
SpracheStandardbibliothekNachweisrisikoBrowser-Grad Alternative
PythonAnfragen/urllib3Sehr hochcurl cffi mit impersonate
Node.jsAxios/GotthochGescraping
Los!Netz/httpSehr hochuTLS + 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

Umfassende Anti-Detection Checkliste
EbeneAktionPriorität
IPBenutzen Sie Wohn-Proxies mit Geo-TargetingKritische
IPIPs pro Anfrage oder Sitzung drehenKritische
KopfKomplette, realistische Header-Sets sendenKritische
KopfMatch Akzeptieren-Sprache für Proxy-Standorthoch
TLSVerwendung der Browser-Klasse TLS-BibliothekKritische
TLSPassen Sie TLS Fingerabdruck auf beanspruchten BrowserKritische
BrowserVerwenden Sie Stealth-Plugins für kopflose Browserhoch
BrowserBehalten Sie konsistente Fingerabdruckprofilehoch
VerhaltenFügen Sie zufällige Verzögerungen zwischen Anfragen hinzuhoch
VerhaltenFolgen Sie natürlichen NavigationspfadenMittel
VerhaltenBewahren Sie Cookies innerhalb von SitzungenMittel
ValidierungPrüfen Sie Antwortinhalte, nicht nur Statuscodeshoch

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:

  1. Level 1 — HTTP Client + Header + Proxy: Arbeitet für die meisten Seiten. Verwendung curl_cffi oder got-scraping mit ProxyHat-Proxis.
  2. Level 2 — Browser-Klasse TLS hinzufügen: Erforderlich, wenn die Seite JA3/JA4 Fingerabdrücke überprüft.
  3. Level 3 — Headless Browser + Stealth: Notwendig für JavaScript-erweiterte Inhalte und anspruchsvolle Anti-Bot-Systeme.
  4. 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.

Häufig gestellte Fragen

Bereit loszulegen?

Zugang zu über 50 Mio. Residential-IPs in über 148 Ländern mit KI-gesteuerter Filterung.

Preise ansehenResidential Proxies
← Zurück zum Blog