PerimeterX (HUMAN) Tespit Sinyalleri ve Yasal Geçiş Stratejileri

PerimeterX (HUMAN Security) bot korumasının çalışma prensibini, tespit sinyallerini ve veri merkezli proxy'lerle nasıl başa çıkılacağını pratik kod örnekleriyle açıklıyoruz.

Understanding PerimeterX (HUMAN): Detection Signals, Architecture & Legitimate Bypass

PerimeterX (HUMAN) tespit mekanizmaları, günümüzün en karmaşık bot koruma sistemlerinden biridir. United Airlines, American Airlines, Neiman Marcus gibi büyük markaların arkasında çalışan bu sistem, yalnızca IP tabanlı engellemelere güvenmek yerine davranışsal analiz, cihaz parmak izi ve TLS fingerprinting gibi çok katmanlı bir yaklaşım benimser. Bu rehberde, PerimeterX'in teknik mimarisini derinlemesine inceleyecek ve yasal otomasyon çalışmalarınızda bu sistemle nasıl temiz bir şekilde başa çıkabileceğinizi göstereceğiz.

PerimeterX (HUMAN) Tespit Mimarisi Nasıl Çalışır?

PerimeterX, 2020 yılında HUMAN Security ile birleşti ve birlikte bot mitigation pazarının önde gelen oyuncularından biri haline geldi. Sistem, istemci tarafında JavaScript tabanlı bir challenge mekanizmasıyla çalışır ve sunucu tarafında davranışsal analiz motoruyla entegre olur. Temel akış şu şekildedir:

  1. İlk istek: Tarayıcı sayfayı yüklediğinde, PerimeterX'in JavaScript modülü (genellikle window._pxAppId üzerinden başlatılır) devreye girer.
  2. Çerez dağıtımı: Sistem, _px3 ve _pxhd çerezlerini tarayıcıya yerleştirir. _px3, base64 ile kodlanmış bir payload içerir; içinde cihaz parmak izi, zaman damgası ve imza bulunur. _pxhd ise kalıcı cihaz tanımlayıcısı işlevi görür.
  3. JS challenge: Eğer sistem şüpheli bir trafiği tespit ederse, kullanıcıya bir CAPTCHA benzeri interaktif challenge gösterir. Bu challenge, /px/captcha/ endpoint'i üzerinden servis edilir.
  4. Davranışsal veri toplama: Arka planda, fare hareketleri, tıklama desenleri, scroll davranışı ve tuş basma zamanlamaları sürekli olarak toplanır ve sunucuya gönderilir.

Bu akışın kritik noktası, _px3 çerezinin içeriğidir. Bu çerez, PerimeterX'in sunucu tarafında doğruladığı bir imza içerir. Çerezin manipüle edilmesi veya sahte oluşturulması, HMAC tabanlı imza doğrulaması nedeniyle pratik olarak imkansızdır. Bu nedenle, gerçek bir tarayıcı bağlamı oluşturmak ve davranışsal sinyalleri doğru şekilde üretmek, tek uygulanabilir stratejidir.

_px3 ve _pxhd Çerezlerinin İç Yapısı

_px3 çerezi, base64 kodlu bir JSON payload içerir. Bu payload'ın yaklaşık 1.5 KB boyutunda olduğu ve şu alanları içerdiği bilinmektedir:

  • vid: Ziyaretçi kimliği (visitor ID) — cihaz parmak izine dayalı benzersiz tanımlayıcı
  • ts: Çerezin oluşturulduğu UNIX zaman damgası
  • tag: PerimeterX'in内部 sınıflandırma etiketi (örneğin sa — suspicious activity)
  • ft: First-time ziyaretçi bayrağı
  • uuid: Oturum bazlı benzersiz tanımlayıcı

_pxhd ise daha kısa bir çerezdir ve genellikle 40-60 karakter uzunluğundadır. Bu çerez, tarayıcı kapatıldıktan sonra bile kalıcı olarak cihazı tanımlamak için kullanılır. PerimeterX, bu çerezin yokluğunu veya tutarsızlığını güçlü bir bot sinyali olarak değerlendirir.

