आपने साफ रेज़िडेंशियल IP खरीदे, आप उन्हें बिल्कुल सही तरीके से रोटेट करते हैं, और फिर भी पहली ही रिक्वेस्ट पर आपको 403 मिलता है। समस्या IP नहीं है — आपका TLS हैंडशेक है। TLS फिंगरप्रिंटिंग एक सर्वर को आपकी HTTP रिक्वेस्ट का एक भी बाइट पढ़े जाने से पहले क्लाइंट लाइब्रेरी की पहचान करने देती है। यह गाइड JA3/JA4 को समझाती है, दिखाती है कि Python की requests को पहचानना क्यों बेहद आसान है, और curl_cffi तथा tls-client के साथ असली ब्राउज़रों की नकल करने के लिए कार्यशील कोड देती है।
जब कोई भी क्लाइंट एक HTTPS कनेक्शन खोलता है, तो वह एक ClientHello भेजता है जो उसके TLS वर्शन, साइफर सूट्स, एक्सटेंशन्स, एलिप्टिक कर्व्स, और उन सभी के क्रम को विज्ञापित करता है। वह क्रम उस लाइब्रेरी के लिए उल्लेखनीय रूप से विशिष्ट होता है जिसने इसे बनाया है। इसे हैश करें और आपको एक JA3 फिंगरप्रिंट मिलता है (या नया, अधिक मज़बूत JA4)।
Chrome एक फिंगरप्रिंट बनाता है। Firefox दूसरा। Python की requests (urllib3 और OpenSSL पर बनी) एक ऐसा फिंगरप्रिंट बनाती है जो "ऑटोमेशन" चिल्लाता है — और यह लाखों बॉट्स में एक जैसा होता है। एंटी-बॉट सिस्टम इनकी एक ब्लॉकलिस्ट रखते हैं। आपका IP चाहे कितना भी रेज़िडेंशियल हो, एक ज्ञात-बॉट JA3 फ्लैग हो जाता है।
कुछ भी ठीक करने से पहले, इसे मापें। अपने स्क्रैपर से JIBAO के मुफ़्त JA3/JA4 फिंगरप्रिंट चेकर को एक रिक्वेस्ट भेजें और इसकी तुलना उससे करें जो एक असली Chrome दिखाता है। यदि JA3 हैश अलग हैं, तो टारगेट आपको एक इंसान से अलग बता सकता है — और Cloudflare भी।
requests और httpx TLS को सिस्टम के OpenSSL को सौंप देते हैं। आप हेडर्स और यहाँ तक कि User-Agent भी पूरे दिन बदल सकते हैं, लेकिन नीचे का हैंडशेक अब भी OpenSSL का है, Chrome का नहीं। हैंडशेक स्पूफिंग के बिना हेडर स्पूफिंग ही "मैंने ब्राउज़र हेडर्स कॉपी किए और फिर भी यह मुझे ब्लॉक करता है" का सबसे आम कारण है। आपको एक ऐसे क्लाइंट की ज़रूरत है जो ब्राउज़र के असली TLS स्टैक की नकल करे।
curl_cffi curl-impersonate से बाइंड होता है, जो curl का एक बिल्ड है जो असली ब्राउज़र TLS और HTTP/2 फिंगरप्रिंट्स को पुनः उत्पन्न करता है। एक आर्गुमेंट और आपका हैंडशेक Chrome जैसा दिखता है:
# pip install curl_cffi
from curl_cffi import requests
# impersonate a real Chrome TLS + HTTP/2 fingerprint
r = requests.get(
"https://tls.browserleaks.com/json",
impersonate="chrome131",
)
print(r.json()["ja3_hash"]) # now matches real Chrome
API requests की नकल करता है, इसलिए किसी मौजूदा स्क्रैपर को माइग्रेट करना ज़्यादातर एक-लाइन के इम्पोर्ट बदलाव जितना है। समर्थित टारगेट्स में हाल के Chrome, Edge, Safari, और Firefox बिल्ड शामिल हैं — एक चुनें और इसे अपडेटेड रखें, क्योंकि जैसे-जैसे ब्राउज़र अपडेट होते हैं फिंगरप्रिंट्स रोटेट होते हैं।
फिंगरप्रिंट मैचिंग और IP रोटेशन पूरक हैं, विकल्प नहीं। दोनों का उपयोग करें: एक साफ रेज़िडेंशियल IP पर एक ब्राउज़र-ग्रेड हैंडशेक ही वास्तव में पार पाता है:
from curl_cffi import requests
PROXY = "socks5h://USERNAME:[email protected]:10001"
r = requests.get(
"https://example.com/protected",
impersonate="chrome131",
proxies={"http": PROXY, "https": PROXY},
timeout=30,
)
print(r.status_code)
tls-client (एक Go uTLS इम्प्लीमेंटेशन के ऊपर एक Python रैपर) एक और ठोस विकल्प है, जिसमें नामित प्रोफ़ाइलों की एक बड़ी लाइब्रेरी है:
# pip install tls-client
import tls_client
session = tls_client.Session(
client_identifier="chrome_120",
random_tls_extension_order=True,
)
session.proxies = {
"http": "socks5h://USERNAME:[email protected]:10001",
"https": "socks5h://USERNAME:[email protected]:10001",
}
r = session.get("https://example.com/protected")
print(r.status_code)
random_tls_extension_order=True एक स्थिर, पुनः उपयोग योग्य फिंगरप्रिंट से बचने के लिए एक्सटेंशन क्रम को फेंटता है — उन सिस्टम के विरुद्ध सहायक जो समय के साथ एक्जैक्ट-मैच JA3 को ट्रैक करते हैं।
कुछ टारगेट JavaScript-एग्ज़िक्यूशन सिग्नल्स (canvas, WebGL, इवेंट टाइमिंग) चेक करते हैं जिन्हें कोई HTTP क्लाइंट पुनः उत्पन्न नहीं करता। वहाँ, इसके बजाय एक असली ब्राउज़र चलाएं — स्टेल्थ के साथ Playwright और Puppeteer के साथ प्रॉक्सी का उपयोग देखें। ट्रेड-ऑफ लागत और गति है: curl_cffi जैसे HTTP क्लाइंट प्रति रिक्वेस्ट कहीं सस्ते हैं, इसलिए जहाँ ये काफी हों वहाँ इनका उपयोग करें और पूर्ण ब्राउज़र्स को सबसे कठिन टारगेट्स के लिए सुरक्षित रखें।
curl_cffi (impersonate=) या tls-client के साथ — अकेले हेडर्स पर्याप्त नहीं हैं।TLS फिंगरप्रिंटिंग अधिकांश "साफ IP लेकिन फिर भी ब्लॉक" कहानियों में गायब परत है। हैंडशेक को ठीक करें, रेज़िडेंशियल IP रखें, और सफलता दर उछल जाती है। सबसे कठिन WAF के विरुद्ध पूर्ण स्टैक के लिए, 2026 Cloudflare बायपास रेसिपी पढ़ें।
ब्राउज़र-ग्रेड TLS फिंगरप्रिंट्स के साथ जोड़ने के लिए 500MB फ्री ट्रैफिक और रेज़िडेंशियल IP पाएं।
फ्री ट्रायल शुरू करेंनए यूज़र्स को साइन अप पर 500MB मिलते हैं, साथ ही पहली रिचार्ज पर बोनस। सीमित समय की पेशकश।