بصمة TLS: شرح JA3 وJA4 وكيفية تجنب الاكتشاف

تعلم كيف يكشف بصمة أصابع TLS هويتك الخردة من خلال JA3/JA4 hashes, cipher suite analysis, and HTTP/2 signals - plus mitigation strategies using browser-grade TLS Library.

بصمة TLS: شرح JA3 وJA4 وكيفية تجنب الاكتشاف

ما هو طباعة TLS؟

إن البصمات التي تبثها شركة TLS هي تقنية كشف سلبية تحدد العملاء على أساس كيفية بدء الاتصالات المشفرة. في كلّ مرّة تُرسلُ مُخرّجَكَ، بروزر، أَو مكتبةَ HTTP يَصِلُ إلى a موقع على شبكة الإنترنت فوق HTTPS، يُرسلُ a رسالة مُكلّفة من TLS يَتضمّنُ بذلاتَ شفرةَ، تمديدات، منحنىاتَ لَصْبِ، وبارايات أخرى في ترتيب محدّد. نظم مكافحة المخدرات تحلل هذا المصافحة لتحديد ما إذا كان الزبون الموصل يطابق ما يدعيه المستخدم

على عكس بصمة مصفوفةوالأمر الذي يتطلب إعدام جافاسكريبت، فإن بصمات الأصابع تعمل في طبقة الشبكة - قبل أن يتم تسليم أي محتوى للصفحة. وهذا يجعلها واحدة من أبكر وأصعب إشارات الكشف للتهرب، على النحو المشمول فينا دليل شامل لكيفية اكتشاف النظم المضادة للمركبات.

كَمْ TLS Handshakes العمل

وقبل أن يتم تبادل أي بيانات صادرة عن شركة HTTP عن شركة HTTPS، يقوم العميل والخادم بمصافحة يدوية من طراز TLS. والرسالة الأولى الحاسمة - العميلة هيلو - تتضمن كل ما تحتاجه نظم مكافحة القنابل من بصمات الأصابع:

  1. TLS version: The maximum TLS version the client supports (e.g., TLS 1.2, TLS 1.3).
  2. بدلة شيفر: قائمة مطلوبة من خوارزميات التشفير التي يرغب العميل في استخدامها
  3. التمديدات: (ب) قدرات إضافية مثل إرشادات أسماء الموظفين، والشبكة المحلية للشبكة، وخوارزميات التوقيع، ومجموعات الأسهم الرئيسية.
  4. المنحنيات الشفاهية: أنواع المنحنى المدعمة للتبادلات الرئيسية (مثلا، X25519, secp256r1).
  5. أساليب الضغط: وعادة ما تكون لاغية في التنفيذات الحديثة، ولكن وجودها أو غيابها لا يزال علامة.

وتنتج كل مكتبة من مكتبة " HTTP " و " بروزر " و " برمجة " ، نمطاً متميزاً من نمط " كلاينت هيلو " . كروم، فايفوكس، سفاري، بيتسون requestsهيا net/httpو (نودج) كل واحد لديه توقيعات معروفة

JA3 الطباعة

JA3 هو أكثر الطرق انتشارا لبصمات TLS. تطوّر بواسطة مهندسين في قوة المبيعات، وهو يُنشئ هزة من طراز MD5 من خمسة ميادين في رسالة كلينتي هيلو:

JA3 الطباعة
الميدانالوصفمثال
TLS VersionThe protocol version offered771 (TLS.2)، 772 (TLS 1.3)
Cipher Suitesالقائمة المنظمة بمدونات جناح الشفرة4865-4866-4867-49195-49199...
التمديداتقائمة رموز نوع التمديد0-23-65281-10-11-35-16-5...
العنب الشفاهيةدعم المجموعات المسماة29-23-24
EC Point Formatsأنواع شكل النقاط الداعمةصفر

وهذه القيم الخمسة مجهزة بالبطاريات، ومهتزة لإنتاج بصمة من طراز JA3 تحمل 32 علامة. على سبيل المثال، بيتسون requests وتنتج المكتبة حشيشاً مختلفاً من طراز JA3 على الكروم، حتى عندما يضع كلاهما نفس الخيط المستخدم.

JA3 Detection in Practice

# 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 - The next Generation

JA4, also from Salesforce, improves on JA3 by producing a more readable and robust fingerprint. وبدلاً من فتحة من طراز MD5، يُنشئ الفريق الاستشاري المشترك 4 مُحدِّداً منظماً له ثلاثة عناصر:

  • JA4 a: Protocol type + TLS version + SNI presence + cipher count + extension count + ALPN first value (e.g., "t13d1517h2 8daaf6152771 b0da82dd1658").
  • JA4 b: حشيش ممزق من جناح الشفرات
  • JA4 c: Sorted truncated hash of extensions (with SNI and ALPN removed to reduce variability).

JA4 is hard to spoof because it incorporates additional signals and uses a format that resists simple hash matching.

مخططات مزودة بنظام TLS

