065 Haziran 2026 · 15 dk okuma

Anti-bot

Request Hitbotu TLS/JA3 Parmak İzi Rehberi 2026

Cloudflare, DataDome ve Google'ın Client Hints katmanı JA3/JA4 fingerprint'i sıralamanın önşartı yaptı. Botunun neden Chrome görünmesi yetmiyor.

Request hitbotu operasyonlarının başarısız olduğu vakaların büyük çoğunluğunda kabahat davranış planında değil, ondan çok daha erken bir katmanda: TLS el sıkışmasında. User-Agent string'inin 'Chrome/128.0' yazması artık hiçbir şey ifade etmiyor. 2026'da Cloudflare, DataDome, Akamai ve Google'ın kendi Client Hints katmanı, HTTP isteği daha içeriğine bile bakmadan TLS handshake sırasında oluşan JA3/JA4 hash'ini inceliyor. Python requests, Node axios, curl'ün varsayılan TLS istifi gerçek Chrome'unkiyle asla uyuşmuyor; hash farklı çıkıyor, çağrı otomatik olarak bota etiketleniyor. Bu yazı, TLS parmak izinin nasıl oluştuğunu, hangi katmanların bunu ölçtüğünü ve requesthit protokolünün bu duvarı nasıl geçtiğini teknik detayla anlatıyor.

TLS handshake mekaniği

Her HTTPS bağlantısı, gerçek veri akmadan önce bir TLS el sıkışmasıyla başlar. İstemci sunucuya bir ClientHello paketi gönderir; bu paket TLS versiyonunu, desteklenen cipher suite listesini, extension'ları (SNI, ALPN, key share, supported groups vb.) ve elliptic curve tercihlerini taşır. Sunucu bu bilgiye göre ServerHello ile cevap verir ve şifreli kanal kurulur. İşin kritik noktası şu: bu ClientHello paketinin içeriği ve alanların dizilim sırası, isteği gönderen yazılıma göre neredeyse parmak izi kadar özgündür. Chrome'un BoringSSL kütüphanesi bu alanları belirli bir sırayla dizer; Firefox'un NSS kütüphanesi farklı bir sırayla; Python'un ssl modülü (OpenSSL tabanlı) yine farklı bir sırayla dizer. Anti-bot sistemleri, HTTP header'larına hiç bakmadan, sadece bu ilk paketten bir istemcinin gerçekten iddia ettiği tarayıcı olup olmadığını çıkarabilir.

Request hitbotu operasyonunun ilk adımı bu yüzden davranış katmanı değil, ağ katmanıdır. Eğer TLS handshake'i botu ele veriyorsa, üstüne kurulan hiçbir davranış simülasyonu (scroll, dwell, tıklama) devreye giremez — çünkü bağlantı daha kurulur kurulmaz sunucu tarafında bir CAPTCHA duvarına veya sessiz 403'e çarpar.

JA3/JA4 parmak izi nedir

JA3, Salesforce'un 2017'de yayınladığı açık bir yöntemdir: ClientHello paketindeki beş alanı (TLS versiyonu, cipher suite listesi, extension listesi, elliptic curve listesi, elliptic curve format listesi) belirli bir sırayla birleştirip MD5 ile hash'ler. Sonuç 32 karakterlik bir hex string'dir — örneğin gerçek bir Chrome 128 masaüstü tarayıcısının JA3'ü sabit ve tekrarlanabilirdir. JA4, 2023'te FoxIO tarafından geliştirilen halefidir; JA3'ün MD5 zayıflığını (çakışma riski, sıralamaya aşırı duyarlılık) gidermek için SHA-256 tabanlı, daha yapılandırılmış bir format kullanır ve TLS dışında HTTP/2, QUIC katmanlarını da kapsar. 2026 itibarıyla Cloudflare Bot Management, DataDome ve Akamai Bot Manager varsayılan olarak JA4 tabanlı skorlama yapıyor; JA3 hâlâ ikincil doğrulama katmanı olarak kullanılıyor.

  • JA3: TLS versiyonu + cipher suite + extension + curve + curve format → MD5
  • JA4: TLS versiyonu + SNI/ALPN + cipher sayısı + extension sayısı + ilk/son ALPN → SHA-256 tabanlı yapılandırılmış format
  • JA3S/JA4S: sunucu tarafı karşılık — anti-bot firmaları kendi altyapılarını da bu şekilde etiketler
  • Her ikisi de HTTP katmanına inmeden, sadece ağ paketinden çıkarılır

Cipher suite sırası neden önemli