PerimeterX Tespit Sinyalleri: Derinlemesine Analiz

PerimeterX'in gücü, tek bir sinyale değil, birden fazla sinyalin korelasyonuna dayanır. Bir sinyali geçmek yeterli değildir; tüm sinyallerin tutarlı ve insana benzemesi gerekir. İşte ana tespit sinyalleri:

1. Cihaz Parmak İzi (Device Fingerprinting)

PerimeterX, Canvas API ve WebGL renderer bilgilerini kullanarak cihaz parmak izi oluşturur. Canvas parmak izi, tarayıcının bir canvas elementine metin veya grafik çizmesini ve sonucu okumasını içerir. Farklı GPU'lar, sürücüler ve işletim sistemleri farklı piksel sonuçları üretir. Bu, MDN Canvas API dokümantasyonunda detaylı olarak açıklanmıştır.

WebGL parmak izi ise WEBGL_debug_renderer_info extension'ı üzerinden GPU vendor ve renderer bilgisini çeker. Örneğin:

  • Gerçek Chrome (Windows + NVIDIA): ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0)
  • Headless Chrome (Linux server): SwiftShader veya Mesa — bu, anında bir bot sinyalidir

Ekran metrikleri de önemlidir. Gerçek bir tarayıcıda screen.width, screen.height, window.devicePixelRatio ve navigator.platform değerleri tutarlı olmalıdır. Örneğin, navigator.platform değeri Win32 iken screen.width'in 360 olması, tutarsız bir sinyaldir.

2. TLS / JA3 Parmak İzi

TLS el sıkışması sırasında, istemcinin gönderdiği ClientHello mesajı, cipher suite listesi, extension sıralaması ve elliptic curve tercihleri açısından benzersiz bir parmak izi oluşturur. Bu parmak izi JA3 algoritması ile bir MD5 hash'e dönüştürülür.

PerimeterX, JA3 hash'ini bilinen bot ve otomasyon araçlarının hash'leriyle karşılaştırır. Kritik noktalar:

  • Python requests: urllib3'ün TLS stack'i, gerçek tarayıcılardan tamamen farklı bir JA3 hash üretir.
  • Headless Chrome (Selenium/Puppeteer): Gerçek Chrome ile aynı TLS stack'i kullansa da, eksik extension'lar veya farklı GREASE değerleri nedeniyle farklı JA3 üretebilir.
  • Gerçek Chrome: Her Chrome major sürümü için JA3 hash yaklaşık olarak aynı kalır, ancak extension sıralamasındaki küçük değişiklikler hash'i etkiler.

JA4, JA3'ün halefi olarak daha granüler bir parmak izi sunar ve uygulama protokolünü (ALPN) de hash'e dahil eder. Bu, HTTP/2 kullanan bir tarayıcı ile HTTP/1.1 kullanan bir scraper'ı ayırt etmeyi mümkün kılar.

3. IP İtibarı ve Coğrafi Tutarlılık

PerimeterX, IP adresini yalnızca ASN seviyesinde değil, subnet ve coğrafi tutarlılık açısından da değerlendirir. Bir kullanıcının IP'sinin datacenter ASN'ine (örneğin AWS AS14618, DigitalOcean AS14061) ait olması, otomatik olarak bir risk skoru ekler. Ancak PerimeterX, yalnızca IP'ye güvenmez — davranışsal sinyallerle korelasyon yapar.

4. Davranışsal Analiz (Behavioral Signals)

