بصمة TLS
في أول حزمة من اتصال HTTPS (ClientHello) يسرد متصفحك بالفعل مجموعات التشفير والامتدادات والمنحنيات الإهليلجية التي يدعمها. وتجزئة تلك الحقول تعطي JA3 / JA4؛ ويمكن أخذ بصمة إطار SETTINGS الذي يفتح اتصال HTTP/2 بالطريقة نفسها. يحدث كل هذا قبل تشغيل أي JavaScript، وتغيير UA لا يغيّره.
- JA4
- تجزئة JA3
- سلسلة JA3
- بصمة HTTP/2
- إصدار TLS
- المصدر
- رُصد عند
- المتصفح كما حلّله الخادم
- مرات المشاهدة هنا
- أول ظهور
- مشاهدات هذا الـ JA4
- الحصة من عائلة المتصفح نفسها
- المتصفحات التي تشترك في هذا الـ JA4
يسلسل JA3 (Salesforce، 2017) إصدار TLS ومجموعات التشفير والامتدادات والمنحنيات وتنسيقات النقاط بترتيبها الأصلي ويأخذ MD5 — أعد ترتيب أي شيء وتتغير التجزئة. ومنذ Chrome 110 يُخلط ترتيب الامتدادات في كل اتصال، لذا يختلف JA3 لمتصفح Chrome الواحد في كل مرة تقريبًا. أما JA4 (FoxIO، 2023) فيرتّب قبل التجزئة (SHA-256 مبتور) ويضع إصدار TLS وSNI وALPN والأعداد في بادئة مقروءة مثل t13d1516h2، ما يجعله مستقرًا جدًا لكل عائلة متصفحات: كل متصفحات Chromium (Chrome وEdge وBrave…) تشترك في JA4 واحد، ولكل من Firefox وSafari بصمته الخاصة. تقارن المواقع JA4 بـ UA — فـ UA يدّعي Firefox على مصافحة تبدو كـ Chrome هو أداة أتمتة أو متصفح مضاد للكشف بـ UA مبدَّل؛ ويجري هذا الموقع المقارنة نفسها مقابل إحصاءاته الخاصة لـ JA4 ↔ عائلة المتصفح. ولرؤية البصمة أصلًا يجب أن ينهي الخادم TLS بنفسه: على اسم مضيف يمر عبر Cloudflare (السحابة البرتقالية) تحدث المصافحة عند حافة Cloudflare ولا يرى الأصل إلا بصمة Cloudflare نفسها (لا تتيح Cloudflare بصمة JA4 إلا لعملاء Enterprise). ولهذا يعمل fingerproxy على اسم مضيف منفصل بـ DNS فقط (السحابة الرمادية) يستدعيه المتصفح مرة واحدة عبر أصل مختلف؛ وعندما تتعذر الوصول إلى تلك النقطة نلجأ إلى الطرف الثالث check.ja3.zone، الذي يعطي JA3 فقط.