JA3 और JA4 TLS fingerprinting समझाया गया (और अपना कैसे परखें)

4 जून 2026 को प्रकाशित · ≈9 मिनट पढ़ें

आपका scraper परफ़ेक्ट Chrome headers भेजता है, एक साफ़ residential IP के पीछे चलता है, और फिर भी पहली ही request पर 403 पाता है। कोई captcha नहीं, कोई challenge page नहीं, हल करने को कुछ नहीं। साइट ने आपकी पहचान HTTP के एक भी byte के आदान-प्रदान से पहले कर ली — TLS handshake के दौरान।

यह लेख समझाता है कि JA3 और JA4 fingerprinting असल में कैसे काम करती है, ये 2026 में हर बड़े anti-bot सिस्टम के ख़ामोश workhorse क्यों हैं, और दस सेकंड में अपना fingerprint कैसे देखें। अगर आप पहले bypass tooling चाहते हैं, तो हमने उसे curl_cffi & tls-client से TLS Fingerprinting को Bypass करें में कवर किया है — यह उसका साथी लेख है कि detection पक्ष कैसे काम करता है।

दस-सेकंड का टेस्ट

सिद्धांत से पहले, अपना handshake देखें। हमारा मुफ़्त JA3/JA4 checker खोलें — यह आपके client द्वारा अभी प्रस्तुत किए गए 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 पूरी तरह अलग fingerprints पैदा करते हैं, चाहे आप कोई भी User-Agent header सेट करें।

एक TLS Handshake में क्या होता है

हर HTTPS connection एक ClientHello संदेश से शुरू होता है, जो किसी encryption के शुरू होने से पहले cleartext में भेजा जाता है। इसमें आपका client घोषणा करता है:

यहाँ detection की अंतर्दृष्टि है: ये सूचियाँ और उनका सटीक क्रम उस TLS library में पकाया जाता है जिसके विरुद्ध आपका client कंपाइल किया गया था। Chrome का BoringSSL एक विशिष्ट संयोजन की घोषणा करता है। Python का OpenSSL एक अलग की घोषणा करता है। Go का crypto/tls एक तीसरा। आप इसे headers से नहीं बदल सकते — यह HTTP परत के नीचे, library द्वारा ही negotiate किया जाता है।

JA3: Handshake को Hash करना

JA3 (Salesforce, 2017) पाँच ClientHello फ़ील्ड्स — TLS संस्करण, ciphers, extensions, curves, point formats — को एक string में जोड़ता है और उसे MD5-hash करता है:

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

प्रति TLS stack एक hash। Windows पर Chrome 137 की हर copy (लगभग) वही JA3 पैदा करती है; OpenSSL 3.x पर हर python-requests वही अलग JA3 पैदा करती है। डिफ़ेंडर्स lookup tables बनाए रखते हैं: hash X = Chrome, hash Y = requests, hash Z = Go bot। अगर आपका User-Agent Chrome कहता है पर आपका JA3 OpenSSL कहता है, तो आप ब्लॉक हैं — तुरंत, खामोशी से, सस्ते में।

JA4: 2026 का मानक

JA3 में समस्याएँ थीं: Chrome ने 2023 में extension क्रम को randomize करना शुरू किया (naive JA3 को तोड़ते हुए), और MD5 असंरचित है — एक hash आपको कुछ नहीं बताता कि दो clients क्यों अलग हैं। JA4 (FoxIO, 2023) ने दोनों को ठीक किया और गंभीर vendors आज यही चलाते हैं:

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 इसे अपनी network-परत scoring में डालते हैं (देखें हमारी DataDome/PerimeterX गाइड); Akamai ने किसी से भी ज़्यादा समय तक TLS fingerprinting चलाई है। यह लोकप्रिय है क्योंकि यह गणना करने में मुफ़्त है, HTTP परत से नक़ली बनाना असंभव है, और 90% naive automation को पकड़ लेता है — अब तक लिखी गई हर requests/httpx/axios/Go-http script — किसी JavaScript के चलने की ज़रूरत से पहले।

अकेला Proxy क्यों मदद नहीं करता

यह लोगों को चौंकाता है: एक proxy आपकी IP बदलता है, लेकिन आपका TLS handshake बिना बदले गुज़रता है। CONNECT tunnel (या SOCKS5 stream) आपके ClientHello bytes को हूबहू टारगेट तक ले जाता है। Residential IP + requests-library JA3 = "एक residential IP पर चलता एक bot"। datacenter IP से बेहतर, फिर भी एक bot।

IP और TLS fingerprint स्वतंत्र signals हैं और आपको दोनों साफ़ चाहिए:

IPTLS fingerprint2026 में फ़ैसला
DatacenterLibrary (requests/Go)जहाँ कहीं परवाह है, हर जगह ब्लॉक
ResidentialLibraryJA4-जाँचने वाली साइटों पर ब्लॉक
DatacenterBrowser-impersonatedIP reputation पर ब्लॉक
ResidentialBrowser-impersonatednetwork-परत जाँचें पास

अपने Fingerprint को अपनी कहानी से मिलाना

दो रास्ते, tooling के अनुसार:

HTTP clients — एक impersonation library इस्तेमाल करें जो किसी browser के सटीक 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"},
)

असली browsers (Playwright, browser agents, anti-detect browsers) — TLS परत पर कुछ नहीं करना है; fingerprint सचमुच Chrome का है। आपका जोखिम कहीं और है: IP reputation और CDP detection।

फिर सत्यापित करें, मान न लें। संस्करण खिसकते हैं — Chrome 120 के handshake पर पिन की गई एक impersonation library 2026 में "संदिग्ध रूप से पुराना browser" के रूप में पढ़ी जाती है। हर dependency update के बाद फिर से परखें:

Free tool · no signup

अपना JA3 / JA4 अभी देखें

हमारा checker आपके client द्वारा प्रस्तुत TLS fingerprint को वापस भेजता है, पहचानता है कि यह किस stack से मेल खाता है (Chrome / Firefox / OpenSSL / Go), और UA-बनाम-TLS mismatch को फ़्लैग करता है — ठीक वही जाँच जो anti-bot सिस्टम चलाते हैं।

मेरा TLS fingerprint परखें →

Fingerprint साफ़ पर फिर भी ब्लॉक? दूसरा आधा IP reputation है — 500MB मुफ़्त ट्रैफ़िक क्रेडिट के साथ residential IPs आज़माएँ →

सारांश

साफ़ Fingerprint, साफ़ IP

अपने impersonated TLS को residential IPs के साथ जोड़ें — 500MB मुफ़्त ट्रैफ़िक क्रेडिट, कार्ड की ज़रूरत नहीं।

Start Free Trial

सभी IP प्रोडक्ट्स के लिए · किसी भी समय उपलब्ध नोड्स का विशाल पूल

अभी साइन अप करें और अपने रिचार्ज पर 100% तक का रिबेट पाएं

नए यूज़र्स को साइन अप पर 500MB मिलते हैं, साथ ही पहली रिचार्ज पर बोनस। सीमित समय की पेशकश।