PerimeterX'in DataDome ve Akamai'den en önemli farkı, davranışsal sinyallere verdiği ağırlıktır. Sistem, sayfa yüklendikten sonra yaklaşık 3-5 saniye içinde fare hareketlerini, scroll davranışını ve etkileşim zamanlamasını toplar. Bu veriler, bir makine öğrenmesi modeline beslenir ve aşağıdaki desenleri arar:

  • Doğal olmayan fare hareketleri: Tamamen doğrusal veya çok hızlı hareketler, insan hareketlerine benzemez. İnsan fare hareketleri genellikle mikro-titremeler, eğri çizgiler ve duraklamalar içerir.
  • Zamanlama tutarlılığı: Bir butona tıklama ile sayfa yükleme arasındaki süre, her zaman 500ms ise, bu otomatik bir eylemdir. İnsanlar varyasyon gösterir.
  • Scroll deseni: İnsanlar genellikle düzensiz scroll yapar; bazı kısımlarda durur, geri gider. Botlar genellikle sabit hızda scroll yapar.
  • Tuş basma ritmi: Form doldurma sırasında tuşlar arası zamanlama, her tuş için 50ms ise bu bir bot sinyalidir. İnsanlarda bu değer 80-250ms arasında değişir.

PerimeterX vs DataDome vs Akamai: Karşılaştırma

Üç büyük bot koruma sistemi benzer hedeflere ulaşmaya çalışsa da, tespit stratejilerinde önemli farklar vardır. Aşağıdaki tablo bu farkları özetlemektedir:

d>Evet — güçlü
Özellik PerimeterX (HUMAN) DataDome Akamai Bot Manager
Davranışsal sinyal ağırlığı Yüksek — temel tespit yöntemi Orta — IP ve header ağırlıklı Yüksek — ancak daha çok server-side
JS Challenge Evet — interaktif CAPTCHA benzeri Evet — ama daha az sıklıkla Evet — sensor data payload
TLS/JA3 kullanımı Evet Evet — çok güçlü
IP reputation ağırlığı Orta — davranışla korele Yüksek — birincil sinyal Orta
Cookie yapısı _px3, _pxhd datadome _abck, bm_sz
Mobil SDK Evet — PerimeterX Mobile Evet Evet

Bu farkın pratik bir sonucu vardır: DataDome ile başa çıkmak için IP kalitesi ve header tutarlılığı genellikle yeterliyken, PerimeterX ile başa çıkmak için gerçek tarayıcı davranışı taklidi şarttır. Akamai ise hem güçlü TLS fingerprinting hem de karmaşık sensor data payload'ı ile bilinir; ancak Akamai'nin _abck çerezi, PerimeterX'in _px3 çerezinden daha zor reverse-engineer edilebilir.

Yasal PerimeterX Geçişi: Pratik Uygulama

PerimeterX'i yasal olarak geçmek, bir "bypass" değil, doğru tarayıcı bağlamı oluşturmak ve gerçekçi bir kullanıcı deneyimi taklit etmektir. Erişim, hedef sitenin robots.txt kurallarına ve Hizmet Şartları'na uygun olmalıdır. İşte adım adım uygulama:

Adım 1: Playwright Stealth ile Gerçek Tarayıcı Bağlamı

Standart Playwright kurulumu, PerimeterX tarafından tespit edilebilecek birçok sinyal bırakır. playwright-extra ve playwright-stealth plugin'leri bu sinyalleri azaltır:

const { chromium } = require('playwright-extra');
const StealthPlugin = require('playwright-extra-plugin-stealth');

chromium.use(StealthPlugin());

(async () => {
  const browser = await chromium.launch({
    headless: false,
    args: [
      '--disable-blink-features=AutomationControlled',
      '--no-sandbox',
      '--disable-web-security'
    ]
  });

  const context = await browser.newContext({
    viewport: { width: 1920, height: 1080 },
    userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    locale: 'en-US',
    timezoneId: 'America/New_York',
    geolocation: { latitude: 40.7128, longitude: -74.0060 },
    permissions: ['geolocation']
  });

  // ProxyHat residential proxy ile bağlan
  await context.route('**/*', async (route) => {
    await route.continue({
      headers: {
        ...route.request().headers(),
        'Accept-Language': 'en-US,en;q=0.9'
      }
    });
  });

  const page = await context.newPage();

  // Gerçekçi fare hareketi ekle
  await page.mouse.move(100, 200, { steps: 10 });
  await page.waitForTimeout(500);
  await page.mouse.move(300, 150, { steps: 15 });

  await page.goto('https://www.example.com', {
    waitUntil: 'networkidle',
    timeout: 60000
  });

  // _px3 çerezinin oluşmasını bekle
  await page.waitForTimeout(3000);
  const cookies = await context.cookies();
  const px3 = cookies.find(c => c.name === '_px3');
  console.log('_px3 cookie:', px3 ? 'Present' : 'Missing');

  await browser.close();
})();

