← ZurĂŒck zum Blog

Wie man die Erkennung von PerimeterX und Akamai umgeht

Wir analysieren die Funktionsweise von PerimeterX und Akamai, untersuchen ihre Erkennungsmethoden und entwickeln eine effektive Umgehungsstrategie unter Verwendung von Proxys, Browser-FingerabdrĂŒcken und Verhaltenssimulation.

📅23. Dezember 2025
```html

Umgehung des Schutzes von PerimeterX und Akamai: Praktische Antidetect-Methoden

PerimeterX und Akamai Bot Manager sind zwei der fortschrittlichsten Lösungen zum Schutz vor Bots, die von den grĂ¶ĂŸten E-Commerce-Plattformen, Finanzdienstleistungen und Unternehmenswebsites eingesetzt werden. Diese Systeme analysieren Hunderte von Parametern des Browsers, des Nutzerverhaltens und der Netzwerkeigenschaften und schaffen einen mehrschichtigen Schutz, der nicht einfach durch einen Wechsel der IP-Adresse umgangen werden kann.

In diesem Leitfaden werden wir die Architektur beider Systeme im Detail untersuchen, ihre Erkennungsmethoden analysieren und eine umfassende Umgehungsstrategie entwickeln, die auf realen AnwendungsfÀllen und technischen Experimenten basiert.

Architektur von PerimeterX und Akamai: Wie die Erkennung funktioniert

PerimeterX (jetzt HUMAN Security) und Akamai Bot Manager funktionieren als mehrschichtige Schutzsysteme, die sich in verschiedenen Phasen der Anfrageverarbeitung integrieren. Das VerstĂ€ndnis ihrer Architektur ist entscheidend fĂŒr die Entwicklung einer Umgehungsstrategie.

Architektur von PerimeterX

PerimeterX arbeitet in drei Phasen. In der ersten Phase wird ein JavaScript-Sensor in die HTML-Seite eingebettet und im Browser des Clients ausgefĂŒhrt, um Daten ĂŒber die AusfĂŒhrungsumgebung zu sammeln: WebGL-Fingerprint, Canvas-Fingerprint, Audio-Kontext, verfĂŒgbare Schriftarten, Plugins, Bildschirmauflösung und viele andere Parameter. Dieser Sensor ist obfuskiert und wird regelmĂ€ĂŸig aktualisiert, was seine Analyse erschwert.

In der zweiten Phase analysiert die serverseitige Komponente von PerimeterX die HTTP-Header, den TLS-Fingerprint, die IP-Reputation und die Netzwerkeigenschaften, noch bevor die Anfrage die Hauptanwendung erreicht. Das System verwendet eine eigene Datenbank bekannter Bots und verdÀchtiger IP-Adressen, die in Echtzeit aktualisiert wird.

Die dritte Phase ist die Verhaltensanalyse. PerimeterX verfolgt Mausbewegungen, Scrollgeschwindigkeit, Klickmuster, Zeit zwischen Aktionen und erstellt ein Verhaltensprofil. Modelle des maschinellen Lernens vergleichen dieses Profil mit Mustern realer Benutzer und bekannter Bots.

Architektur des Akamai Bot Managers

Akamai Bot Manager integriert sich auf der CDN-Ebene, was ihm einen Geschwindigkeitsvorteil bei der Analyse verschafft. Das System verwendet die eigene Technologie BMP (Bot Manager Premier), die Anfragen auf den Edge-Servern von Akamai analysiert, bevor sie an den Origin-Server weitergeleitet werden.

Ein entscheidender Unterschied bei Akamai ist die Nutzung von Telemetrie von Millionen von Websites, die durch ihr CDN geschĂŒtzt sind. Dies ermöglicht es dem System, neue Bot-Typen schnell zu identifizieren und die Erkennungsregeln global zu aktualisieren. Akamai verwendet auch eine Web-SDK-Technologie, die dem Sensor von PerimeterX Ă€hnlich ist, jedoch mit einem Fokus auf die kryptografische IntegritĂ€tsprĂŒfung des Clients.

Wichtig: Beide Systeme verwenden Cookies mit verschlĂŒsselten Daten zu den ÜberprĂŒfungsergebnissen. Diese Cookies können nicht gefĂ€lscht werden, ohne den Server-SchlĂŒssel zu kennen, weshalb das einfache Kopieren von Cookies zwischen Sitzungen nicht funktioniert.

Erkennungsmethoden: Was die Schutzsysteme analysieren

Moderne Antibot-Systeme analysieren Anfragen anhand von Hunderte von Parametern, die in mehrere Kategorien unterteilt sind. Das VerstÀndnis jeder Kategorie ermöglicht es, systematisch Automatisierungsmarker zu beseitigen.

Analyse der HTTP-Header und TLS

Die Reihenfolge der HTTP-Header ist eine der einfachsten Methoden zur Erkennung. Browser senden Header in einer streng definierten Reihenfolge, die zwischen Versionen und Herstellern variiert. Bibliotheken wie requests in Python oder axios in Node.js verwenden ihre eigene Reihenfolge, die sofort Automatisierung verrÀt.

Der TLS-Fingerprint (JA3-Fingerprint) wird aus den Parametern des TLS-Handshakes erstellt: TLS-Version, Liste der unterstĂŒtzten Cipher, Erweiterungen und deren Reihenfolge. Jede Kombination aus Browser und Betriebssystem erzeugt einen einzigartigen Fingerprint. Zum Beispiel hat Chrome 120 auf Windows 11 einen Fingerprint, der sich von Chrome 120 auf macOS oder von Firefox auf demselben System unterscheidet.

// Beispiel fĂŒr eine Diskrepanz zwischen User-Agent und TLS-Fingerprint
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0
TLS Fingerprint: JA3-Hash entspricht Python requests
// Ergebnis: sofortige Blockierung

JavaScript-AusfĂŒhrungsumgebung

Headless-Browser hinterlassen Dutzende von Spuren in der JavaScript-Umgebung. Es werden Eigenschaften wie navigator.webdriver, das Vorhandensein von Objekten window.chrome, Diskrepanzen in navigator.plugins und Anomalien im WebGL und Canvas-Rendering ĂŒberprĂŒft.

PerimeterX und Akamai verwenden fortschrittliche PrĂŒfmethoden: Sie messen die AusfĂŒhrungszeit von JavaScript-Funktionen (in Headless-Browsern unterscheidet sie sich), ĂŒberprĂŒfen das Vorhandensein von Automatisierungsartefakten im DOM und analysieren den Funktionsaufrufstack. Die Systeme ĂŒberprĂŒfen auch die Konsistenz der Daten — zum Beispiel, wenn der User-Agent auf ein mobiles GerĂ€t hinweist, aber navigator.maxTouchPoints gleich 0 ist, ist das ein Erkennungs-Trigger.

Netzwerkeigenschaften und IP-Reputation

Die Schutzsysteme ĂŒberprĂŒfen die IP-Adresse anhand vieler Parameter: Zugehörigkeit zu bekannten Proxy-Anbietern, Listung in Blacklists, AktivitĂ€tsgeschichte von dieser IP und Konsistenz der Geolokalisierung mit anderen Anfrageparametern (Sprache des Browsers, Zeitzone).

Besonderes Augenmerk wird auf die Nutzungsmuster der IP gelegt. Wenn von einer Adresse Anfragen mit unterschiedlichen User-Agents oder Browser-Fingerprints kommen, ist das ein starkes Signal fĂŒr Automatisierung. Ebenso, wenn die IP innerhalb einer Sitzung zu oft wechselt (aggressive Proxy-Rotation), wird dies als Trigger fĂŒr eine Blockierung angesehen.

Erkennungsparameter PerimeterX Akamai
TLS-Fingerprinting Hohe PrioritÀt Kritische PrioritÀt
Canvas-Fingerprinting Mittlere PrioritÀt Hohe PrioritÀt
Verhaltensanalyse Kritische PrioritÀt Hohe PrioritÀt
IP-Reputation Hohe PrioritÀt Hohe PrioritÀt
HTTP/2-Fingerprinting Mittlere PrioritÀt Kritische PrioritÀt

Browser-Fingerprinting und TLS-Fingerprints

Browser-Fingerprinting ist eine Technik zur Erstellung einer einzigartigen Identifikation des Browsers basierend auf seinen Eigenschaften. Selbst ohne Cookies können die Schutzsysteme Benutzer verfolgen und Anomalien erkennen.

Canvas- und WebGL-Fingerprinting

Canvas-Fingerprinting funktioniert durch das Rendern eines unsichtbaren Bildes mit Text und Grafiken. Aufgrund von Unterschieden in Grafiktreibern, Schriftarten und Anti-Aliasing-Einstellungen erzeugt jedes System ein leicht unterschiedliches Bild. Der Hash dieses Bildes wird Teil des Fingerprints.

WebGL-Fingerprinting verwendet 3D-Rendering, um einen noch einzigartigeren Fingerprint zu erstellen. Das System fragt Informationen ĂŒber die GPU, unterstĂŒtzte Erweiterungen, maximale TexturgrĂ¶ĂŸen und andere Parameter ab. Die Kombination dieser Daten erzeugt einen Fingerprint mit ausreichender Entropie zur Identifizierung des GerĂ€ts.

// Beispiel fĂŒr das Erhalten eines WebGL-Fingerprints
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl');
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);

// Ergebnis kann sein: "Google Inc. (NVIDIA)" + "ANGLE (NVIDIA GeForce RTX 3080)"
// Einzigartige Kombination fĂŒr jedes GerĂ€t

Audio-Kontext und Schriftarten

Das Audio Context API ermöglicht die Erstellung eines einzigartigen Fingerprints basierend auf der Audioverarbeitung. Unterschiede im Audio-Stack des Betriebssystems fĂŒhren zu mikroskopisch kleinen Unterschieden in der Verarbeitung des Audiosignals, die gemessen werden können und zur Identifizierung verwendet werden.

Die Liste der installierten Schriftarten ist ebenfalls einzigartig fĂŒr jedes System. Die Schutzsysteme verwenden die Technik zur Messung der TextgrĂ¶ĂŸen mit verschiedenen Schriftarten — wenn die Schriftart nicht installiert ist, verwendet der Browser einen Fallback, was die GrĂ¶ĂŸen verĂ€ndert. Die ÜberprĂŒfung von Hunderten von Schriftarten erzeugt eine einzigartige Signatur.

TLS- und HTTP/2-Fingerprinting

Der JA3-Fingerprint wird aus den Parametern des TLS Client Hello erstellt: SSL/TLS-Version, Liste der Cipher Suites, Liste der Erweiterungen, Liste der unterstĂŒtzten elliptischen Kurven. Diese Parameter werden verknĂŒpft und gehasht, um eine einzigartige Zeichenfolge zu erstellen.

Der HTTP/2-Fingerprint analysiert die Parameter des SETTINGS-Frames, die Reihenfolge und PrioritÀten der Streams sowie die Werte von Window-Updates. Jeder Browser verwendet einzigartige HTTP/2-Einstellungen, was es ermöglicht, den Client selbst bei einem korrekten TLS-Fingerprint zu identifizieren.

Praktischer Tipp: Um Fingerprinting zu umgehen, ist es wichtig, die Konsistenz aller Parameter zu gewÀhrleisten. Die Verwendung des Chrome User-Agent mit einem Firefox TLS-Fingerprint wird sofort erkannt. Tools wie curl-impersonate oder Bibliotheken wie tls-client helfen, einen vollstÀndig konsistenten Fingerprint zu erstellen.

Verhaltensanalyse und maschinelles Lernen

Die Verhaltensanalyse ist der schwierigste Aspekt moderner Antibot-Systeme zu umgehen. Selbst mit einem perfekten technischen Fingerprint wird un menschliches Verhalten die Automatisierung verraten.

Analyse von Mausbewegungen und Interaktionen

PerimeterX und Akamai verfolgen die Trajektorien der Mausbewegungen, Beschleunigung und Verzögerung, Mikrobewegungen, die fĂŒr die menschliche Hand charakteristisch sind. Bots bewegen den Cursor normalerweise in geraden Linien oder erzeugen ĂŒberhaupt keine Mausereignisse. Die Systeme analysieren auch die Reaktionszeit — ein Klick sofort nach dem Laden der Seite ohne Mausbewegung sieht verdĂ€chtig aus.

Scrollmuster sind ebenfalls einzigartig. Menschen scrollen die Seite unregelmĂ€ĂŸig: schnell am Anfang, verlangsamen zum Lesen, scrollen manchmal zurĂŒck. Bots scrollen normalerweise mit konstanter Geschwindigkeit oder verwenden window.scrollTo() fĂŒr sofortiges Scrollen.

Zeitliche Muster und Geschwindigkeit der Aktionen

Die Zeit zwischen den Aktionen ist ein kritischer Parameter. Ein Mensch kann ein Formular mit 10 Feldern nicht in 0,5 Sekunden ausfĂŒllen oder 50 Links in einer Minute anklicken. Die Schutzsysteme erstellen ein Geschwindigkeitsprofil fĂŒr jede Art von Aktion und vergleichen es mit dem Verhalten des Benutzers.

Besonderes Augenmerk wird auf die Konsistenz der Verzögerungen gelegt. Wenn zwischen jedem Klick genau 2 Sekunden vergehen, ist das ein offensichtliches Zeichen fĂŒr sleep(2000) im Code. Menschliche Verzögerungen weisen natĂŒrliche VariabilitĂ€t auf und folgen bestimmten statistischen Verteilungen.

Modelle des maschinellen Lernens

Beide Systeme verwenden ML-Modelle, die auf Millionen von Sitzungen realer Benutzer und bekannter Bots trainiert wurden. Die Modelle analysieren Hunderte von Merkmalen gleichzeitig: die Reihenfolge der Aktionen, die Tiefe des Seitenbesuchs, Navigationsmuster, Interaktionen mit Elementen.

PerimeterX verwendet ein Ensemble von Modellen mit unterschiedlichen Gewichten fĂŒr verschiedene Typen von Websites. Das Modell fĂŒr E-Commerce konzentriert sich auf Kaufmuster, das Modell fĂŒr Medienseiten auf Lesemuster. Dies macht die Umgehung schwieriger, da es eine Anpassung an die Spezifik der jeweiligen Website erfordert.

// Beispiel fĂŒr menschliche Verzögerungen mit VariabilitĂ€t
function humanDelay(baseMs) {
  // Lognormalverteilung statt gleichverteilt
  const variance = baseMs * 0.3;
  const delay = baseMs + (Math.random() - 0.5) * variance;
  // FĂŒgen Sie Mikroverzögerungen hinzu, die fĂŒr die Verarbeitung von Ereignissen im Browser charakteristisch sind
  const microDelay = Math.random() * 50;
  return Math.max(100, delay + microDelay);
}

// Verwendung: await new Promise(r => setTimeout(r, humanDelay(2000)));

Strategie zur Auswahl und Rotation von Proxys

Die Wahl des Proxytyps und der Rotationsstrategie ist entscheidend bei der Arbeit mit PerimeterX und Akamai. Eine falsche Proxy-Konfiguration macht alle BemĂŒhungen zur Maskierung des Browser-Fingerprints zunichte.

Residenzielle vs. mobile vs. Datacenter-Proxys

Datacenter-Proxys haben die niedrigsten Kosten, aber auch das höchste Risiko der Erkennung. PerimeterX und Akamai unterstĂŒtzen Datenbanken mit IP-Adressen von Rechenzentren und erhöhen automatisch das PrĂŒfungsniveau fĂŒr solche Anfragen. Die Verwendung von Datacenter-Proxys ist nur fĂŒr niedrigpriorisierte Aufgaben oder in Kombination mit einem sehr qualitativ hochwertigen Browser-Fingerprint möglich.

Residenzielle Proxys verwenden IP-Adressen echter Internetanbieter, was die Wahrscheinlichkeit der Erkennung erheblich verringert. Die QualitĂ€t der residential Proxys variiert jedoch stark. Es ist wichtig, Anbieter mit sauberen IP-Pools auszuwĂ€hlen, bei denen die Adressen zuvor nicht fĂŒr Spam oder andere verdĂ€chtige AktivitĂ€ten verwendet wurden.

Mobile Proxys bieten das höchste Maß an Vertrauen, da sie IP-Adressen von Mobilfunkanbietern verwenden. Diese Adressen werden normalerweise zwischen vielen Benutzern geteilt (Carrier-Grade NAT), was die Blockierung erschwert. Mobile Proxys sind besonders effektiv gegen Akamai, das bei der Blockierung von mobilem Traffic vorsichtiger ist.

Rotationsstrategien

Aggressive Rotation (Änderung der IP bei jeder Anfrage) ist ein hĂ€ufiger Fehler. Dies erzeugt ein verdĂ€chtiges Muster: Ein Benutzer kann physisch nicht alle paar Sekunden die IP-Adresse wechseln. Effektiver ist die Sitzungsrotation, bei der eine IP fĂŒr die gesamte Benutzersitzung (10-30 Minuten AktivitĂ€t) verwendet wird.

FĂŒr lĂ€ngere Operationen werden sticky sessions mit einer Dauer von 30-60 Minuten empfohlen. Dies imitiert das Verhalten eines echten Benutzers, der wĂ€hrend der Sitzung auf einer IP bleibt. Dabei ist es wichtig, nicht zu lange eine IP zu verwenden — Sitzungen, die mehrere Stunden dauern, sehen ebenfalls verdĂ€chtig aus.

Geografische Konsistenz

Es ist entscheidend, Übereinstimmung zwischen der Geolokalisierung der IP-Adresse und anderen Parametern zu gewĂ€hrleisten: Sprache des Browsers, Zeitzone, Locale-Einstellungen. Wenn die IP-Adresse aus Deutschland stammt, aber navigator.language "en-US" zurĂŒckgibt und die Zeitzone "America/New_York" ist, ist das ein sofortiger Erkennungs-Trigger.

Bei der Arbeit mit mehreren geografischen Regionen sollten separate Browserprofile fĂŒr jede Region verwendet werden. Das Wechseln zwischen Regionen innerhalb einer Sitzung (IP aus Frankreich, dann aus Japan) ist fĂŒr einen echten Benutzer unmöglich und wird sofort erkannt.

Proxy-Typ EffektivitÀt gegen PerimeterX EffektivitÀt gegen Akamai Empfehlungen
Datacenter Niedrig (30-40%) Sehr niedrig (20-30%) Nur fĂŒr Tests
Residential Hoch (75-85%) Mittel (65-75%) Hauptwahl fĂŒr die meisten Aufgaben
Mobile Sehr hoch (85-95%) Hoch (80-90%) FĂŒr kritische Aufgaben und hochgeschĂŒtzte Websites

Konfiguration von Antidetect-Browsern und -Tools

Die richtige Konfiguration von Automatisierungstools ist ein entscheidender Faktor fĂŒr den erfolgreichen Umgang mit PerimeterX und Akamai. Selbst die besten Proxys helfen nicht, wenn der Browser-Fingerprint offensichtliche Automatisierungsmarker enthĂ€lt.

Playwright und Puppeteer: Fortgeschrittene Konfiguration

Die Basiseinrichtung von Playwright oder Puppeteer erstellt einen offensichtlichen Headless-Browser. Es ist notwendig, Stealth-Plugins und zusÀtzliche Konfigurationen zur Maskierung der Automatisierung zu verwenden. Die Bibliothek puppeteer-extra-plugin-stealth verbirgt die Hauptmarker, erfordert jedoch zusÀtzliche Anpassungen.

// Fortgeschrittene Konfiguration von Playwright mit Antidetect
const { chromium } = require('playwright-extra');
const stealth = require('puppeteer-extra-plugin-stealth')();

chromium.use(stealth);

const browser = await chromium.launch({
  headless: false, // Headless-Modus wird leicht erkannt
  args: [
    '--disable-blink-features=AutomationControlled',
    '--disable-features=IsolateOrigins,site-per-process',
    '--disable-site-isolation-trials',
    '--no-sandbox',
    '--disable-setuid-sandbox',
    '--disable-dev-shm-usage',
    '--disable-accelerated-2d-canvas',
    '--disable-gpu',
    '--window-size=1920,1080',
    '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
  ]
});

const context = await browser.newContext({
  viewport: { width: 1920, height: 1080 },
  locale: 'en-US',
  timezoneId: 'America/New_York',
  permissions: ['geolocation', 'notifications'],
  geolocation: { latitude: 40.7128, longitude: -74.0060 }
});

Selenium mit undetected-chromedriver

Der Standard-Selenium-WebDriver wird leicht ĂŒber die Eigenschaft navigator.webdriver erkannt. Die Bibliothek undetected-chromedriver patcht automatisch ChromeDriver, entfernt die Hauptmarker der Automatisierung und wird regelmĂ€ĂŸig aktualisiert, um neue Erkennungsmethoden zu umgehen.

import undetected_chromedriver as uc
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1920,1080')

# Verwendung einer bestimmten Version von Chrome fĂŒr Konsistenz
driver = uc.Chrome(options=options, version_main=120)

# ZusĂ€tzliche Maskierung ĂŒber CDP
driver.execute_cdp_cmd('Network.setUserAgentOverride', {
    "userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
})

driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

Antidetect-Browser: AdsPower, Multilogin, GoLogin

Kommerzielle Antidetect-Browser bieten fertige Lösungen zur Verwaltung von Fingerprints. AdsPower und Multilogin ermöglichen das Erstellen von Profilen mit einzigartigen Canvas-, WebGL-, Audio-Fingerprints und deren Verwaltung ĂŒber API. Diese Tools sind besonders nĂŒtzlich, wenn man mit vielen Konten arbeitet.

Der entscheidende Vorteil ist die Möglichkeit, einen konsistenten Fingerprint zwischen den Sitzungen zu speichern. Jedes Profil hat feste Parameter fĂŒr Canvas, WebGL, Fonts, was fĂŒr die langfristige Arbeit entscheidend ist. Dabei ist es wichtig, realistische Konfigurationen zu verwenden — die Generierung zufĂ€lliger Fingerprints kann technisch unmögliche Kombinationen erzeugen, die leicht erkannt werden.

HTTP-Clients mit korrekten Fingerprints

FĂŒr Aufgaben, die kein JavaScript-Rendering erfordern, sind HTTP-Clients mit korrekten TLS- und HTTP/2-Fingerprints effektiver. Bibliotheken wie curl-impersonate (fĂŒr Python — curl_cffi) und tls-client ermöglichen es, TLS-Fingerprints realer Browser zu imitieren.

from curl_cffi import requests

# Imitation von Chrome 120 mit korrektem TLS- und HTTP/2-Fingerprint
response = requests.get(
    'https://example.com',
    impersonate="chrome120",
    proxies={
        "http": "http://user:pass@proxy:port",
        "https": "http://user:pass@proxy:port"
    },
    headers={
        'Accept-Language': 'en-US,en;q=0.9',
        'Accept-Encoding': 'gzip, deflate, br',
        'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"'
    }
)

# TLS-Fingerprint entspricht automatisch Chrome 120

Automatisierungstechniken ohne Erkennungs-Trigger

Selbst mit einem perfekten technischen Fingerprint können Automatisierungsmuster einen Bot verraten. Es ist notwendig, menschliches Verhalten auf der Ebene der Interaktion mit der Website zu imitieren.

Emulation von Mausbewegungen

Eine geradlinige Bewegung der Maus von Punkt A nach Punkt B ist ein offensichtliches Zeichen fĂŒr Automatisierung. Die menschliche Hand erzeugt sanfte Kurven mit Mikro-Korrekturen. Bibliotheken wie pyautogui ermöglichen es, realistische Trajektorien unter Verwendung von BĂ©zier-Kurven zu generieren.

// Generierung einer menschlichen Mausbewegungstrajektorie
async function humanMouseMove(page, targetX, targetY) {
  const current = await page.evaluate(() => ({
    x: window.mouseX || 0,
    y: window.mouseY || 0
  }));
  
  const steps = 25 + Math.floor(Math.random() * 15);
  const points = generateBezierCurve(current.x, current.y, targetX, targetY, steps);
  
  for (let point of points) {
    await page.mouse.move(point.x, point.y);
    await new Promise(r => setTimeout(r, 10 + Math.random() * 20));
  }
  
  // Mikro-Korrekturen vor dem Klicken
  await page.mouse.move(targetX + (Math.random() - 0.5) * 2, 
                        targetY + (Math.random() - 0.5) * 2);
}

function generateBezierCurve(x1, y1, x2, y2, steps) {
  const cp1x = x1 + (x2 - x1) * (0.3 + Math.random() * 0.2);
  const cp1y = y1 + (y2 - y1) * (0.3 + Math.random() * 0.2);
  const points = [];
  
  for (let i = 0; i <= steps; i++) {
    const t = i / steps;
    const x = Math.pow(1-t, 2) * x1 + 2 * (1-t) * t * cp1x + Math.pow(t, 2) * x2;
    const y = Math.pow(1-t, 2) * y1 + 2 * (1-t) * t * cp1y + Math.pow(t, 2) * y2;
    points.push({x: Math.round(x), y: Math.round(y)});
  }
  return points;
}

Realistisches Scrollen und Lesen von Inhalten

Menschen scrollen die Seite, um Inhalte zu lesen, und halten an interessanten Abschnitten an. Bots scrollen normalerweise schnell bis zum Ende der Seite oder bis zum gewĂŒnschten Element. Die Imitation des Lesens erfordert die Analyse von Inhalten und die Erstellung realistischer Pausen.

async function humanScroll(page, targetElement) {
  const elementPosition = await page.evaluate(el => {
    const rect = el.getBoundingClientRect();
    return rect.top + window.pageYOffset;
  }, targetElement);
  
  const currentScroll = await page.evaluate(() => window.pageYOffset);
  const distance = elementPosition - currentScroll;
  const scrollSteps = Math.floor(Math.abs(distance) / 100);
  
  for (let i = 0; i < scrollSteps; i++) {
    const scrollAmount = (distance / scrollSteps) * (0.8 + Math.random() * 0.4);
    await page.evaluate((amount) => {
      window.scrollBy({top: amount, behavior: 'smooth'});
    }, scrollAmount);
    
    // ZufĂ€llige Pausen fĂŒr "Lesen"
    if (Math.random() > 0.7) {
      await new Promise(r => setTimeout(r, 1000 + Math.random() * 2000));
    } else {
      await new Promise(r => setTimeout(r, 200 + Math.random() * 400));
    }
  }
}

NatĂŒrliche Navigationsmuster

Benutzer springen nicht direkt zur Zielseite — sie interagieren auf natĂŒrliche Weise mit der Website. Beginnen Sie auf der Startseite, besuchen Sie mehrere Abschnitte, verwenden Sie die Suche oder das NavigationsmenĂŒ. Dies schafft eine Interaktionshistorie, die das Vertrauen der Schutzsysteme erhöht.

Es ist auch wichtig, Fehler und Korrekturen zu imitieren — ein Mensch kann auf den falschen Link klicken und zurĂŒckgehen, beim Eingeben im Suchfeld einen Fehler machen und den Tippfehler korrigieren. Ein ideal gerader Weg zum Ziel sieht verdĂ€chtig aus.

Verwaltung von Cookies und Storage

PerimeterX und Akamai verwenden Cookies und localStorage zur Verfolgung von Sitzungen. Das vollstĂ€ndige Löschen von Cookies zwischen Anfragen sieht verdĂ€chtig aus — ein echter Browser speichert einige Cookies (Analytik, Einstellungen). Speichern Sie Cookies zwischen den Sitzungen fĂŒr einen "Benutzer", verwenden Sie jedoch unterschiedliche Cookie-Sets fĂŒr verschiedene Profile.

Wichtig: Die Schutzsysteme analysieren das Alter der Cookies. Wenn ein Schutz-Cookie (_px, _abck) gerade erst erschienen ist, aber der Benutzer das Verhalten eines Stammbenutzers zeigt — ist das eine Diskrepanz. FĂŒr langfristige Operationen "wĂ€rmen" Sie die Profile auf, indem Sie eine Besuchshistorie erstellen.

Praktische AnwendungsfĂ€lle und Lösungen fĂŒr typische Probleme

Lassen Sie uns spezifische Szenarien zur Umgehung von PerimeterX und Akamai mit Lösungen fĂŒr typische Probleme, die wĂ€hrend des Prozesses auftreten, betrachten.

Fall 1: Parsing von E-Commerce mit PerimeterX

Aufgabe: Daten ĂŒber Produkte von einem großen Online-Shop zu extrahieren, der durch PerimeterX geschĂŒtzt ist. Die Website blockiert nach 3-5 Anfragen, selbst von verschiedenen IPs.

Lösung: Verwendung einer Kombination aus residential Proxys mit sticky sessions (30 Minuten) und Playwright mit vollstĂ€ndiger Emulation des Verhaltens. Wichtige Punkte: Beginnen Sie auf der Startseite, verwenden Sie die Suche oder Kategorien zur Navigation, fĂŒgen Sie zufĂ€llige Verzögerungen von 3-7 Sekunden zwischen den Anfragen hinzu, imitieren Sie das Scrollen und Mausbewegungen. Kritisch ist die Speicherung von _px-Cookies zwischen den Anfragen innerhalb einer Sitzung.

// Beispiel fĂŒr eine Sitzung mit AufwĂ€rmung
async function scrapeWithWarmup(page, targetUrls) {
  // AufwÀrmung des Profils
  await page.goto('https://example.com');
  await humanScroll(page, await page.$('footer'));
  await new Promise(r => setTimeout(r, 3000 + Math.random() * 2000));
  
  // Navigation durch das MenĂŒ
  await humanMouseMove(page, menuX, menuY);
  await page.click('nav a.category');
  await new Promise(r => setTimeout(r, 2000 + Math.random() * 1000));
  
  // Nur nach dem AufwÀrmen zu den Zielseiten wechseln
  for (let url of targetUrls) {
    await page.goto(url);
    await humanScroll(page, await page.$('.product-info'));
    // Daten extrahieren
    const data = await page.evaluate(() => extractProductData());
    await new Promise(r => setTimeout(r, 5000 + Math.random() * 3000));
  }
}

Fall 2: Umgehung von Akamai fĂŒr API-Anfragen

Aufgabe: Zugriff auf eine API, die durch Akamai Bot Manager geschĂŒtzt ist. Die API erfordert spezifische Header und Token, die durch JavaScript auf der Seite generiert werden.

Lösung: Akamai verwendet hĂ€ufig sensor_data — eine verschlĂŒsselte Zeichenfolge mit den Ergebnissen der BrowserĂŒberprĂŒfungen. Diese Zeichenfolge wird durch JavaScript generiert und muss in die Anfrage aufgenommen werden. Verwenden Sie die Browserautomatisierung, um gĂŒltige sensor_data zu erhalten, und wenden Sie es dann in einem HTTP-Client mit korrektem TLS-Fingerprint an.

// Extraktion von sensor_data ĂŒber den Browser
async function getSensorData(page) {
  await page.goto('https://example.com');
  
  // Warten auf die AusfĂŒhrung des Akamai-Sensors
  await page.waitForTimeout(5000);
  
  // sensor_data aus Cookies oder localStorage extrahieren
  const sensorData = await page.evaluate(() => {
    const cookie = document.cookie.split(';')
      .find(c => c.trim().startsWith('_abck='));
    return cookie ? cookie.split('=')[1] : null;
  });
  
  return sensorData;
}

// Verwendung im HTTP-Client
const sensorData = await getSensorData(page);
const response = await fetch('https://example.com/api/data', {
  headers: {
    'Cookie': `_abck=${sensorData}`,
    'User-Agent': 'Mozilla/5.0...',
    // Weitere Header mĂŒssen mit dem Browser ĂŒbereinstimmen
  }
});

Fall 3: Lösung von CAPTCHA und Challenge-Seiten

Problem: Selbst bei korrekter Konfiguration zeigen PerimeterX oder Akamai manchmal Challenge-Seiten oder CAPTCHA zur zusĂ€tzlichen ÜberprĂŒfung an.

Lösung: Challenge-Seiten von PerimeterX fĂŒhren normalerweise zusĂ€tzliche...

```