JA3 এবং JA4 TLS fingerprinting ব্যাখ্যা (এবং কীভাবে আপনারটি পরীক্ষা করবেন)

4 জুন 2026 প্রকাশিত · ≈9 মিনিট পড়া

আপনার scraper নিখুঁত Chrome header পাঠায়, একটি পরিষ্কার residential IP-এর পিছনে চলে, এবং তবুও একদম প্রথম request-এই একটি 403 পায়। কোনো captcha নেই, কোনো চ্যালেঞ্জ পেজ নেই, সমাধান করার কিছু নেই। সাইটটি আপনাকে HTTP-এর একটি byte বিনিময় হওয়ার আগেই শনাক্ত করেছে — TLS handshake-এর সময়।

এই নিবন্ধটি ব্যাখ্যা করে JA3 এবং JA4 fingerprinting আসলে কীভাবে কাজ করে, কেন এগুলো ২০২৬ সালের প্রতিটি প্রধান anti-bot সিস্টেমের নীরব কর্মঘোড়া, এবং কীভাবে দশ সেকেন্ডে আপনার নিজের fingerprint দেখবেন। আপনি যদি প্রথমে bypass টুলিং চান, আমরা তা curl_cffi & tls-client দিয়ে TLS Fingerprinting Bypass করুন-এ কভার করেছি — এটি হলো শনাক্তকরণ পক্ষ কীভাবে কাজ করে তার সঙ্গী নিবন্ধ।

দশ-সেকেন্ডের পরীক্ষা

তত্ত্বের আগে, আপনার নিজের handshake দেখুন। আমাদের বিনামূল্যের JA3/JA4 checker খুলুন — এটি আপনার ক্লায়েন্ট সবেমাত্র যে TLS fingerprint উপস্থাপন করেছে তা ফেরত প্রতিধ্বনিত করে এবং বলে এটি কীসের সাথে মেলে:

# From a terminal - see what curl's TLS looks like:
curl https://www.jibaoproxy.com/tools/fingerprint.html

# Then open the same URL in Chrome and compare.

দুটোই চালান এবং আপনি এই পুরো নিবন্ধের মূল কথাটি দেখবেন: curl এবং Chrome সম্পূর্ণ ভিন্ন fingerprint তৈরি করে, আপনি যে User-Agent header-ই সেট করুন না কেন।

একটি TLS Handshake-এ কী ঘটে

প্রতিটি HTTPS সংযোগ একটি ClientHello বার্তা দিয়ে শুরু হয়, যা যেকোনো encryption শুরু হওয়ার আগে cleartext-এ পাঠানো হয়। এতে, আপনার ক্লায়েন্ট ঘোষণা করে:

এখানে শনাক্তকরণের অন্তর্দৃষ্টি: এই তালিকাগুলো এবং তাদের সঠিক ক্রম আপনার ক্লায়েন্ট যে TLS লাইব্রেরির বিপরীতে compile করা হয়েছিল তাতে বেক করা থাকে। Chrome-এর BoringSSL একটি নির্দিষ্ট সমন্বয় ঘোষণা করে। Python-এর OpenSSL একটি ভিন্ন একটি ঘোষণা করে। Go-এর crypto/tls একটি তৃতীয়। আপনি header দিয়ে এটি পরিবর্তন করতে পারবেন না — এটি HTTP স্তরের নিচে, লাইব্রেরি নিজেই দ্বারা negotiate করা হয়।

JA3: Handshake-কে Hash করা

JA3 (Salesforce, 2017) পাঁচটি ClientHello ক্ষেত্র — TLS সংস্করণ, cipher, extension, curve, point format — একটি স্ট্রিং-এ যুক্ত করে এবং এটিকে MD5-hash করে:

771,4865-4866-4867-49195-49199,0-23-65281-10-11-35-16,29-23-24,0
              |
              v  MD5
        cd08e31494f9531f560d64c695473da9

প্রতি TLS স্ট্যাকে একটি hash। Windows-এ Chrome 137-এর প্রতিটি কপি (প্রায়) একই JA3 তৈরি করে; OpenSSL 3.x-এ প্রতিটি python-requests একই ভিন্ন JA3 তৈরি করে। রক্ষাকর্তারা লুকআপ টেবিল রক্ষণাবেক্ষণ করে: hash X = Chrome, hash Y = requests, hash Z = Go bot। আপনার User-Agent যদি Chrome বলে কিন্তু আপনার JA3 যদি OpenSSL বলে, আপনি ব্লক হন — তাৎক্ষণিকভাবে, নীরবে, সস্তায়।

JA4: ২০২৬-এর মানদণ্ড

JA3-এর সমস্যা ছিল: Chrome ২০২৩ সালে extension order randomize করা শুরু করে (সরল JA3 ভেঙে দেয়), এবং MD5 unstructured — একটি hash আপনাকে দুটি ক্লায়েন্ট কেন আলাদা সে সম্পর্কে কিছুই বলে না। JA4 (FoxIO, 2023) উভয়ই ঠিক করেছে এবং আজ গুরুতর ভেন্ডররা এটিই চালায়:

JA4 = t13d1516h2_8daaf6152771_b0da82dd1658
       |            |             |
       a: protocol  b: ciphers    c: extensions
       (TLS 1.3, 16 ciphers,      (sorted, truncated
        h2 ALPN, domain SNI)       SHA256)