Adım 2: ProxyHat Residential Proxy ile IP Rotasyonu

PerimeterX, datacenter IP'lerini otomatik olarak yüksek risk olarak işaretler. ProxyHat residential proxy'leri, gerçek ISP IP'leri kullandığı için bu risk skorunu minimize eder. Aşağıdaki Python örneği, ProxyHat gateway'i ile PerimeterX korumalı bir siteye nasıl erişileceğini gösterir:

import asyncio
from playwright.async_api import async_playwright

PROXYHAT_HTTP = 'http://user-country-US-session-abc123:YOUR_PASSWORD@gate.proxyhat.com:8080'

async def scrape_with_px():
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            headless=False,
            proxy={'server': PROXYHAT_HTTP}
        )

        context = await browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                       'AppleWebKit/537.36 (KHTML, like Gecko) '
                       'Chrome/120.0.0.0 Safari/537.36',
            locale='en-US',
            timezone_id='America/Chicago'
        )

        page = await context.new_page()

        # İnsan benzeri gecikme
        await asyncio.sleep(2)

        # Rastgele fare hareketi
        import random
        for _ in range(5):
            x = random.randint(50, 800)
            y = random.randint(50, 600)
            await page.mouse.move(x, y, steps=random.randint(5, 20))
            await asyncio.sleep(random.uniform(0.1, 0.5))

        await page.goto('https://www.united.com/en/us',
                        wait_until='domcontentloaded')

        # PerimeterX challenge'ın geçmesini bekle
        await asyncio.sleep(5)

        content = await page.content()
        if '_px3' in content or 'px-captcha' in content:
            print('PerimeterX challenge detected — bekle ve tekrar dene')
            await asyncio.sleep(10)
            content = await page.content()

        print('Page title:', await page.title())
        await browser.close()

asyncio.run(scrape_with_px())

Adım 3: curl ile PerimeterX Korunan API'ye Erişim

Bazı durumlarda, headless tarayıcı yerine doğrudan HTTP isteği yeterli olabilir — özellikle _px3 ve _pxhd çerezlerini önceden topladıysanız. ProxyHat SOCKS5 proxy'si ile:

# ProxyHat SOCKS5 ile PerimeterX korumalı siteye istek
curl -x socks5://user-country-US-session-stable01:PASSWORD@gate.proxyhat.com:1080 \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' \
  -H 'Accept-Language: en-US,en;q=0.9' \
  -H 'Accept-Encoding: gzip, deflate, br' \
  -H 'Sec-Ch-Ua: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"' \
  -H 'Sec-Ch-Ua-Mobile: ?0' \
  -H 'Sec-Ch-Ua-Platform: "Windows"' \
  -H 'Sec-Fetch-Dest: document' \
  -H 'Sec-Fetch-Mode: navigate' \
  -H 'Sec-Fetch-Site: none' \
  -H 'Sec-Fetch-User: ?1' \
  -H 'Upgrade-Insecure-Requests: 1' \
  --compressed \
  -b '_px3=PREVIOUSLY_COLLECTED_PX3_VALUE; _pxhd=PREVIOUSLY_COLLECTED_PXHD_VALUE' \
  'https://www.example.com/api/data'

Bu yöntem, yalnızca daha önce gerçek bir tarayıcı üzerinden topladığınız geçerli çerezlerle çalışır. Çerezlerin geçerlilik süresi genellikle 24-72 saat arasındadır ve session-based kullanım için sticky proxy gerekir.

