BreakHub
بازگشت به نمای کلی اثر انگشت
آزمایشگاه اثر انگشت مرورگر

اثر انگشت TLS

در همان اولین بستهٔ یک اتصال HTTPS (ClientHello) مرورگر شما مجموعه‌های رمز، افزونه‌ها و منحنی‌های بیضوی پشتیبانی‌شده را فهرست می‌کند. هش کردن این فیلدها JA3 / JA4 را می‌دهد؛ فریم SETTINGS که یک اتصال HTTP/2 را آغاز می‌کند هم به همین شکل قابل اثر انگشت‌گیری است. همهٔ این‌ها پیش از اجرای هر JavaScript اتفاق می‌افتد و تغییر UA آن را عوض نمی‌کند.

در حال اجرا…
نتیجه
جزئیات
JA4
هش JA3
رشتهٔ JA3
اثر انگشت HTTP/2
نسخهٔ TLS
منبع
مشاهده‌شده در
مرورگر طبق تجزیهٔ سرور
دفعات مشاهده در اینجا
اولین مشاهده
مشاهدات این JA4
سهم از همان خانوادهٔ مرورگر
مرورگرهای دارای این JA4
این یعنی چه

JA3 (Salesforce، ۲۰۱۷) نسخهٔ TLS، مجموعه‌های رمز، افزونه‌ها، منحنی‌ها و قالب‌های نقطه را به ترتیب اصلی به هم می‌چسباند و MD5 می‌گیرد — هر چیزی را جابه‌جا کنید، هش تغییر می‌کند. از Chrome 110 به بعد ترتیب افزونه‌ها در هر اتصال به هم می‌ریزد، بنابراین JA3 یک Chrome تقریباً هر بار فرق دارد. JA4 (FoxIO، ۲۰۲۳) پیش از هش کردن (SHA-256 کوتاه‌شده) مرتب‌سازی می‌کند و نسخهٔ TLS، SNI، ALPN و شمارش‌ها را در یک پیشوند خوانا مثل t13d1516h2 می‌گذارد، که آن را برای هر خانوادهٔ مرورگر بسیار پایدار می‌کند: همهٔ مرورگرهای Chromium (Chrome، Edge، Brave…) یک JA4 مشترک دارند، Firefox و Safari هر کدام JA4 خودشان را. وب‌سایت‌ها JA4 را با UA مقایسه می‌کنند — UAیی که ادعای Firefox دارد اما دست‌دهی‌اش شبیه Chrome است، یک ابزار خودکارسازی یا مرورگر ضدشناسایی با UA عوض‌شده است؛ این سایت همین مقایسه را با آمار JA4 ↔ خانوادهٔ مرورگر خودش انجام می‌دهد. برای دیدن اثر انگشت، سرور باید خودش TLS را خاتمه دهد: روی یک نام میزبان پشت پروکسی Cloudflare (ابر نارنجی) دست‌دهی در لبهٔ Cloudflare انجام می‌شود و سرور اصلی فقط اثر انگشت خود Cloudflare را می‌بیند (Cloudflare فقط به مشتریان Enterprise دسترسی JA4 می‌دهد). به همین دلیل fingerproxy روی یک نام میزبان جداگانهٔ فقط-DNS (ابر خاکستری) اجرا می‌شود که مرورگر یک بار به‌صورت cross-origin آن را فراخوانی می‌کند؛ وقتی آن نقطهٔ پایانی در دسترس نباشد به سرویس شخص ثالث check.ja3.zone برمی‌گردیم که فقط JA3 می‌دهد.