TLS Parmak İzi: JA3, JA4 ve Tespitinden Nasıl Kaçınılır

TLS parmak izinizin, JA3/JA4'ün inceliklerini nasıl ortaya çıktığını öğrenin, teklif analizi ve HTTP/2 sinyalleri – artı tarayıcı derecelerini kullanan saldırılar stratejileri.

TLS Parmak İzi: JA3, JA4 ve Tespitinden Nasıl Kaçınılır

TLS Parmakları Nedir?

TLS parmak izi, müşterileri şifreli bağlantıları nasıl başlattıklarına dayanan pasif bir algılama tekniğidir. Her zaman trucu, tarayıcınız veya HTTP kütüphanesi HTTPS üzerinden bir web sitesine bağlanır, bu, paketi içeren bir TLS MüşteriHello mesajı, uzantıları, eliptik eğrileri ve diğer parametreleri belirli bir sırayla gönderir. Anti-bot sistemleri bu elhake'yi, bağlantı istemcisinin kullanıcı-agent'in ne olduğunu nasıl karşılaştırdığını belirlemek için analiz eder.

Aksine farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı şekilde farklı farklı farklı farklı farklı şekilde farklı farklı farklı farklı şekilde farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı şekilde farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı şekilde farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı şekilde farklı farklı farklı farklı farklı farklı farklı şekilde farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı şekilde farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı farklı tarayıcı parmak iziJavaScript infazı gerektiren TLS parmak izi ağ katmanında çalışır - herhangi bir sayfa içeriği teslim edilmeden önce. Bu, onu en erken ve en zor algılama sinyallerinden biri haline getirir, çünkü bizim içinde kaplı olarak Anti-bot sistemlerinin nasıl tespit edildiğini kapsamlı bir kılavuz.

TLS Handshakes Nasıl Çalışıyor

Herhangi bir HTTP verileri HTTPS üzerinden değiştirilmeden önce, müşteri ve sunucu bir TLS elhake gerçekleştirir. Eleştirel ilk mesaj – MüşteriHello – parmak izi için gereken her anti-bot sistemi içerir:

  1. TLS versiyonu: Müşterinin desteklediği maksimum TLS versiyonu (örneğin, TLS 1.2, TLS 1.3).
  2. Cipher süitleri: Şifreleme algoritmalarının sipariş edilen bir listesi, müşterinin kullanmaya isteklidir.
  3. Extensions: Server Name Indication (SNI), ALPN, imza algoritmaları ve anahtar pay grupları gibi ek yetenekler.
  4. Elliptik eğriler: Anahtar değişimi için eğri türlerini destekledi (örneğin, x25519, Spyp256r1).
  5. Kombinasyon yöntemleri: Tipik olarak modern uygulamalarda null, ancak onların varlığı veya yokluğu hala bir sinyaldir.

Her HTTP kütüphanesi, tarayıcı ve programlama dili runtime farklı bir MüşteriHello modeli üretir. Chrome, Firefox, Safari, Python'un requestsGo's net/httpVe Node.js her biri tanınabilir imzalara sahiptir.

JA3 Parmak

JA3 en yaygın kullanılan TLS parmak izi yöntemidir. Antigua mühendisleri tarafından geliştirildi, MüşteriHello mesajında beş alandan bir MD5 hash yaratır:

JA3 Parmak
FieldAçıklamaÖrnek Değerler
TLS VersionTeklif sürümü teklif edildi771 (TLS 1.2), 772 (TLS 1.3)
Cipher SuitesSet kodlarının sıralama listesi4865-4866-4867-49195-491...
Extensionsuzatma türü kodları listesi0-23-65281-10-11-35-16-5...
Elliptic CurvesDesteklenen grup grupları29-23-24
EC Point FormatsDesteklenen nokta format türleri0 0 0 0

Bu beş değer komünlerle doludur ve 32 kişilik bir JA3 parmak izi üretmek için acele edilmiştir. Örneğin, Python'un requests Kütüphane, Chrome'dan farklı bir JA3 hash üretir, hatta her ikisi de aynı kullanıcı tarafından yönlendirildiğinde.

JA3 Uygulamada Tespit

# Example JA3 hash computation (conceptual)
# ClientHello fields → concatenated string → MD5 hash
# Python requests (urllib3/OpenSSL) — distinct JA3
# ja3: 771,4866-4867-4865-49196-49200-159-52393-52392-52394...,0-23-65281-10-11...
# ja3_hash: "773906b0efdefa24a7f2b8eb6985bf37"
# Chrome 120+ — different cipher order, different extensions
# ja3: 771,4865-4866-4867-49195-49199-49196-49200-52393-52392...,0-23-65281-10-11...
# ja3_hash: "cd08e31494f9531f560d64c695473da9"
# The hash reveals the client library, regardless of User-Agent