PerimeterX Kullanan Siteler

PerimeterX, özellikle aşağıdaki sektörlerde yaygın olarak kullanılmaktadır:

  • Havayolları: United Airlines, American Airlines, Delta Air Lines — bu siteler, botların fiyat scraping ve stok kontrolü yapmasını engellemek için PerimeterX kullanır.
  • Lüks e-ticaret: Neiman Marcus, Saks Fifth Avenue — bu siteler, limited-edition ürün botlarına karşı koruma sağlar.
  • Bilet satışı: Bazı büyük ticketing platformları, bot scalping'i önlemek için PerimeterX'i tercih eder.
  • Finans: Bazı bankalar ve finansal hizmet platformları, hesap ele geçirme girişimlerini engellemek için PerimeterX kullanır.

Bu sitelerde scraping yaparken, özellikle havayolu sektöründe, SERP takibi ve fiyat monitoring amaçlı çalışıyorsanız, PerimeterX challenge'ı ile karşılaşmanız kaçınılmazdır. ProxyHat'in proxy lokasyonları arasında A merkezli residential IP'ler, bu sitelere erişim için en uygun seçenektir.

Yaygın Hatalar ve Edge Case'ler

1. Headless Mode'da Kalıcı Olmak

Headless Chrome, navigator.webdriver özelliğini true olarak ayarlar ve bu, PerimeterX tarafından anında tespit edilir. --headless=new bayrağı Chrome 112+ ile birlikte bu sorunu kısmen çözer, ancak yine de ek stealth plugin'leri gerekir. En güvenli yöntem, headless: false ile Xvfb kullanmaktır.

2. Tek IP ile Yüksek Frekansta İstek

Residential proxy kullansanız bile, tek bir IP'den saniyede 10'dan fazla istek göndermek, PerimeterX'in rate-based tespitini tetikler. İstekler arasına 2-5 saniye rastgele gecikme eklemek, bu riski büyük ölçüde azaltır.

3. Çerez Yenilemeyi Unutmak

_px3 çerezi, yaklaşık 30 dakika sonra expire olabilir. Uzun süren scraping oturumlarında, çerezin yenilenmesi gerekir. Sticky session ile aynı IP'yi korumak, çerez yenileme sırasında tutarlılığı sağlar.

4. Tutarsız Browser Profili

User-Agent Chrome/120 iken Sec-Ch-Ua header'ında Chrome/119 yazmak, anında bir tespit sinyalidir. Tüm browser identifier'lar tutarlı olmalıdır.

ProxyHat ile PerimeterX Geçişi Konfigürasyonu

ProxyHat, PerimeterX korumalı sitelere erişim için residential proxy'ler sunar. İşte optimal konfigürasyon:

  • Proxy tipi: Residential — datacenter IP'ler PerimeterX tarafından yüksek risk olarak işaretlenir
  • Coğrafi hedef: Hedef sitenin bulunduğu ülkeye uygun IP seçin (örneğin US sitesi için country-US)
  • Session yönetimi: Sticky session kullanın — session-abc123 flag'i ile aynı IP'yi koruyun
  • Rotation: Her 50-100 istek sonrasında session ID'yi değiştirin
  • Port: HTTP için 8080, SOCKS5 için 1080

ProxyHat pricing detayları için fiyatlandırma sayfamızı inceleyebilirsiniz. Web scraping kullan senaryolarımız için web scraping rehberimize bakın. Teknik dokümantasyon için ProxyHat Docs adresini ziyaret edin.

Etik Çerçeve ve Yasal Uyum

PerimeterX korumalı sitelere erişim, yalnızca aşağıdaki koşullarda meşrudur:

  • Hedef sitenin robots.txt dosyası scraping'e izin veriyorsa veya açıkça yasaklamıyorsa
  • Veri toplama, araştırma, fiyat karşılaştırması veya rekabet analizi gibi meşru amaçlarla yapılıyorsa
  • Siteye aşırı yük bindirilmemesi için makul hız sınırlarına uyuluyorsa
  • Kişisel veri toplamıyorsa veya GDPR/CCPA kapsamında veri işleme yapılmıyorsa
  • Hedef sitenin Hizmet Şartları, otomatik erişimi açıkça yasaklamıyorsa