Cipher suite listesi neyin desteklendiğinden çok, hangi sırayla önerildiğinden anlamlıdır. Chrome, TLS_AES_128_GCM_SHA256'yı belirli bir öncelik sırasıyla listeler; bu sıra tarayıcı motoru güncellemeleriyle değişir ama versiyon bazında sabittir. Node.js'in varsayılan https modülü OpenSSL'in kendi öncelik sıralamasını kullanır — bu sıra Chrome'unkinden farklıdır, hatta bazı cipher'ları hiç içermez ya da fazladan içerir. Anti-bot motoru bu farkı gördüğü an, User-Agent header'ında 'Chrome' yazsa bile isteği 'TLS-UA mismatch' olarak işaretler. Bu, gizli ama en sık rastlanan tespit sinyallerinden biridir — çünkü geliştiriciler genelde User-Agent'ı taklit etmeyi yeterli sanır, TLS istifini hiç düşünmez.

HTTP/2 frame ve header sırası

TLS katmanı geçildikten sonra ikinci tespit yüzeyi HTTP/2'nin kendisidir. HTTP/2, pseudo-header'ları (:method, :authority, :scheme, :path) belirli bir sırayla gönderir ve bu sıra tarayıcıdan tarayıcıya farklıdır — Chrome :method, :authority, :scheme, :path sırasını kullanırken Firefox farklı bir sıra izler. Ayrıca HTTP/2'nin SETTINGS frame'i (header table size, initial window size, max concurrent streams gibi parametreler) ve HPACK sıkıştırma tercihleri de istemciye özgüdür. Akamai'nin ünlü HTTP/2 fingerprinting yöntemi tam olarak bu frame sırasını ve SETTINGS değerlerini okuyarak çalışır. Bir bot, TLS seviyesinde mükemmel Chrome taklidi yapsa bile HTTP/2 frame sırasında hata yaparsa yine yakalanır — bu yüzden iki katman birlikte, tutarlı şekilde klonlanmalıdır.

Tespit yüzeyleri

Katman bazlı tespit yüzeyleri

TLS ClientHello
JA3/JA4 hash, cipher sırası, extension listesi
HTTP/2 katmanı
Pseudo-header sırası, SETTINGS frame, HPACK sıkıştırma
TCP/IP katmanı
TTL değeri, pencere boyutu, MSS — işletim sistemi parmak izi
JavaScript katmanı
Canvas/WebGL fingerprint, font listesi, otomasyon bayrakları (navigator.webdriver)
Davranış katmanı
Mouse hareketi, scroll deseni, dwell time dağılımı

Bu beş katman bağımsız çalışmaz; modern anti-bot motorları hepsini birleştirip tek bir risk skoru üretir. Sadece TLS'i düzeltip JavaScript katmanını ihmal etmek, ya da tam tersi, aynı sonucu verir: tutarsızlık anında skor yükselir ve istek engellenir ya da challenge'a düşer.

Kalibrasyon adımları

  1. Hedef tarayıcı ve versiyon belirlenir (örn. Chrome 128 Windows masaüstü)
  2. O versiyonun gerçek ClientHello paketi bir kontrollü ortamda yakalanır ve referans alınır
  3. Cipher suite sırası, extension listesi, curve tercihi bire bir eşleştirilir
  4. HTTP/2 SETTINGS frame ve pseudo-header sırası aynı referansa göre klonlanır
  5. TCP/IP seviyesinde TTL ve pencere boyutu, hedef işletim sistemine göre normalize edilir
  6. JavaScript katmanında navigator.webdriver gibi otomasyon bayrakları temizlenir
  7. Tüm istif tek bir 'profil paketi' olarak sürüm numarasıyla etiketlenip havuzda saklanır

Yaygın hatalar

  • Sadece User-Agent header'ını değiştirip TLS istifini olduğu gibi bırakmak
  • Eski Chrome versiyonunun JA3'ünü yeni User-Agent string'iyle eşleştirmek (versiyon uyuşmazlığı)
  • Tüm profil havuzunda tek bir JA3 hash'i kullanmak — bu da kendi başına bir anomali deseni oluşturur
  • HTTP/2 katmanını atlayıp HTTP/1.1 ile Chrome taklit etmeye çalışmak
  • TLS session resumption (0-RTT) davranışını hiç simüle etmemek

requesthit protokolünde çözüm

