Bloga geri dön

PerimeterX ve Akamai Tespitini Aşmanın Yolları

PerimeterX ve Akamai'nın çalışma mekanizmalarını inceliyoruz, tespit yöntemlerini öğreniyoruz ve proxy, tarayıcı parmak izleri ve davranış taklidi kullanarak etkili bir kaçış stratejisi oluşturuyoruz.

📅23 Aralık 2025
```html

PerimeterX ve Akamai Korumasını Aşmak: Pratik Antidetekt Yöntemleri

PerimeterX ve Akamai Bot Manager, en büyük e-ticaret platformları, finansal hizmetler ve kurumsal web siteleri tarafından kullanılan iki en gelişmiş bot koruma çözümüdür. Bu sistemler, IP adresinin basit bir şekilde değiştirilmesiyle aşılması mümkün olmayan çok katmanlı bir koruma oluşturarak tarayıcı, kullanıcı davranışı ve ağ özellikleri hakkında yüzlerce parametreyi analiz eder.

Bu kılavuzda, her iki sistemin mimarisini detaylı bir şekilde inceleyecek, tespit yöntemlerini öğrenecek ve gerçek vakalar ve teknik deneyler temelinde kapsamlı bir aşma stratejisi oluşturacağız.

PerimeterX ve Akamai Mimarisi: Tespit Nasıl Çalışır

PerimeterX (şimdi HUMAN Security) ve Akamai Bot Manager, istek işleme sürecinin farklı aşamalarında entegre olan çok katmanlı koruma sistemleri olarak çalışır. Mimariyi anlamak, aşma stratejisi geliştirmek için kritik öneme sahiptir.

PerimeterX Mimarisi

PerimeterX üç aşamada çalışır. İlk aşamada, JavaScript sensörü HTML sayfasına entegre edilir ve istemci tarayıcısında çalıştırılarak çalışma ortamı hakkında veri toplar: WebGL parmak izi, Canvas parmak izi, ses bağlamı, mevcut yazı tipleri, eklentiler, ekran çözünürlüğü ve birçok diğer parametre. Bu sensör obfuscate edilmiştir ve düzenli olarak güncellenir, bu da analizini zorlaştırır.

İkinci aşamada, PerimeterX'in sunucu bileşeni, istek ana uygulamaya ulaşmadan önce HTTP başlıklarını, TLS parmak izini, IP itibarını ve ağ özelliklerini analiz eder. Sistem, gerçek zamanlı olarak güncellenen bilinen botlar ve şüpheli IP adresleri için kendi veritabanını kullanır.

Üçüncü aşama, davranışsal analizdir. PerimeterX, fare hareketlerini, kaydırma hızını, tıklama desenlerini, eylemler arasındaki süreyi izler ve bir davranış profili oluşturur. Makine öğrenimi modelleri bu profili gerçek kullanıcıların ve bilinen botların desenleriyle karşılaştırır.

Akamai Bot Manager Mimarisi

Akamai Bot Manager, CDN seviyesinde entegre olur, bu da ona analiz hızında avantaj sağlar. Sistem, istekleri Akamai'nin sınır sunucularında orijin sunucusuna iletilmeden önce analiz eden kendi BMP (Bot Manager Premier) teknolojisini kullanır.

Akamai'nin temel farkı, kendi CDN'leriyle korunan milyonlarca web sitesinden telemetri kullanmasıdır. Bu, sistemin yeni bot türlerini hızlı bir şekilde tanımlamasını ve tespit kurallarını küresel olarak güncellemesini sağlar. Akamai ayrıca, PerimeterX sensörüne benzer bir sensör kullanır, ancak müşteri bütünlüğünü kriptografik olarak doğrulamaya odaklanır.

Önemli: Her iki sistem de doğrulama sonuçları hakkında şifreli veriler içeren çerezler kullanır. Bu çerezler, sunucu anahtarını bilmeden taklit edilemez, bu nedenle oturumlar arasında çerezlerin basit bir şekilde kopyalanması işe yaramaz.

Tespit Yöntemleri: Koruma Sistemleri Neleri Analiz Ediyor

Modern antbot sistemleri, istekleri yüzlerce parametre üzerinden analiz eder ve bunları birkaç kategoriye ayırır. Her kategoriyi anlamak, otomasyon işaretlerini sistematik olarak ortadan kaldırmayı sağlar.

HTTP Başlıkları ve TLS Analizi

HTTP başlıklarının sırası, tespit için en basit yöntemlerden biridir. Tarayıcılar, sürümlere ve üreticilere göre farklılık gösteren kesin bir sırayla başlık gönderir. Python'daki requests veya Node.js'deki axios gibi kütüphaneler, kendi sıralarını kullanır ve bu da otomasyonu hemen ortaya çıkarır.

TLS parmak izi (JA3 parmak izi), TLS el sıkışma parametrelerinden oluşturulur: TLS sürümü, desteklenen şifre listesi, uzantılar ve bunların sırası. Her tarayıcı ve işletim sistemi kombinasyonu, benzersiz bir parmak izi oluşturur. Örneğin, Windows 11'deki Chrome 120, macOS'taki Chrome 120'den veya aynı sistemdeki Firefox'tan farklı bir parmak izine sahiptir.

// User-Agent ve TLS parmak izi uyumsuzluğu örneği
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0
TLS Fingerprint: JA3 hash Python requests ile eşleşiyor
// Sonuç: anında engelleme

JavaScript Çalışma Ortamı

Headless tarayıcılar, JavaScript ortamında onlarca iz bırakır. navigator.webdriver özelliği, window.chrome nesnelerinin varlığı, navigator.plugins içindeki tutarsızlıklar, WebGL ve Canvas rendering'deki anormallikler kontrol edilir.

PerimeterX ve Akamai, JavaScript işlevlerinin çalışma süresini ölçer (headless tarayıcılarda bu farklıdır), DOM'daki otomasyon kalıntılarını kontrol eder ve işlev çağrısı yığınını analiz eder. Sistemler ayrıca verilerin tutarlılığını kontrol eder — örneğin, User-Agent bir mobil cihazı gösteriyorsa ancak navigator.maxTouchPoints 0 ise, bu bir tespit tetikleyicisidir.

Ağ Özellikleri ve IP İtibarı

Koruma sistemleri, IP adresini birçok parametre üzerinden kontrol eder: bilinen proxy sağlayıcılarına ait olup olmadığı, kara listelerde bulunup bulunmadığı, bu IP ile olan aktivite geçmişi, diğer istek parametreleriyle (tarayıcı dili, saat dilimi) coğrafi konum tutarlılığı.

IP kullanım desenlerine özel bir önem verilir. Eğer bir adresten farklı User-Agent veya tarayıcı parmak izleriyle istekler geliyorsa, bu otomasyon için güçlü bir sinyaldir. Benzer şekilde, bir oturum içinde IP'nin çok sık değişmesi (agresif proxy rotasyonu) engellemeyi tetikler.

Tespit Parametresi PerimeterX Akamai
TLS parmak izi Yüksek öncelik Kritik öncelik
Canvas parmak izi Orta öncelik Yüksek öncelik
Davranışsal analiz Kritik öncelik Yüksek öncelik
IP itibarı Yüksek öncelik Yüksek öncelik
HTTP/2 parmak izi Orta öncelik Kritik öncelik

Tarayıcı Parmak İzi ve TLS Parmak İzleri

Tarayıcı parmak izi, tarayıcının özelliklerine dayanarak benzersiz bir tanımlayıcı oluşturma tekniğidir. Çerezler olmadan bile koruma sistemleri kullanıcıları izleyebilir ve anormallikleri tespit edebilir.

Canvas ve WebGL Parmak İzi

Canvas parmak izi, metin ve grafik içeren görünmez bir görüntünün render edilmesi yoluyla çalışır. Grafik sürücüleri, yazı tipleri ve kenar yumuşatma ayarlarındaki farklılıklar nedeniyle her sistem hafifçe farklı bir görüntü oluşturur. Bu görüntünün hash'i, parmak izinin bir parçası haline gelir.

WebGL parmak izi, daha benzersiz bir parmak izi oluşturmak için 3D render kullanır. Sistem, GPU hakkında bilgi, desteklenen uzantılar, maksimum doku boyutları ve diğer parametreleri talep eder. Bu verilerin kombinasyonu, cihazı tanımlamak için yeterli entropi ile bir parmak izi oluşturur.

// WebGL parmak izi alma örneği
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);

// Sonuç: "Google Inc. (NVIDIA)" + "ANGLE (NVIDIA GeForce RTX 3080)"
// Her cihaz için benzersiz bir kombinasyon

Ses Bağlamı ve Yazı Tipleri

Audio Context API, ses işleme temelinde benzersiz bir parmak izi oluşturmayı sağlar. İşletim sisteminin ses yığınındaki farklılıklar, ölçülebilir ve kimlik tespiti için kullanılabilecek mikroskobik farklılıklara neden olur.

Yüklenmiş yazı tiplerinin listesi de her sistem için benzersizdir. Koruma sistemleri, farklı yazı tipleriyle metin boyutlarını ölçme tekniğini kullanır — eğer yazı tipi yüklenmemişse, tarayıcı yedek yazı tipini kullanır, bu da boyutları değiştirir. Yüzlerce yazı tipinin kontrol edilmesi, benzersiz bir imza oluşturur.

TLS ve HTTP/2 Parmak İzleri

JA3 parmak izi, TLS Client Hello parametrelerinden oluşturulur: SSL/TLS sürümü, şifre takımları listesi, uzantılar listesi, desteklenen eliptik eğri grupları listesi, eliptik eğri noktalarının formatları. Bu parametreler birleştirilir ve hashlenerek benzersiz bir dize oluşturulur.

HTTP/2 parmak izi, SETTINGS çerçevesi parametrelerini, akışların sırasını ve önceliklerini, window update değerlerini analiz eder. Her tarayıcı, benzersiz HTTP/2 ayarları kullanır, bu da doğru TLS parmak izi olsa bile istemcinin tanımlanmasını sağlar.

Pratik İpucu: Parmak izini aşmak için tüm parametrelerin tutarlılığını sağlamak gerekir. Chrome User-Agent ile Firefox TLS parmak izinin kullanılması anında tespit edilir. curl-impersonate gibi araçlar veya tls-client kütüphaneleri, tamamen tutarlı bir parmak izi oluşturmanıza yardımcı olur.

Davranışsal Analiz ve Makine Öğrenimi

Davranışsal analiz, modern antbot sistemlerinin aşılması en zor yönüdür. Mükemmel bir teknik parmak iziyle bile insan dışı davranış otomasyonu ortaya çıkarır.

Fare Hareketleri ve Etkileşimlerin Analizi

PerimeterX ve Akamai, fare hareketlerinin yollarını, hızlanma ve yavaşlama, insan eline özgü mikro hareketleri izler. Botlar genellikle imleci düz hatlar boyunca hareket ettirir veya hiç fare olayı oluşturmaz. Sistemler ayrıca tepki süresini analiz eder — sayfa yüklendikten hemen sonra tıklamak, fare hareketi olmadan şüpheli görünür.

Kaydırma desenleri de benzersizdir. İnsanlar, sayfayı okumak için kaydırırken düzensiz bir şekilde hareket eder: başlangıçta hızlı, okumak için yavaşlar, bazen geri kaydırır. Botlar genellikle sabit bir hızda kaydırır veya anında kaydırma için window.scrollTo() kullanır.

Zaman Desenleri ve Eylem Hızı

Eylemler arasındaki süre, kritik bir parametredir. Bir insan, 10 alanlı bir formu 0.5 saniyede dolduramaz veya bir dakikada 50 bağlantıya geçemez. Koruma sistemleri, her eylem türü için hız profili oluşturur ve bunu kullanıcının davranışıyla karşılaştırır.

Gecikmelerin tutarlılığına özel bir önem verilir. Eğer her tıklama arasında tam olarak 2 saniye geçiyorsa, bu kodda sleep(2000) olduğu açık bir işarettir. İnsan gecikmeleri doğal bir değişkenliğe sahiptir ve belirli istatistiksel dağılımlara uyar.

Makine Öğrenimi Modelleri

Her iki sistem de, gerçek kullanıcıların ve bilinen botların milyonlarca oturumu üzerinde eğitilmiş ML modelleri kullanır. Modeller, eylem sırası, site derinliği, navigasyon desenleri, öğelerle etkileşim gibi yüzlerce özelliği aynı anda analiz eder.

PerimeterX, farklı site türleri için farklı ağırlıklarla bir model ansambılı kullanır. E-ticaret için model, alışveriş desenlerine odaklanırken, medya siteleri için model içerik okuma desenlerine odaklanır. Bu, aşmayı daha zor hale getirir çünkü her sitenin spesifik özelliklerine uyum sağlamayı gerektirir.

// Değişkenlik ile insan benzeri gecikme örneği
function humanDelay(baseMs) {
  // Eşit dağılım yerine log-normal dağılım
  const variance = baseMs * 0.3;
  const delay = baseMs + (Math.random() - 0.5) * variance;
  // Tarayıcı olay işleme için karakteristik mikro gecikmeler ekliyoruz
  const microDelay = Math.random() * 50;
  return Math.max(100, delay + microDelay);
}

// Kullanım: await new Promise(r => setTimeout(r, humanDelay(2000)));

Proxy Seçimi ve Rotasyon Stratejisi

Proxy türü ve rotasyon stratejisinin seçimi, PerimeterX ve Akamai ile çalışırken kritik öneme sahiptir. Proxy'nin yanlış yapılandırılması, tarayıcı parmak izinin maskeleme çabalarını boşa çıkarır.

Konut, Mobil ve Veri Merkezi Proxyleri

Veri merkezi proxyleri, en düşük maliyete sahiptir, ancak aynı zamanda en yüksek tespit riski taşır. PerimeterX ve Akamai, veri merkezi IP adresleri için veritabanlarını destekler ve bu tür istekler için otomatik olarak kontrol seviyesini artırır. Veri merkezi proxylerinin kullanımı, yalnızca düşük öncelikli görevler için veya çok kaliteli bir tarayıcı parmak izi ile kombinasyon halinde mümkündür.

Konut proxyleri, gerçek internet sağlayıcılarının IP adreslerini kullanır, bu da tespit olasılığını önemli ölçüde azaltır. Ancak konut proxylerinin kalitesi büyük ölçüde değişir. Daha önce spam veya diğer şüpheli etkinlikler için kullanılmamış temiz IP havuzlarına sahip sağlayıcıları seçmek önemlidir.

Mobil proxyler, en yüksek güvenilirlik seviyesini sağlar çünkü mobil operatörlerin IP adreslerini kullanır. Bu adresler genellikle birçok kullanıcı arasında paylaşılır (carrier-grade NAT), bu da engellemeyi zorlaştırır. Mobil proxyler, Akamai'ye karşı özellikle etkilidir, çünkü mobil trafiği engelleme konusunda daha temkinlidir.

Rotasyon Stratejileri

Agresif rotasyon (her istek için IP değişimi) yaygın bir hatadır. Bu, şüpheli bir desen oluşturur: bir kullanıcı fiziksel olarak her birkaç saniyede bir IP adresini değiştiremez. Daha etkili olan, bir IP'nin tam bir kullanıcı oturumu (10-30 dakika aktivite) için kullanıldığı oturum rotasyonudur.

Uzun süreli işlemler için 30-60 dakika süren yapışkan oturumlar önerilir. Bu, bir oturum sırasında bir IP üzerinde kalan gerçek bir kullanıcının davranışını taklit eder. Ancak, bir IP'yi çok uzun süre kullanmamaya dikkat etmek önemlidir — birkaç saat süren oturumlar da şüpheli görünür.

Coğrafi Tutarlılık

IP adresinin coğrafi konumu ile diğer parametreler arasında tutarlılık sağlamak kritik öneme sahiptir: tarayıcı dili, saat dilimi, yerel ayar. Eğer IP adresi Almanya'dan ise ancak navigator.language "en-US" dönerse ve saat dilimi "America/New_York" ise, bu anında bir tespit tetikleyicisidir.

Birden fazla coğrafi bölge ile çalışırken, her bölge için ayrı tarayıcı profilleri kullanın. Bir oturum içinde bölgeler arasında geçiş yapmak (önce Fransa'dan, sonra Japonya'dan IP almak) gerçek bir kullanıcı için mümkün değildir ve hemen tespit edilir.

Proxy Türü PerimeterX'e Karşı Etkililik Akamai'ya Karşı Etkililik Öneriler
Veri Merkezi Düşük (30-40%) Çok Düşük (20-30%) Sadece test için
Konut Yüksek (75-85%) Orta (65-75%) Çoğu görev için ana seçim
Mobil Çok Yüksek (85-95%) Yüksek (80-90%) Kritik görevler ve yüksek korumalı siteler için

Antidetekt Tarayıcılar ve Araçların Ayarlanması

Otomasyon araçlarının doğru ayarlanması, PerimeterX ve Akamai'yi aşmanın anahtarıdır. En iyi proxyler bile, tarayıcı parmak izi belirgin otomasyon işaretleri içeriyorsa işe yaramaz.

Playwright ve Puppeteer: Gelişmiş Konfigürasyon

Playwright veya Puppeteer'in temel kurulumu, belirgin bir headless tarayıcı oluşturur. Otomasyonu maskelemek için stealth eklentileri ve ek konfigürasyon kullanmak gerekir. puppeteer-extra-plugin-stealth kütüphanesi, temel işaretleri gizler, ancak ek ayar gerektirir.

// Antidetekt ile Playwright için gelişmiş konfigürasyon
const { chromium } = require('playwright-extra');
const stealth = require('puppeteer-extra-plugin-stealth')();

chromium.use(stealth);

const browser = await chromium.launch({
  headless: false, // Headless modu kolayca tespit edilir
  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 ile undetected-chromedriver

Standart Selenium WebDriver, navigator.webdriver özelliği aracılığıyla kolayca tespit edilir. undetected-chromedriver kütüphanesi, ChromeDriver'ı otomatik olarak yamalar ve temel otomasyon işaretlerini kaldırır ve yeni tespit yöntemlerini aşmak için düzenli olarak güncellenir.

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')

# Tutarlılık için belirli bir Chrome sürümünü kullanma
driver = uc.Chrome(options=options, version_main=120)

# CDP aracılığıyla ek maskeleme
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})")

Antidetekt Tarayıcılar: AdsPower, Multilogin, GoLogin

Ticari antidetekt tarayıcılar, parmak izlerini yönetmek için hazır çözümler sunar. AdsPower ve Multilogin, benzersiz Canvas, WebGL, ses parmak izleri ile profiller oluşturmanıza ve bunları API aracılığıyla yönetmenize olanak tanır. Bu araçlar, çok sayıda hesapla çalışırken özellikle faydalıdır.

Ana avantaj, oturumlar arasında tutarlı bir parmak izinin korunabilmesidir. Her profil, Canvas, WebGL, yazı tipleri için sabit parametrelere sahiptir, bu da uzun vadeli çalışma için kritik öneme sahiptir. Ancak, gerçekçi konfigürasyonlar kullanmak önemlidir — rastgele parmak izleri oluşturmak, teknik olarak mümkün olmayan kombinasyonlar yaratabilir ve bu da kolayca tespit edilir.

Doğru Parmak İzlerine Sahip HTTP İstemcileri

JavaScript render edilmesini gerektirmeyen görevler için, doğru TLS ve HTTP/2 parmak izlerine sahip HTTP istemcileri daha etkilidir. curl-impersonate (Python için — curl_cffi) ve tls-client kütüphaneleri, gerçek tarayıcıların TLS parmak izlerini taklit etmeyi sağlar.

from curl_cffi import requests

# Doğru TLS ve HTTP/2 parmak izi ile Chrome 120 taklit etme
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 parmak izi otomatik olarak Chrome 120 ile eşleşir

Tespit Tetikleyicisi Olmadan Otomasyon Teknikleri

Mükemmel bir teknik parmak iziyle bile, otomasyon desenleri botu ortaya çıkarabilir. Web sitesi ile etkileşim düzeyinde insan davranışını taklit etmek gerekir.

Fare Hareketlerinin Taklidi

A noktasından B noktasına doğru düz bir fare hareketi, otomasyonun belirgin bir işaretidir. İnsan eli, mikro düzeltmelerle pürüzsüz eğriler oluşturur. pyautogui gibi kütüphaneler, Bezier eğrileri kullanarak gerçekçi yollar oluşturmayı sağlar.

// İnsan benzeri fare hareketi yolu oluşturma
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));
  }
  
  // Tıklamadan önce mikro düzeltmeler
  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;
}

Gerçekçi Kaydırma ve İçerik Okuma

İnsanlar, içerik okumak için sayfayı kaydırırken ilginç bölümlerde dururlar. Bot genellikle sayfanın sonuna veya gerekli öğeye en hızlı şekilde kaydırır. Okuma taklidi, içeriği analiz etmeyi ve gerçekçi duraklamalar oluşturmayı gerektirir.

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);
    
    // "Okuma" için rastgele duraklamalar
    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));
    }
  }
}

Doğal Navigasyon Desenleri

Kullanıcılar, hedef sayfaya doğrudan geçmezler — site ile doğal bir şekilde etkileşimde bulunurlar. Ana sayfadan başlayın, birkaç bölüm ziyaret edin, arama veya navigasyon menüsünü kullanın. Bu, etkileşim geçmişi oluşturarak koruma sistemlerinin güvenini artırır.

Hataları ve düzeltmeleri taklit etmek de önemlidir — bir insan yanlış bir bağlantıya tıklayabilir ve geri dönebilir, arama alanında bir hata yapabilir ve yazım hatasını düzeltebilir. Hedefe doğrudan bir yol izlemek şüpheli görünür.

Çerezler ve Depolama Yönetimi

PerimeterX ve Akamai, oturumları izlemek için çerezler ve localStorage kullanır. İstekler arasında çerezlerin tamamen temizlenmesi şüpheli görünür — gerçek bir tarayıcı bazı çerezleri (analitik, ayarlar) saklar. Bir "kullanıcı" için oturumlar arasında çerezleri saklayın, ancak farklı profiller için farklı çerez setleri kullanın.

Önemli: Koruma sistemleri, çerezlerin yaşını analiz eder. Eğer koruma çerezi (_px, _abck) yeni ortaya çıktıysa, ancak kullanıcı sürekli bir ziyaretçinin davranışını sergiliyorsa — bu bir tutarsızlıktır. Uzun vadeli işlemler için profilleri "ısıtın", ziyaret geçmişi oluşturarak.

Pratik Vakalar ve Tipik Sorunların Çözümü

PerimeterX ve Akamai'yı aşma ile ilgili belirli senaryoları ve süreçte ortaya çıkan tipik sorunların çözümlerini inceleyelim.

Vaka 1: PerimeterX ile e-ticaret Verisi Çekme

Görev: PerimeterX ile korunan büyük bir çevrimiçi mağazadan ürün verilerini çıkarmak. Site, farklı IP'lerden bile 3-5 istekten sonra engelliyor.

Çözüm: Yapışkan oturumlarla (30 dakika) konut proxylerinin kombinasyonu ve davranış taklidi ile Playwright kullanımı. Ana noktalar: ana sayfadan başlamak, navigasyon için arama veya kategorileri kullanmak, istekler arasında 3-7 saniye rastgele gecikmeler eklemek, kaydırmayı ve fare hareketlerini taklit etmek. Kritik olan, bir oturum çerçevesinde _px çerezlerini istekler arasında saklamaktır.

// Isınma ile oturum örneği
async function scrapeWithWarmup(page, targetUrls) {
  // Profilin ısınması
  await page.goto('https://example.com');
  await humanScroll(page, await page.$('footer'));
  await new Promise(r => setTimeout(r, 3000 + Math.random() * 2000));
  
  // Menü aracılığıyla navigasyon
  await humanMouseMove(page, menuX, menuY);
  await page.click('nav a.category');
  await new Promise(r => setTimeout(r, 2000 + Math.random() * 1000));
  
  // Isınmadan sonra hedef sayfalara geçiyoruz
  for (let url of targetUrls) {
    await page.goto(url);
    await humanScroll(page, await page.$('.product-info'));
    // Veri çıkarma
    const data = await page.evaluate(() => extractProductData());
    await new Promise(r => setTimeout(r, 5000 + Math.random() * 3000));
  }
}

Vaka 2: API İstekleri için Akamai'yi Aşma

Görev: Akamai Bot Manager ile korunan bir API'ye erişim. API, sayfadaki JavaScript tarafından üretilen belirli başlıklar ve tokenler gerektirir.

Çözüm: Akamai genellikle sensor_data kullanır — tarayıcı doğrulama sonuçlarıyla ilgili şifreli bir dize. Bu dize, JavaScript tarafından üretilir ve isteğe dahil edilmelidir. Geçerli sensor_data almak için tarayıcı otomasyonu kullanıyoruz, ardından bunu doğru TLS parmak izi ile HTTP istemcisinde uyguluyoruz.

// Tarayıcı aracılığıyla sensor_data alma
async function getSensorData(page) {
  await page.goto('https://example.com');
  
  // Akamai sensörünün çalışmasını bekliyoruz
  await page.waitForTimeout(5000);
  
  // sensor_data'yı çerezlerden veya localStorage'dan çıkarıyoruz
  const sensorData = await page.evaluate(() => {
    const cookie = document.cookie.split(';')
      .find(c => c.trim().startsWith('_abck='));
    return cookie ? cookie.split('=')[1] : null;
  });
  
  return sensorData;
}

// HTTP istemcisinde kullanma
const sensorData = await getSensorData(page);
const response = await fetch('https://example.com/api/data', {
  headers: {
    'Cookie': `_abck=${sensorData}`,
    'User-Agent': 'Mozilla/5.0...',
    // Diğer başlıklar tarayıcı ile eşleşmelidir
  }
});

Vaka 3: CAPTCHA ve challenge sayfalarını çözme

Sorun: PerimeterX veya Akamai doğru yapılandırıldığında bile bazen ek kontrol için challenge sayfaları veya CAPTCHA gösterir.

Çözüm: PerimeterX'in challenge sayfaları genellikle ek...

```