Bloga geri dön

Web Sitesi Dedektör Kartını Nasıl Çıkarırız: Fingerprint Scriptlerini Kendimiz Bulalım

AliExpress vakası: gizli ses izi Bluetooth kulaklıklar aracılığıyla kendini ifşa etti. Pratik bir yöntem inceliyoruz - bir saatte anti-fraud satıcısını nasıl belirleyeceğiz, onun scriptlerini nasıl bulacağız, DevTools'ta fingerprint-API'yi nasıl entegre edeceğiz ve platformun gerçekten hangi sinyalleri aldığını ve bunları nereye gönderdiğini nasıl göreceğiz.

📅25 Ağustos 2026
Web Sitesi Dedektör Kartını Nasıl Çıkarırız: Fingerprint Scriptlerini Kendimiz Bulalım
```html

20 Ağustos 2026 tarihinde geliştirici Matt Callaghan (blog laserphile) garip bir hatanın analizini yayınladı: multipoint özelliğine sahip Bluetooth kulaklıkları, bilgisayardan telefona geçiş yapmayı bırakıyordu. Her seferinde AliExpress sekmesi açıldığında. Tahmin yürütmek yerine, tarayıcı API'lerini inceledi ve sayfanın içinde neler olduğunu gözlemledi. İki obfuscate edilmiş scriptin Alibaba'nın anti-fraud yığınından ses üzerinden cihazın parmak izini alarak, kimsenin duymadığı bir sesi yükselttiği ortaya çıktı.

Bu, profil ayarları yapmadan veya bir parser başlatmadan önce neredeyse hiç kimsenin yapmadığı şeyin mükemmel bir örneği: platformun tespit yığınını okumak yerine, tahmin etmek. Aşağıda, belirli bir sitenin tespit haritasını kendi başınıza, bir saat içinde, obfuscation'ı tersine çevirmeden ve ücretli hizmetler olmadan nasıl çıkaracağınızla ilgili pratik bir yöntem bulunmaktadır.

Tespit haritası çıkarmanın amacı

Tipik bir döngü şöyle görünür: hesaplar yasaklanır — anti-detect tarayıcı ayarlarını rastgele döndürürüz — proxy değiştiririz — tekrar yasaklanır. "Yasaklanma" ile "ayarlar" arasında veri yoktur: platformun tam olarak neyi okuduğu ve hangi katmanda yakalandığı belirsizdir.

Tespit haritası bu boşluğu kapatır. Bu, hangi koruma sağlayıcısının bulunduğu, hangi scriptlerin bunu gerçekleştirdiği, hangi API'lerin etkilendiği ve sonuçların nereye gittiği hakkında bir listedir. Sonrasında gerçekten dar alanın nerede olduğu görünür — IP'de, ağ parmak izinde veya tarayıcının donanım katmanında. Bu, üç kitle için de eşit derecede faydalıdır:

  • Çoklu hesap yönetimi — profillerin hangi sinyalle birleştirildiğini anlamak. IP'leri farklıdır, ancak ses yığını, WebGL render'ı ve hardwareConcurrency genellikle tüm çiftlik için aynıdır.
  • Scraping — tarayıcıyı açmanın gerekip gerekmediğini anlamak veya görevin doğru TLS parmak izi ile bir HTTP istemcisi tarafından çözülüp çözülmeyeceğini belirlemek.
  • Gizlilik — mağaza veya hizmetin, çerezler dışında cihazınız hakkında ne topladığını görmek.

Adım 1. Ağı kullanarak koruma sağlayıcısını belirlemek

Yapmanız gereken ilk şey, Network sekmesinde DevTools'u açmak, sayfayı yüklemek ve ilk belgenin başlıklarını ve çerezlerini incelemektir. Tanımlayıcı işaretler bilinir ve stabildir:

  • CF-RAY yanıt başlıklarında ve çerez cf_clearance — Cloudflare.
  • Çerez _abck ve bmak fonksiyonuna sahip script — Akamai Bot Manager.
  • _px öneki ile başlayan değişkenler ve çerezler — PerimeterX (HUMAN).
  • Çerez datadome ve sağlayıcının alanından ayrı bir JS — DataDome.
  • Boş 429 yanıt gövdesi — Kasada'nın karakteristik imzası.

Ellerle yapmak istemiyorsanız, microlinkhq/is-antibot gibi açık dedektörler (30+ sağlayıcı) ve 26+ sağlayıcı için tarayıcı uzantıları mevcuttur. Bunlar hızlı bir ilk yanıt verir, ancak ana soruya yanıt vermez — tarayıcınızdaki tam olarak neyin ölçüldüğünü bilmek gerekir. Bunun için daha ileri gitmek gerekir.

Adım 2. Şüpheli scriptlerin listesini çıkarmak

Network'ü JS türüne göre filtreleyin ve ana alan adından veya hizmet dizinlerinden yüklenmeyen her şeyi yazın. AliExpress durumunda, açıkça hizmet yollarına sahip iki dosya vardı:

  • assets.aliexpress-media.com/g/AWSC/uab/1.140.0/collina.js
  • assets.aliexpress-media.com/g/AWSC/fireyejs/1.231.67/fireyejs.js

Anti-fraud scriptinin belirtileri: obfuscate edilmiş kod, yolda versiyon, statik için ayrı bir alt alan, sayfanın görsel kısmıyla herhangi bir bağlantının olmaması. Obfuscation'ı açıp okumaya gerek yok — bir sonraki adımda script kendisi hakkında bilgi verecektir.

Adım 3. Fingerprint API'yi enstrümante etmek

Bu, yöntemin özüdür ve Callaghan'ın yaptığı tam olarak budur: AudioContext ve AudioNode.prototype.connect() yapıcılarını sarmaladı, ardından sayfada hiçbir medya öğesi ve play() çağrısı olmadan iki canlı ses bağlamı gördü.

Mantık basit: ilgilendiğiniz yöntemi kendi sarma işleminizle değiştiriyorsunuz, bu da çağrıyı yığınla kaydediyor ve kontrolü orijinaline iletiyor. Çağrı yığını, hangi scriptin API'yi çağırdığını gösterir. Bu tür bir snippet'i en iyi DevTools Sources → Snippets üzerinden veya kodu document-start'ta çalıştıran bir uzantı aracılığıyla eklemek en uygunudur — anti-fraud scriptinin yüklenmesinden önce yetişmek önemlidir.

Çoğu sinyali kapatan minimum tuzak seti:

  1. HTMLCanvasElement.prototype.toDataURL ve getImageData — kanvas parmak izi.
  2. WebGLRenderingContext.prototype.getParameter — ekran kartı ve sürücü modeli, shader'ların doğruluğu.
  3. AudioContext / OfflineAudioContext ve AudioNode.prototype.connect — ses parmak izi.
  4. Getter'lar navigator.hardwareConcurrency, navigator.deviceMemory, navigator.plugins, navigator.webdriver.
  5. RTCPeerConnection — WebRTC ve yerel adresler.
  6. screen.width/height, devicePixelRatio, Intl.DateTimeFormat().resolvedOptions() — ekran ve saat dilimi.
  7. navigator.mediaDevices.enumerateDevices — ses ve video cihazlarının listesi.

Geçişin sonunda, bu API'lerden hangilerinin çağrıldığını, kaç kez ve kim tarafından çağrıldığını gösteren bir listeniz olacak. İncelenen durumda, Alibaba'nın scriptleri kanvası ve toDataURL'yi, WebGL render'ını ve shader'ların doğruluğunu, osilatör ve analizör üzerinden sesi, ekran boyutlarını ve devicePixelRatio, hardwareConcurrency ve deviceMemory'yi, eklentileri, codec desteğini, WebRTC'yi, performans zamanlamalarını, fare hareketi ve dokunuş desenlerini, cihazın hareket sensörlerini ve otomasyon göstergelerini etkilediği görüldü.

Ses grafiği ne yapıyordu

Ölçümün nasıl göründüğünü anlamak, onu başka yerlerde tanımak için faydalıdır. Grafik şöyleydi: dişli osilatör → AnalyserNode → analiz sonucunu okuyan ScriptProcessorNode → sıfır kazançlı GainNodedestination. Ses yok, ses seviyesi önemli değil — ses yok. Ancak destination'a bağlantı, yazarın ifadesine göre, tarayıcının grafiği aktif bir şekilde işlemesini sağlıyor, oysa nihai ses seviyesi sıfır. İşte bu canlı ses yolu, Bluetooth yolunu açık tutuyordu ve kulaklıkların multipoint geçişini bozuyordu.

Bu sinyalin işlenmesindeki farklılıklar, işlemciye, ses donanımına, işletim sistemine, tarayıcıya ve sürücülere bağlıdır — buradan da IP değişikliği ve çerez temizliği sırasında bile devam eden kararlı bir tanımlayıcı ortaya çıkar. Tam olarak bu katmanın ayrıntılı analizi ve profillerin buna göre ayarlanması, Ses Bağlamı Parmak İzinden Koruma konulu makalede bulunmaktadır.

Adım 4. Sonucun gönderimini yakalamak

Toplama işlemi, gönderim olmadan anlamsızdır, bu nedenle bir sonraki adım, toplanan parmak izinin nereye gittiğini bulmaktır. Network'ü XHR/Fetch'e göre filtreleyin ve ping türündeki istekleri ayrı olarak inceleyin — bunlar, sayfadan ayrılmayı sürdüren telemetri scriptleri tarafından üretilir.

Genellikle fetch, XMLHttpRequest.prototype.send ve navigator.sendBeacon'ı ek olarak sarmak faydalıdır — böylece istek gövdesini gitmeden önce görebilirsiniz. İçeriğin serileştirileceği ve şifreleneceği konusunda hazırlıklı olun: AliExpress durumunda, veriler Alibaba'nın telemetrisine gönderilmeden önce şifrelendi. Ancak yine de iki gerçek elde edersiniz: alıcının adresi ve gönderim anı, eylemlerinizle ilgili olarak.

Eğer site sadece tarayıcıda değil, bir mobil uygulama veya ayrı bir istemci aracılığıyla çalışıyorsa, aynı soru trafik düzeyinde çözülür, DOM düzeyinde değil — yakalama ve analiz yöntemi mitmproxy ile trafik denetimi incelemesinde açıklanmıştır.

Adım 5. Haritayı kendi profilinizle karşılaştırmak

Artık platformun gerçekten okuduğu sinyallerin bir listesine sahipsiniz. Bu sinyallerin sizin çalışma profiliniz tarafından ne şekilde verildiğini kontrol etmeniz gerekiyor. Sıralama şöyle: normal bir tarayıcıda değerleri alıyorsunuz, ardından her anti-detect profilinde kontrol ediyor ve karşılaştırıyorsunuz.

İki şey aynı anda önemlidir: değerler profiller arasında farklı olmalı ve bir profil içinde oturumlar arasında kararlı olmalıdır. Her başlatmada parmak izi değişen bir profil, anti-fraud için on profilde aynı parmak izine sahip olmaktan daha şüpheli görünmektedir.

Ayrıca, değiştirmenin gerçekten gerekli olduğu katmanda mevcut olup olmadığını kontrol edin. Burada tarayıcılar arasındaki fark dikkat çekicidir: Firefox 118. sürümünden itibaren WebAudio'da sabit bir çıktı veriyor ve analiz verilerine göre %99,24 kullanıcı üç değere indirgeniyor; Brave rastgele verileri karıştırıyor ve 22 Ağustos 2026'dan itibaren bu AliExpress scriptlerini özel olarak engelliyor, ses parmak izinden koruma özelliğinin varsayılan olarak altı yıldan fazla süredir mevcut olduğunu hatırlatıyor; Safari ses tamponlarına hatalar karıştırıyor; Chrome ise agresif korumalara sahip değildir.

Tuzağa düşürme noktaları

  • Script zaten çalıştı. Dosyanın engellenmesi, zaten oluşturulmuş bir ses bağlamını öldürmez — yazar açıkça, açık sekmelerin kapatılması gerektiğini belirtir. Bu, sizin enstrümantasyonunuz için de geçerlidir: eğer sarma, scriptten sonra gerçekleştiyse, hiçbir şey göremezsiniz.
  • Engelleme işlevselliği bozuyor. Anti-fraud yığını genellikle meşru şeyler için de yanıt verir — kimlik doğrulama, ödeme, gerçek istismar için anti-bot koruması. Tespit haritasını çıkarmak ve scriptleri kesmek farklı görevlerdir; ikincisi siteyi bozar.
  • Tespit versiyonu birden fazla. Yığın, coğrafyaya, cihaz türüne ve A/B grubuna göre farklılık gösterebilir. Haritayı, gerçekten çalıştığınız IP ve cihazdan çıkarmak mantıklıdır, aksi takdirde başkasının yapılandırmasını tanımlamış olursunuz.
  • Enstrümantasyon kendisi tespit edilir. Yeniden tanımlanmış yerel yöntemler doğru toString değerini kaybeder ve eklenen hata ayıklayıcı izler bırakır. Keşif için bu kritik değildir, ancak keşif profilini savaş profilinizle karıştırmayın — otomasyonun maskeleme teknikleri headless tarayıcı maskeleme kılavuzunda açıklanmıştır.

Sonuç için hangi proxy gerekli

Böyle bir haritanın ana pratik çıkarımı neredeyse her zaman aynıdır: IP sadece ilk katmandır ve diğer tüm katmanlardan önce kontrol edilir. Eğer anti-fraud, istek aşamasında barındırma adresini görürse, ses grafiğine ve kanvasa ulaşamayacaksınız — bir meydan okuma alırsınız veya boş bir sonuçla karşılaşırsınız ve yanlış bir şeyi düzeltmeye çalışırsınız.

Bu nedenle seçim mantığı şöyle. Ciddi bir yığın (Akamai, DataDome, PerimeterX, Alibaba seviyesinde kendi geliştirmeleri) olan platformlar için temel, rezidans proxy'leri — ilk filtrede kesilmeyen gerçek sağlayıcıların adresleridir. Mobil uygulamalar ve ana kitlenin akıllı telefonlarla oturduğu platformlar için, doğal profilin daha yakın olduğu mobil proxy'lerdir: operatör CGNAT, adresi birçok canlı kullanıcı arasında paylaşılan bir hale getirir.

Aynı şey tersine de geçerlidir: eğer harita, platformun başlıklar ve çerezlerle sınırlı olduğunu gösteriyorsa ve ağır bir JS parmak izi yoksa — tarayıcı çiftliği gereksizdir, görev sıradan bir HTTP istemcisi ve veri merkezi adresleriyle çözülür.

Sonuç

Kulaklıklarla ilgili durum, ses parmak izinin varlığıyla değil — bunun yıllardır bilindiği ile değerlidir. Yöntem değerlidir: kişi tahminlere inanmadı, iki tarayıcı API yöntemini sardı ve bir akşamda kendisinden nelerin alındığına dair tam bir liste ve bunun nereye gittiğine dair adres elde etti. Aynı teknik, çalıştığınız her platformda bir saat alır ve ayarları rastgele denemek için aylarca süren bir süreyi değiştirir. Banları düzeltmeden önce tespit haritasını çıkarın — aksi takdirde, sorunun tüm profillerde aynı WebGL render'ında olduğu yerde proxy için bütçenizi harcama riski vardır.

```