Yasal scraping, bot koruma sistemlerini "aşmak" değil, sitenin izin verdiği sınırlar içinde kalmaktır. PerimeterX'in tespit sinyallerini anlamak, hem güvenlik araştırmacıları hem de yasal otomasyon mühendisleri için değerlidir.

Key Takeaways

  • PerimeterX (HUMAN), davranışsal sinyallere en çok ağırlık veren bot koruma sistemidir — yalnızca IP veya TLS geçmek yeterli değildir.
  • _px3 ve _pxhd çerezleri, HMAC imzalıdır ve sahte oluşturulamaz — gerçek tarayıcı bağlamı şarttır.
  • Canvas/WebGL parmak izi, JA3/JA4 TLS parmak izi ve davranışsal analiz birlikte çalışır — tek bir sinyali geçmek yetermez.
  • Residential proxy + Playwright stealth + gerçekçi pacing, PerimeterX geçişi için en güvenli kombinasyondur.
  • İstekler arası 2-5 saniye rastgele gecikme ve 50-100 istek başına session rotation, tespit riskini minimize eder.
  • Erişim her zaman hedef sitenin ToS ve robots.txt kurallarına uygun olmalıdır.

SSS

S: PerimeterX (HUMAN) nedir?
PerimeterX, 2020'de HUMAN Security ile birleşen bir bot koruma sistemidir. JavaScript tabanlı challenge mekanizması, cihaz parmak izi, TLS/JA3 tespiti ve davranışsal analiz (fare hareketi, zamanlama) gibi çok katmanlı sinyalleri birleştirerek bot trafiğini tespit eder. Havayolları, lüks e-ticaret ve finans sektörlerinde yaygın olarak kullanılır.

S: PerimeterX tespiti proxy kullanıcıları için neden önemlidir?
PerimeterX, yalnızca IP tabanlı engellemelere güvenmeyen bir sistemdir. Datacenter IP'ler otomatik olarak yüksek risk olarak işaretlenir, ancak residential IP kullanımı tek başına yeterli değildir. Davranışsal sinyaller ve tarayıcı parmak izi de tutarlı olmalıdır. Bu nedenle proxy kullanıcıları, doğru proxy tipini seçmenin yanı sıra gerçek tarayıcı bağlamı oluşturmak zorundadır.

S: PerimeterX için hangi proxy tipi en iyisidir?
Residential proxy'ler, PerimeterX korumalı sitelere erişim için en iyi seçenektir. Datacenter IP'ler, PerimeterX'in IP reputation veritabanında yüksek risk olarak işaretlenir. Mobile proxy'ler de çalışabilir, ancak residential IP'ler daha geniş bir coğrafi dağılım sunar. ProxyHat residential proxy'leri, gerçek ISP IP'leri kullandığı için en düşük risk skorunu sağlar.

S: PerimeterX engellerini nasıl önlersiniz?
PerimeterX'i yasal olarak geçmek için: (1) residential proxy kullanın, (2) Playwright stealth plugin ile gerçek tarayıcı bağlamı oluşturun, (3) tutarlı browser profili (UA, Sec-Ch-Ua, viewport) kullanın, (4) istekler arası 2-5 saniye rastgele gecikme ekleyin, (5) gerçekçi fare hareketleri simüle edin, (6) sticky session ile çerez tutarlılığını koruyun. Hedef sitenin ToS ve robots.txt kurallarına uyum şarttır.

Başlamaya hazır mısınız?

148+ ülkede 50M+ konut IP'sine AI destekli filtreleme ile erişin.

Fiyatlandırmayı GörüntüleKonut Proxy'leri
← Bloga Dön