requesthit altyapısında her istekte hedef profilin Chrome, Safari veya Edge versiyonuna göre TLS istifi baştan yazılır (TLS istif rewrite). Cipher suite sırası, extension listesi, curve tercihi — hepsi hedef tarayıcının o spesifik versiyonuyla birebir eşleşecek şekilde ayarlanır. Bununla eşzamanlı olarak HTTP/2 pseudo-header sırası ve HPACK sıkıştırma tercihi de klonlanır, TCP/IP seviyesinde TTL ve pencere boyutu hedef işletim sistemine (Windows, macOS, Android) göre normalize edilir. Profil havuzu, tek bir sabit JA4 hash'i yerine gerçek Chrome versiyon dağılımını (118'den 132'ye kadar) yansıtacak şekilde çeşitlendirilir — böylece havuzun kendisi de bir anomali deseni oluşturmaz.

"Trafik değil, trafiğin biyolojisi taklit edilir — TLS el sıkışması operasyonun DNA'sıdır."

Doğrulama araçları

Her yeni profil paketi devreye alınmadan önce üç bağımsız araçla doğrulanır: tls.peet.ws üzerinden canlı JA3/JA4 hash kontrolü, Wireshark ile ClientHello paketinin manuel incelemesi ve Cloudflare'in kendi bot skorlama panelinden (varsa müşteri erişimiyle) geri bildirim. Bu üç kaynağın tutarlı sonuç vermesi, profilin gerçek tarayıcı trafiğinden ayırt edilemez olduğunun kanıtıdır. Ayrıca periyodik olarak hedef sitenin anti-bot sağlayıcısı güncelleme yaptığında (Cloudflare'in Bot Fight Mode kural setleri sık değişir) profil paketleri yeniden test edilir.

Doğrulama araçları

tls.peet.ws
Canlı JA3/JA4 hash ve ClientHello alan kontrolü
Wireshark
Paket seviyesinde manuel ClientHello incelemesi
curl-impersonate
Referans TLS istifi karşılaştırması için açık kaynak baz alım
Bot skor panelleri
Cloudflare/DataDome geri bildirimiyle canlı doğrulama

Gelecek trendler

2026 sonrası için üç eğilim netleşiyor: birincisi, JA4+ ailesinin genişlemesi (JA4H HTTP katmanı, JA4L gecikme tabanlı analiz, JA4X sertifika zinciri analizi) — anti-bot motorları artık tek bir hash yerine çoklu JA4 varyantını birlikte değerlendiriyor. İkincisi, QUIC/HTTP3'ün yaygınlaşmasıyla TLS 1.3 üzerinden 0-RTT bağlantıların kendi parmak izi ölçütleri oluşuyor. Üçüncüsü, tarayıcı üreticilerinin (özellikle Chrome) TLS istifini her sürümde ince değişikliklerle güncellemesi — bu da profil havuzlarının statik kalamayacağı, sürekli yeniden kalibre edilmesi gerektiği anlamına geliyor. requesthit tarafında bu üç eğilim için ayrı izleme hatları kuruldu; her büyük Chrome sürümünde (6 haftada bir) profil paketleri yeniden yakalanıp güncelleniyor.

Sık sorulanlar

Cloudflare'i geçebiliyor musunuz?

Evet — JA3/JA4 + HTTP/2 fingerprint + Client Hints + davranış katmanı dörtlüsü doğru olduğunda Cloudflare Bot Fight Mode dahil geçilir.

Kaç Chrome versiyonu destekliyorsunuz?

Chrome 118'den 132'ye kadar. Havuzdaki dağılım, Türkiye'deki gerçek Chrome versiyon payına göre normalize edilmiş, tek bir hash'e sıkışmıyor.

JA3 ile JA4 arasındaki fark operasyonu nasıl etkiliyor?

JA4 daha yapılandırılmış ve HTTP/2, QUIC katmanlarını da kapsadığı için tek başına JA3 uyumu artık yeterli değil; her iki katman da paralel klonlanmalı.

Profil havuzu her operasyonda aynı JA4 hash'ini mi kullanıyor?

Hayır. Sabit tek hash kendi başına anomali sinyali oluşturur. Havuz, gerçek tarayıcı versiyon dağılımını yansıtacak şekilde çeşitlendirilir.

TLS istifi doğru olsa bile hâlâ engellenebilir miyim?

Evet, eğer JavaScript katmanı (canvas/font fingerprint) veya davranış katmanı tutarsızsa. Tüm katmanlar birlikte çalışmadan tek katman geçiş garantisi vermez.

📩 Doğrudan iletişim

Telegram'da 7/24. On dakikada dönüş.

Ücretsiz demo yok, "önce yükselt sonra öderim" yok. Net konuşuruz, hızlı başlatırız.

Telegram'dan yaz →

7/24 · yanıt < 10 dk