JA4 – Sonraki Nesil

JA4, aynı zamanda, daha okunabilir ve sağlam bir parmak izi yaratarak JA3'te geliştirir. Bir opaque MD5 hash yerine, JA4 üç bileşenle yapılandırılmış bir tanımlayıcı yaratır:

  • JA4 a: Protokol türü + TLS versiyonu + SNI varlığı + cipher sayı + uzatma sayısı + ALPN ilk değer (e.g., "t13d1517h2 8daaf6152771 b0da82dd58).
  • JA4 b: Sorted truncated hash of cipher suites.
  • JA4 c: Sorted truncated hash of extensions (SNI ve ALPN ile variability azaltmak için kaldırıldı).

JA4 spoof için daha zordur, çünkü ek sinyalleri içerir ve basit hash eşleştirmeye direnen bir format kullanır.

Common TLS Parmakları Müşteri tarafından

Common TLS Parmakları Müşteri tarafından
MüşteriTLS LibraryTanımlanabilir TraitsTespit Riski
Chrome (latest)BoringSSLÖzel sipariş, GREASE değerleri, ECH desteğiLow (eğer doğru bir şekilde eşleştirilirse)
FirefoxNSSFarklı cipher tercih, delegeli kimlik uzatmaLow (eğer doğru bir şekilde eşleştirilirse)
Python istekleriOpenSSL (urllib3)Eksik GREASE, daha az uzantı, OpenSSL siparişÇok yüksek
Go net /httpGit kripto/tlsBenzersiz cipher sipariş, birçok uzantı eksikÇok yüksek
Node.js (axios/got)OpenSSL (via Node)Node-specific extension order, eksik GREASEYüksek Yüksek Yüksek Yüksek Yüksek
curlVaries (OpenSSL/NSS / etc.)Yapıya bağlı olarak, ancak tipik olarak tarayıcı olmayan parmak iziYüksek Yüksek Yüksek Yüksek Yüksek

Neden TLS Parmaklama Evade Zor

TLS parmak izi diğer algılama yöntemlerine kıyasla eşsiz zorluklar sunar:

  • Ağ katmanlı algılama: Herhangi bir HTTP içeriği değiştirilmeden önce çalışır, bu nedenle JavaScript enjeksiyonu veya başlık manipülasyonu tarafından yenilemez.
  • Kütüphane düzeyinde imza: Parmak izi, uygulama kodunuz tarafından değil, runtime'ya derlenen TLS kütüphanesi tarafından belirlenir. Kullanıcı-agent dizesini değiştirmek TLS parmak izi üzerinde sıfır etkiye sahiptir.
  • Proxy şeffaflığı: Standart HTTP/HTTPS Proxy ( dahil) Konut sahipleri) müşteriden sunucuya kadar TLS elhakemesini bekleyin, bu yüzden kökeni müşterinizin gerçek TLS parmak izlerini görür.
  • Version coupling: Bir TLS kütüphanesinin her küçük versiyonu biraz farklı bir parmak izi üretebilir, sürüm yanlış uyumlu hale getirebilir.

TLS Parmaklama Stratejileri

1. Browser-Grade TLS Kütüphanelerini Kullanın

En etkili yaklaşım, tarayıcı-identical MüşteriHello mesajlarını üreten TLS kütüphanelerini kullanmak:

# Python: Use curl_cffi to mimic browser TLS fingerprints
# pip install curl_cffi
from curl_cffi import requests
# Impersonate Chrome's TLS fingerprint
response = requests.get(
    "https://example.com",
    impersonate="chrome",
    proxies={
        "http": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080",
        "https": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
    }
)
print(response.status_code)

2. Go utls in Go

// Go: Use uTLS to mimic browser TLS fingerprints
// go get github.com/refraction-networking/utls
package main
import (
    "fmt"
    "io"
    "net/http"
    "net/url"
    "crypto/tls"
    tls2 "github.com/refraction-networking/utls"
)
func main() {
    proxyURL, _ := url.Parse("http://USERNAME:PASSWORD@gate.proxyhat.com:8080")
    transport := &http.Transport{
        Proxy: http.ProxyURL(proxyURL),
        TLSClientConfig: &tls.Config{InsecureSkipVerify: false},
    }
    // uTLS allows you to specify a ClientHelloID that mimics
    // specific browsers (Chrome, Firefox, Safari, etc.)
    // This requires custom dial integration — see uTLS docs
    _ = tls2.HelloChrome_Auto // Example: mimic Chrome
    client := &http.Client{Transport: transport}
    resp, err := client.Get("https://example.com")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body[:100]))
}

3. Özel TLS ile Node.js kullanın

