TLS फिंगरप्रिंटिंग क्या है? JA3 बनाम JA4 समझाया गया
Specialist in Anti-Bot Strategies
TL;DR:
- TLS फिंगरप्रिंटिंग क्लाइंट सॉफ़्टवेयर की पहचान TLS हैंडशेक से करता है, इससे पहले कि HTTP का एक भी बाइट भेजा जाए। एक सर्वर
ClientHelloपढ़ता है - TLS संस्करण, सिफर सूट, और एक्सटेंशन जो आपका क्लाइंट प्रदान करता है - और एक हैश निकालता है जो कहता है "यह क्रोम है" या "यह एक पायथन स्क्रिप्ट है।" - JA3 मूल विधि थी; JA4 इसका आधुनिक प्रतिस्थापन है। JA3 (सेल्सफोर्स से) ने कच्चे
ClientHelloफ़ील्ड को क्रम में हैश किया, इसलिए जब क्रोम ने अपने TLS एक्सटेंशन के क्रम को यादृच्छिक बनाने की शुरुआत की, JA3 हैश अस्थिर हो गए। JA4 पहले सिफर और एक्सटेंशन को क्रमबद्ध करता है, इसलिए फिंगरप्रिंट स्थिर रहता है। - JA4 मानव-पढ़ने योग्य है, एक अकेला अपार हैश नहीं। इसका
a_b_cप्रारूप TLS संस्करण, SNI उपस्थिति, सिफर और एक्सटेंशन गणनाएँ, और ALPN को आगे में एन्कोड करता है, फिर क्रमबद्ध सिफर और एक्सटेंशन सूचियों का हैश करता है - ताकि आप इसके किसी हिस्से पर मेल कर सकें, न कि केवल पूरे पर। - एक कस्टम HTTP क्लाइंट का एक गैर-ब्राउज़र फिंगरप्रिंट है।
requests,curl, या एक पैच की गई लाइब्रेरी एक सिफर/एक्सटेंशन सेट भेजती है जिसे कोई असली क्रोम नहीं भेजता, इसलिए इसका JA4 एक साफ IP के पीछे भी खड़ा है। - एक असली ब्राउज़र एक विश्वसनीय उत्तर है। स्क्रेपलेस स्क्रैपिंग ब्राउज़र असली क्रोमियम है, इसलिए इसका
ClientHello— और इसलिए इसका JA3/JA4 — असली क्रोम का है, जो एक सामान्य आगंतुक से भिन्न नहीं है। - शुरू करने के लिए स्वतंत्र। नए स्क्रेपलेस खातों में मुफ़्त स्क्रैपिंग ब्राउज़र रनटाइम शामिल है - app.scrapeless.com पर साइन अप करें।
परिचय: हैंडशेक आपको HTTP से पहले उजागर करता है
TLS फिंगरप्रिंटिंग एक कनेक्शन के पीछे सॉफ़्टवेयर की पहचान करता है कि यह TLS सत्र को कैसे खोलता है, न कि इसके बाद क्या भेजता है। प्रत्येक HTTPS कनेक्शन ClientHello संदेश के साथ शुरू होता है जिसमें क्लाइंट उन TLS संस्करणों का विज्ञापन करता है जिन्हें वह समर्थन करता है, उसकी पसंद के सिफर सूट, और एक्सटेंशन की सूची। ये विकल्प असली क्रोम, एक गो प्रोग्राम, और एक पायथन स्क्रिप्ट के बीच भिन्न होते हैं, और एक सर्वर इनको हैश करके एक संक्षिप्त पहचानकर्ता बना सकता है जो तब भी जीवित रहता है जब IP, उपयोगकर्ता एजेंट, और कुकीज़ पूरी तरह से सामान्य लगते हैं।
यही कारण है कि एक स्क्रैपर आवासीय प्रॉक्सी को घुमाता है, एक क्रोम उपयोगकर्ता एजेंट का स्पूफ करता है, और फिर भी अवरुद्ध हो जाता है: TLS 1.3 हैंडशेक जो वह भेजता है, वह पहले स्थान पर क्रोम जैसा नहीं दिखता। यह गाइड बताती है कि TLS फिंगरप्रिंट क्या है, JA3 और JA4 एक कैसे बनाते हैं, और असली ब्राउज़र का चलाना एक स्थायी तरीका क्यों है जो एक फिंगरप्रिंट प्रस्तुत करता है जो उसके अनुसार है।
एक TLS फिंगरप्रिंट किससे बना होता है
एक TLS फिंगरप्रिंट ClientHello के फ़ील्ड का एक हैश है, जो पहला संदेश है जो एक क्लाइंट TLS कनेक्शन खोलते समय भेजता है। इनपुट क्लाइंट की TLS लाइब्रेरी और कॉन्फ़िगरेशन की स्थिर विशेषताएँ हैं:
- TLS संस्करण जो पेश किया गया है (उदाहरण के लिए, TLS 1.2 या 1.3)।
- सिफर सूट जो क्लाइंट समर्थन करता है, जिस क्रम में वह उन्हें सूचीबद्ध करता है।
- एक्सटेंशन जो क्लाइंट शामिल करता है (SNI, ALPN, समर्थन समूह, सिग्नेचर एल्गोरिदम, और अधिक)।
- इलेटिक वक्र और बिंदु प्रारूप जो यह विज्ञापित करता है।
एक ब्राउज़र का TLS स्टैक इन मूल्यों का एक विशिष्ट, सुसंगत संयोजन उत्पन्न करता है; एक स्क्रिप्टिंग लाइब्रेरी एक अलग रूपांतरण उत्पन्न करती है। चूंकि फिंगरप्रिंट ट्रांसपोर्ट लेयर से निकाला गया है, यह हेडर और कुकीज़ से स्वतंत्र है - आपका उपयोगकर्ता एजेंट बदलने से इसका कुछ नहीं होता है।
JA3: मूल TLS फिंगरप्रिंट, और यह क्यों टूटा
JA3 पहला व्यापक रूप से अपनाया गया TLS फिंगरप्रिंट था, 2017 में सेल्सफोर्स के इंजीनियरों द्वारा प्रकाशित। यह पांच ClientHello फ़ील्ड को जोड़ता है - TLS संस्करण, सिफर सूट, एक्सटेंशन, इलेटिक वक्र, और इलेटिक-वल्र्ड बिंदु प्रारूप - जिस क्रम में वे दिखाई देते हैं, फिर उस स्ट्रिंग का MD5 लेता है, जो TLS विनिर्देश द्वारा आरक्षित GREASE मानों की अनदेखी करता है।
क्रम पर निर्भरता JA3 की कमजोरी बन गई। 2023 में, क्रोम ने हर कनेक्शन पर अपने TLS एक्सटेंशन के क्रम को यादृच्छिक बनाना शुरू किया, इसलिए एकल क्रोम इंस्टॉल ने एक अनुरोध से अगले में एक अलग JA3 हैश उत्पन्न किया। एक फिंगरप्रिंट जो हर कनेक्शन में बदलता है, ग्राहक की पहचान के लिए अप्रयुक्त होता है, इसलिए पहचानने वाले विक्रेताओं को एक विधि की आवश्यकता थी जो क्रम पर निर्भर न हो।
JA4: आधुनिक, क्रम-स्थिर प्रतिस्थापन
JA4 TLS-क्लाइंट फिंगरप्रिंट है JA4+ में, एक नेटवर्क फिंगरप्रिंटिंग विधियों का समूह जिसे जॉन अल्थहाउस ने FoxIO में बनाया। इसका परिभाषित कदम है सिफरों और एक्सटेंशनों को हैश करने से पहले क्रमबद्ध करना, जो फिंगरप्रिंट को स्थिर बनाता है भले ही क्रोम की एक्सटेंशन-ऑर्डर यादृच्छिकता के खिलाफ। यह भी मानव-पढ़ने योग्य है: फिंगरप्रिंट एक a_b_c प्रारूप में तीन अनुभागों में रखा गया है, इसलिए विश्लेषक किसी भी अनुभाग पर मेल कर सकते हैं न कि केवल एक अपार हैश पर।
उदाहरण फिंगरप्रिंट JA4=t13d1516h2_8daaf6152771_02713d6af862 लें:
aसेक्शन —t13d1516h2पठनीय मेटाडेटा है।tट्रांसपोर्ट है (tTLS पर TCP के लिए,qQUIC के लिए,dDTLS के लिए);13TLS संस्करण है (1.3);dका मतलब है कि एक SNI डोमेन मौजूद है (iका मतलब होगा कोई SNI या एक IP नहीं है);15सिफर-सुइट की संख्या है और16एक्सटेंशन की संख्या है, दोनों GREASE को छोड़कर; औरh2पहले और अंतिम ALPN मान का पहला और अंतिम अक्षर है।bसेक्शन —8daaf6152771सिफर सुइट का 12-अक्षरीय संक्षिप्त SHA-256 है, जिसे हेक्स में परिवर्तित और क्रमबद्ध किया गया है।cसेक्शन एक 12-अक्षरीय संक्षिप्त SHA-256 है जो एक्सटेंशनों को हेक्स मान द्वारा क्रमबद्ध करता है, उसके बाद जोखिम संकेतक एल्गोरिदम। इस गणना से SNI और ALPN एक्सटेंशन हटा दिए गए हैं, इसलिए एक ही क्लाइंट चाहे किसी डोमेन या IP से जुड़े,cसेक्शन वही रहता है।
क्रमबद्ध करना वही है जो JA3 को तोड़ने वाली यादृच्छिकता को हरा देता है: Chrome के एक्सटेंशनों को आप जितना चाहें पुनर्व्यवस्थित करें, और क्रमबद्ध सूची — और इसलिए JA4 — समान होता है।
JA4+ सूट TLS से अधिक है
JA4 TLS क्लाइंट की पहचान करता है, लेकिन यह एक बड़े परिवार का एक सदस्य है। व्यापक JA4+ फ़िंगरप्रिंटिंग सूट एक कनेक्शन की कई परतों को शामिल करता है, जिसमें:
| फ़िंगरप्रिंट | संक्षिप्त नाम | यह क्या पहचानता है |
|---|---|---|
| JA4 | JA4 | TLS क्लाइंट |
| JA4Server | JA4S | TLS सर्वर प्रतिक्रिया |
| JA4HTTP | JA4H | HTTP क्लाइंट |
| JA4X509 | JA4X | X.509 TLS प्रमाणपत्र |
| JA4SSH | JA4SSH | SSH ट्रैफिक |
| JA4TCP | JA4T | TCP क्लाइंट |
| JA4Latency | JA4L | क्लाइंट-से-सर्वर देरी |
JA4 TLS-क्लिएंट विधि को BSD 3-कलॉज लाइसेंस के अंतर्गत जारी किया गया है; JA4+ की अन्य विधियाँ FoxIO लाइसेंस 1.1 के अंतर्गत हैं और पेटेंट लंबित हैं। एक स्क्रैपर के लिए, JA4 (TLS) और JA4H (HTTP) वे दो हैं जो अक्सर यह तय करते हैं कि कोई अनुरोध ब्राउज़र के रूप में मान लिया जाए या बॉट के रूप में।
क्यों TLS फ़िंगरप्रिंटिंग स्क्रैपर्स को रोकता है
TLS फ़िंगरप्रिंटिंग एक स्क्रैपर को रोकता है क्योंकि अनुरोध कभी भी एक ब्राउज़र का फ़िंगरप्रिंट प्रस्तुत नहीं करता। एक HTTP क्लाइंट जैसे requests, httpx, curl, या एक स्टील्थ-पैच किया गया पुस्तकालय अपने पुस्तकालय के सिफर और एक्सटेंशन सेट के साथ TLS को बातचीत करता है - एक ऐसा जो कोई वास्तविक Chrome या Firefox उत्पन्न नहीं करता। परिणामस्वरूप JA4 एक ज्ञात गैर-ब्राउज़र मान पर पहुंचता है, और सर्वर कनेक्शन को अस्वीकार या चुनौती दे सकता है चाहे हेडर कितने भी विश्वसनीय क्यों न हों।
यह वह परत है जिसे उपयोगकर्ता-एजेंट धोखाधड़ी और प्रॉक्सी रोटेशन नहीं पहुँच सकते। आप एक आवासीय IP से Mozilla/5.0 (… Chrome/126 …) भेज सकते हैं और फिर भी फ़्लैग कर दिए जाएंगे, क्योंकि उसके नीचे का TLS हैंडशेक OpenSSL या Go के crypto/tls द्वारा उत्पन्न किया गया था, Chrome द्वारा नहीं। एक ब्राउज़र का JA4 हाथ से मेल करने का अर्थ है इसके सटीक सिफर क्रम, एक्सटेंशन सेट, और ALPN का पुनरुत्पादन - और फिर ब्राउज़र द्वारा उन्हें बदलने के साथ बने रहना।
प्रामाणिक TLS फ़िंगरप्रिंट प्रस्तुत करने का तरीका
एक ब्राउज़र का JA4 प्रस्तुत करने का विश्वसनीय तरीका वास्तव में एक ब्राउज़र होना है। स्क्रैपलेस स्क्रैपिंग ब्राउज़र असली, स्वयं-विकसित क्रोमियम है, इसलिए यह Chrome के अपने स्टैक के साथ TLS को बातचीत करता है। इसका ClientHello — और इसलिए इसका JA3 और JA4 — एक वास्तविक Chrome का है, जो ठीक वही है जो एक फ़िंगरप्रिंटिंग सर्वर एक सामान्य आगंतुक से अपेक्षित करता है। विशेष रूप से स्क्रैपिंग के लिए, यह लाता है:
- एक असली क्रोमियम TLS स्टैक — सिफर सुइट, एक्सटेंशन, और ALPN Chrome से आते हैं, इसलिए JA4 एक वास्तविक ब्राउज़र से मेल खाता है न कि एक स्क्रिप्टिंग लाइब्रेरी से।
- TLS और ब्राउज़र परतों में एक सुसंगत प्रति-सेशन फ़िंगरप्रिंट, जिसमें कोई
navigator.webdriverसंकेत नहीं जो इसे contradicted करे। - 195 देशों में आवासीय निकासी, इसलिए IP प्रतिष्ठा ब्राउजर फ़िंगरप्रिंट से मेल खाती है न कि एक डेटा सेंटर पते को उजागर करती है।
अपने API कुंजी को मुफ्त योजना पर प्राप्त करें app.scrapeless.com.
अपने API कुंजी को मुफ्त योजना पर प्राप्त करें: app.scrapeless.com
निष्कर्ष: फ़िंगरप्रिंट को संबंधित होना चाहिए, केवल सही दिखना नहीं चाहिए
TLS फिंगरप्रिंटिंग handshake से क्लाइंट को पढ़ता है, इसलिए केवल एक स्थायी उत्तर एक ऐसा handshake है जो वास्तव में किसी ब्राउज़र से संबंधित होता है। JA3 ने कच्चे ClientHello को हैश किया और जब क्रोम ने अपने एक्सटेंशन क्रम को यादृच्छिक बनाया तो यह टूट गया; JA4 सिफर और एक्सटेंशन को क्रमबद्ध करता है और स्थिर रहता है, यही कारण है कि यह अब फिंगरप्रिंट स्क्रैपर्स का सामना करता है। एक पैच किया हुआ HTTP क्लाइंट हेडर को स्पूफ कर सकता है और आईपी को घुमा सकता है और फिर भी TLS स्तर पर विफल हो सकता है। असली क्रोमियम चलाना - क्रोम TLS स्टैक के साथ, एक स्थायी फिंगरप्रिंट और आवासीय एग्रेस - एक ऐसा JA4 प्रस्तुत करता है जो एक साधारण आगंतुक से मेल खाता है। यह लेख तंत्र पर केंद्रित है: उस ब्राउज़र के माध्यम से स्क्रैपिंग स्टैक को रूट करने के लिए परिचालन कार्यप्रवाह के लिए, TLS फिंगरप्रिंट चेक को हटाने के लिए गाइड देखें; संबंधित एंटी-डिटेक्शन के स्तर के लिए, स्क्रैप्लिंग उत्पादन-स्क्रैपर गाइड देखें, और स्क्रैपलेस प्राइसिंग पेज पर योजनाओं की तुलना करें।
ब्राउज़र-ग्रेड TLS फिंगरप्रिंट प्रस्तुत करने के लिए तैयार?
फिंगरप्रिंट-आधारित डिटेक्ट्स के चारों ओर काम कर रहे डेवलपर्स के साथ जुड़ने और एक मुफ्त योजना का दावा करने के लिए हमारे समुदाय में शामिल हों: Discord · Telegram।
मुफ्त स्क्रैपिंग ब्राउज़र रनटाइम के लिए app.scrapeless.com पर साइन अप करें और वास्तविक क्रोमियम को अपने लक्ष्यों द्वारा अपेक्षित TLS फिंगरप्रिंट प्रस्तुत करने दें।
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: JA3 और JA4 के बीच क्या अंतर है?
JA3 ClientHello फ़ील्ड्स का MD5 हैश है जो उनकी मूल क्रम में होता है; JA4 पहले सिफर सूट और एक्सटेंशन को क्रमबद्ध करता है और एक पठनीय मेटाडेटा प्रीफिक्स जोड़ता है। क्रमबद्ध करना JA4 को TLS एक्सटेंशन-क्रम यादृच्छिकता के खिलाफ स्थिर बनाता है जिसने JA3 हैश को कनेक्शन से कनेक्शन में बदल दिया।
प्रश्न: क्या मैं अपने उपयोगकर्ता एजेंट को बदलकर अपना TLS फिंगरप्रिंट बदल सकता हूँ?
नहीं। उपयोगकर्ता एजेंट एक HTTP हेडर है जो TLS हैंडशेक के बाद भेजा जाता है; TLS फिंगरप्रिंट स्वयं हैंडशेक से निकाला जाता है। ये स्वतंत्र परतें हैं, यही कारण है कि एक स्पूफ किया हुआ उपयोगकर्ता एजेंट आपके JA3 या JA4 पर कुछ नहीं करता।
प्रश्न: मेरी स्क्रैपर को आवासीय प्रॉक्सी के साथ भी क्यों ब्लॉक किया जाता है?
एक आवासीय आईपी नेटवर्क स्तर को ठीक करता है, लेकिन यदि आपका HTTP क्लाइंट किसी गैर-ब्राउज़र सिफर और एक्सटेंशन सेट के साथ TLS को बातचीत करता है, तो इसका JA4 अभी भी इसे एक स्क्रिप्ट के रूप में पहचानता है। फिंगरप्रिंट और आईपी को सहमत होना चाहिए।
प्रश्न: क्या स्क्रैपलेस स्क्रैपिंग ब्राउज़र मेरे JA4 को फर्जी क्रोम में बदल देता है?
यह कुछ भी नहीं बनाता — यह असली क्रोमियम है, इसलिए यह क्रोम के वास्तविक स्टैक के साथ TLS को बातचीत करता है। जो JA3/JA4 वह प्रस्तुत करता है वह एक वास्तविक क्रोम का है क्योंकि हैंडशेक वास्तव में क्रोम से आया था।
प्रश्न: क्या TLS फिंगरप्रिंटिंग ब्राउज़र फिंगरप्रिंटिंग के समान है?
नहीं। TLS फिंगरप्रिंटिंग परिवहन हैंडशेक (सिफर, एक्सटेंशन, ALPN) को पढ़ता है; ब्राउज़र फिंगरप्रिंटिंग पृष्ठ के अंदर की गुणों (कैनवास, फ़ॉन्ट, navigator मान) को पढ़ता है। एक विश्वसनीय सत्र को असली ब्राउज़र की तरह दिखने के लिए दोनों की आवश्यकता होती है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