কে এটি আপনার বিরুদ্ধে ব্যবহার করে

প্রতিটি সিস্টেম যা গুরুত্বপূর্ণ: Cloudflare তার bot-management নিয়মে JA3/JA4 সরাসরি প্রকাশ করে; DataDome এবং PerimeterX এটিকে তাদের নেটওয়ার্ক-স্তরের scoring-এ খাওয়ায় (আমাদের DataDome/PerimeterX গাইড দেখুন); Akamai সবার চেয়ে দীর্ঘতম সময় ধরে TLS fingerprinting চালিয়ে আসছে। এটি জনপ্রিয় কারণ এটি গণনা করা বিনামূল্যে, HTTP স্তর থেকে নকল করা অসম্ভব, এবং ৯০% সরল automation ধরে — এ পর্যন্ত লেখা প্রতিটি requests/httpx/axios/Go-http স্ক্রিপ্ট — কোনো JavaScript চালানোর প্রয়োজন হওয়ার আগেই।

কেন শুধু একটি Proxy সাহায্য করে না

এটি মানুষকে অবাক করে: একটি proxy আপনার IP পরিবর্তন করে, কিন্তু আপনার TLS handshake অপরিবর্তিতভাবে পার হয়ে যায়। CONNECT tunnel (বা SOCKS5 stream) আপনার ClientHello byte-গুলোকে হুবহু টার্গেটে বহন করে। Residential IP + requests-library JA3 = "একটি residential IP-তে চলমান একটি bot।" একটি datacenter IP-এর চেয়ে ভালো, তবুও একটি bot।

IP এবং TLS fingerprint হলো স্বাধীন সিগন্যাল এবং আপনার উভয়ই পরিষ্কার দরকার:

IPTLS fingerprint২০২৬-এ রায়
DatacenterLibrary (requests/Go)যেখানেই পরোয়া করে সেখানেই ব্লক
ResidentialLibraryJA4-পরীক্ষাকারী সাইটে ব্লক
DatacenterBrowser-impersonatedIP reputation-এ ব্লক
ResidentialBrowser-impersonatedনেটওয়ার্ক-স্তরের পরীক্ষা উত্তীর্ণ

আপনার Fingerprint-কে আপনার গল্পের সাথে মেলানো

টুলিং অনুসারে দুটি পথ:

HTTP ক্লায়েন্ট — একটি impersonation লাইব্রেরি ব্যবহার করুন যা একটি ব্রাউজারের সঠিক ClientHello পুনঃবাস্তবায়ন করে: curl_cffi (Python), tls-client (Python/Go), got-scraping (Node)। curl_cffi গাইডে সম্পূর্ণ কার্যকর কোড:

from curl_cffi import requests

r = requests.get(
    "https://target.example",
    impersonate="chrome",
    proxies={"https": "socks5h://USERNAME:[email protected]:913"},
)

আসল ব্রাউজার (Playwright, browser agent, anti-detect ব্রাউজার) — TLS স্তরে কিছুই করার নেই; fingerprint সত্যিকারের Chrome-এর। আপনার ঝুঁকি অন্য কোথাও থাকে: IP reputation এবং CDP detection।

তারপর যাচাই করুন, ধরে নেবেন না। সংস্করণ সরে যায় — Chrome 120-এর handshake-এ পিন করা একটি impersonation লাইব্রেরি ২০২৬ সালে "সন্দেহজনকভাবে পুরোনো ব্রাউজার" হিসেবে পড়া হয়। প্রতিটি নির্ভরতা আপডেটের পরে পুনরায় পরীক্ষা করুন:

বিনামূল্যের টুল · সাইনআপ নেই

এখনই আপনার JA3 / JA4 দেখুন

আমাদের checker আপনার ক্লায়েন্ট যে TLS fingerprint উপস্থাপন করে তা প্রতিধ্বনিত করে, এটি কোন স্ট্যাকের সাথে মেলে তা শনাক্ত করে (Chrome / Firefox / OpenSSL / Go), এবং UA-বনাম-TLS অমিল flag করে — anti-bot সিস্টেম যে সঠিক পরীক্ষা চালায়।

আমার TLS fingerprint পরীক্ষা করুন →

Fingerprint পরিষ্কার কিন্তু তবুও ব্লক? বাকি অর্ধেক হলো IP reputation — 500MB ফ্রি ট্রাফিক দিয়ে residential IP পরীক্ষা করুন →

সারসংক্ষেপ

পরিষ্কার Fingerprint, পরিষ্কার IP

আপনার impersonate করা TLS-কে residential IP-এর সাথে জুড়ুন — 500MB ফ্রি ট্রাফিক, কোনো কার্ড প্রয়োজন নেই।

বিনামূল্যে ট্রায়াল শুরু করুন

সকল IP পণ্যের জন্য · যেকোনো সময় উপলব্ধ বিশাল নোড পুল

এখনই নিবন্ধন করুন এবং আপনার রিচার্জে ১০০% পর্যন্ত ফেরত পান

নতুন ব্যবহারকারীরা নিবন্ধনের সময় 500MB পান, সাথে প্রথম রিচার্জে বোনাস। সীমিত সময়ের অফার।