// Node.js: Use got-scraping for browser-like TLS
// npm install got-scraping
import { gotScraping } from 'got-scraping';
const response = await gotScraping({
    url: 'https://example.com',
    proxyUrl: 'http://USERNAME:PASSWORD@gate.proxyhat.com:8080',
    headerGeneratorOptions: {
        browsers: ['chrome'],
        operatingSystems: ['windows'],
    }
});
// got-scraping uses custom TLS settings to mimic browser fingerprints
console.log(response.statusCode);

4. Headless Browsers kullanın

Headless tarayıcılar (Puppeteer, Playwright) gerçek tarayıcı TLS parmak izlerini üretiyor çünkü gerçek tarayıcı TLS yığınını kullanıyorlar. Bu en güvenilir mitigation ama aynı zamanda en çok kaynak yoğun. rehberimizi görmek için Yıkmadan kazınmadan Kurulum detayları için.

TLS Parmaklarını Test Etmek

Yıkıcınızı dağıtmadan önce, TLS parmak izlerini algılama hizmetlerine doğrulayın:

# Check your JA3 fingerprint against a test service
# Using Python with curl_cffi
from curl_cffi import requests
response = requests.get(
    "https://tls.peet.ws/api/all",
    impersonate="chrome",
    proxies={
        "http": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080",
        "https": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
    }
)
data = response.json()
print(f"JA3 Hash: {data.get('tls', {}).get('ja3_hash', 'N/A')}")
print(f"JA4: {data.get('tls', {}).get('ja4', 'N/A')}")
print(f"HTTP Version: {data.get('http_version', 'N/A')}")
TLS parmak iziniz HTTP müşteri kütüphanesi tarafından belirlenir, proxy tarafından değil. Datacenter'dan konut referanslarına geçiş IP itibarınızı değiştirir, ancak TLS imzanızı değiştirmez. Her iki katman da ele alınmalıdır.

HTTP/2 Parmak

TLS'nin ötesinde, HTTP/2 protokolü, müşteri kimliğini bağlantı ayarları, üst düzey çerçeve düzeni ve öncelik çerçeveleri ile ortaya koyuyor. Anti-bot sistemleri TLS ve HTTP/2 parmak izlerini daha yüksek doğruluk için birleştirir:

HTTP/2 Parmak
HTTP/2 SignalWhat It Explains
SETTINGS çerçeve değerleriİlk pencere büyüklüğü, max eşzamanlı akışlar - müşteri tarafından farklı
GDOW UPDATE boyutuAkış kontrol artışı değeri - her uygulama için benzersiz
Header çerçeve düzeniPseudo-header siparişi (:method, : authority, :scheme, :path)
PRIORITY çerçeveleriAkış bağımlılığı ve ağırlığı – tarayıcıya özgü desenler

Kütüphaneler gibi kütüphaneler curl_cffi ve got-scraping HTTP/2 parmak izi TLS parmak izi ek olarak ele alın.

Proxy Rotation ile TLS Mession

Etkili bir anti-deteksiyon stratejisi katmanları TLS parmak izi ile eşleşen Yüksek kaliteli proxy rotasyonu:

  1. Kullanıcı-agent'a Maç TLS: Kullanıcınız Chrome'u iddia ederse, TLS parmak izi Chrome'u eşleştirmelidir.
  2. Ev sahibi kullanın: ProxyHat'ın konut temsilcileri Tarayıcı-grad TLS imzalarını tamamlamak için temiz IP sağlar.
  3. Rotate sürekli: Her seans, IP + TLS profili + kullanıcı tarafından seçilmiş bir kombinasyon kullanmalıdır.
  4. Kütüphaneleri karıştırmaktan kaçının: Aynı IP'yi farklı TLS parmak izlerini ile yeniden kullanmayın - bu güçlü bir bot sinyalidir.
  5. Dağıtımdan önce Test: Parmaklarınızın maçlarınızı test uç noktaları kullanarak iddia edilen tarayıcınızı doğrulayın.

Dile özgü proxy entegrasyonu için rehberlerimizi görün Python Python, HayırVe Go Go Go Go.

Etik ve Yasal Uyarılar

TLS parmak izi mimikry sorumlu kullanılmalıdır. Legitimate kullanım durumları şunları içerir:

  • Standart HTTPS bağlantıları aracılığıyla halka açık erişim
  • Güvenlik araştırma ve kendi altyapınızın testleri
  • Otomatik testlerinizi doğru bir şekilde gerçek tarayıcı davranışını taklit etmek
  • TLS parmak izi kullanıcının izlemesini nasıl etkilediğine dair Gizlilik Araştırma

Her zaman hizmet, oran sınırları ve uygulanabilir düzenlemeler web sitesine saygı gösterin. Refer'e ProxyHat'ın belgeleri Sorumlu kullanım yönergeleri için.

Sık Sorulan Sorular

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