مخططات مزودة بنظام TLS
العميلالمكتبةمسارات معترف بهامخاطر الكشف
الكروم (الأخير)BoringSSLنظام شفرة محدد، قيم تقديرية، دعم تكنولوجيا المعلوماتمنخفضة (إذا تطابقت بشكل صحيح)
FirefoxNSSتفضيل الشفرة المختلفة، وثائق التفويضمنخفضة (إذا تطابقت بشكل صحيح)
طلبات بيثونOpenSSL (via urllib3)(مفقود (غريس، عدد أقل من التمديداتعالية جدا
Go net/httpإذهبي للبكاءطلب شفير وحيد، مفقود العديد من التمديداتعالية جدا
Node.js (axios/got)(عنوان رقم)Node-specific extension order, missing GREASEعالية
العنانVaries (OpenSSL/NSS/etc).يعتمد على البناء، ولكن عادة بصمات الأصابع غير المدفأةعالية

لِمَ (تي إل إس) يُصعب على (إيفا)

ويطرح طباعة نظام TLS تحديات فريدة مقارنة بأساليب الكشف الأخرى:

  • الكشف عن الملصقات الشبكية: It operates before any HTTP content is exchanged, so it cannot be defeated by JavaScript injection or header manipulation.
  • التوقيع على مستوى المكتبة: البصمة تحدد من قبل مكتبة TLS تم تجميعها في وقتك العرضي، وليس من خلال رمز تطبيقك. تغيير سلسلة المستعملين ليس له تأثير على البصمة
  • الشفافية: أجهزة اتصال موحدة من طراز HTTP/HTTPS مؤسسات الرعايةإلى الخادم، لذا المصدر يرى بصمات موكلك الحقيقية
  • قسيمة الارتداد: ويمكن لكل نسخة ثانوية من مكتبة من مكتبة TLS أن تنتج بصمة مختلفة اختلافا طفيفا، مما يجعل من الممكن الكشف عن الأخطاء في النسخ.

TLS Fingerprinting Mitigation Strategies

1. Use Browser-Grade TLS Libraries

ويتمثل النهج الأكثر فعالية في استخدام مكتبات TLS التي تنتج رسائل مكبرة الهوية من وكلاء هيلو:

# 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. Use 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. Use Node.js with Custom TLS

// 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. Useheadless Browsers

(Puppeteer, Playwright) تنتج البصمات ذات البصمات الاصطناعية الاصطناعية الاصطناعية لأنها تستخدم كومة القاذورات الحقيقية. This is the most reliable mitigation but also the most resource- intensive. انظر دليلنا الخردة من دون أن يتم منعها من أجل التفاصيل

اختبار مخططك

قبل نشر الخردة الخاصة بك، التحقق من بصماتها TLS ضد خدمات الكشف:

# 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')}")
بصمتك (تي إل إس) تحدده مكتبة موكلك (هاتي تي بي) وليس من قبل وكيلك التحول من مركز البيانات إلى العملاء المقيمين يغير سمعة IP ولكن لا يغير توقيعك TLS. ويجب معالجة كلتا الطبقات.

HTTP/2

وإلى جانب نظام TLS، يكشف بروتوكول HTTP/2 نفسه عن هوية العملاء من خلال تحديد الاتصالات، وأوامر إطارية رئيسية، والأطر ذات الأولوية. وتجمع نظم مكافحة التفريغ بين البصمات التي تحمل الرمز TLS وHTTP/2 من أجل زيادة الدقة:

HTTP/2
HTTP/2 Signalالذي يَرْفعُ
قيم الإطارالحجم الأولي للنوافذ، أقصى مجاري متزامنة - يختلف حسب العملاء
حجم الطائرةقيمة الزيادة في الرقابة المنخفضة - فريدة لكل تنفيذ
ترتيب إطار الرأسPseudo-header ordering (:method, :authority, :scheme, :path)
أطر الأولويةالاعتماد على الأحجام والوزن - الأنماط الخاصة بالطيور

المكتبات مثل curl_cffi و got-scraping العنوان HTTP/2 البصمة بالإضافة إلى بصمات الأصابع

Combining TLS Mitigation with Proxy Rotation

وجود طبقات استراتيجية فعالة لمكافحة الكشف متطابقة مع البصمات التناوب المهني العالي الجودة:

  1. ماتش تي إل إس إلى مستعمل إذا إدعى مستعملك (كروم) بصماتك يجب أن تتطابق مع (كروم)
  2. استخدام العملاء المقيمين: وكيلات النيابة السكنية (ب) توفير شركاء التنفيذ النظيفين الذين يكملون التوقيعات على نظام TLS من طراز بروزر.
  3. تناوب باستمرار: وينبغي أن تستخدم كل دورة مضاهاة مواصفات IP + TLS + تركيبة معتادة للمستعملين.
  4. تجنب الخلط بين المكتبات: لا تُعيدي استخدام نفس الشريحة بصمتات مختلفة - هذه إشارة قوية
  5. اختبار قبل النشر: تحقق من بصمة أصابعك تتطابق مع مصفوفك المزعوم باستخدام نقاط الاختبار النهائية

للتكامل اللغوي، انظر دليلنا Python.. Node.jsو إذهب.

الاعتبارات الأخلاقية والقانونية

ينبغي استخدام ميكروفونات البصمات ذات البصمات على نحو مسؤول. وتشمل حالات الاستخدام المشروع ما يلي:

  • الوصول إلى البيانات المتاحة للجمهور من خلال الاتصالات المعيارية لدائرة نقل البضائع الخطرة
  • بحث أمني واختبار اختراق البنية التحتية الخاصة بك
  • ضمان اختباراتكم الآلية بدقة محاكاة سلوك المروج الحقيقي
  • بحوث الخصوصية التي تدرس كيفية تأثير البصمات على تتبع المستعملين

دائماً ما تحترم شروط خدمة الموقع، والحدود الزمنية، والأنظمة المنطبقة. الإحالة وثائق (بروكسي هات) عن المبادئ التوجيهية المتعلقة بالاستخدام المسؤول.

الأسئلة المتكررة

¿Listo para empezar?

Accede a más de 50M de IPs residenciales en más de 148 países con filtrado impulsado por IA.

Ver preciosProxies residenciales
← Volver al Blog