Browser fingerprinting को scrapers के लिए समझाया गया
Browser fingerprinting वह तरीका है जिससे किसी visitor को cookie या account के बजाय उसके browser की संयुक्त विशेषताओं से पहचाना जाता है। Sites इसका इस्तेमाल लौटने वाले visitors को पहचानने, fraud पकड़ने और automation को पहचानने के लिए करती हैं। अगर आप web scrape करते हैं, तो इसका सामना होगा। यह guide बताती है कि क्या measure होता है, एक mismatch इतनी परेशानी क्यों लाता है, और public data इकट्ठा करने के लिए एक consistent, अच्छे व्यवहार वाला profile कैसे रखें। यह भी बताती है कि fingerprint tuning क्या कर सकता है और उसे क्या नहीं करना चाहिए।
Fingerprint किन चीज़ों से बनता है
कोई एक value browser को अकेले पहचान नहीं सकती, पर बहुत सी छोटी values मिलकर अक्सर पहचान लेती हैं। आम inputs ये हैं:
- User agent और client hints। Browser का नाम, version और operating system जो browser बताता है।
- Screen और window की ज्यामिति। Screen size, color depth, device pixel ratio और viewport का आकार।
- Language और timezone।
Accept-Languageheader,navigator.languagesऔर browser द्वारा बताई गई timezone। - Installed fonts। वे fonts जिन्हें page पहचान सकता है, जो operating systems और installed software के बीच अलग होते हैं।
- Canvas, WebGL और audio output। Graphics या audio stack जिस तरह किसी test image या sound को draw या process करता है, उसमें छोटे अंतर।
- Network-level विशेषताएँ। TLS handshake, HTTP/2 settings और request headers का क्रम। ये JavaScript चलने से पहले भी server को दिखते हैं।
Fingerprinting scripts इन्हें एक hash या score में जोड़ती हैं। जितने ज़्यादा signals स्थिर और असामान्य होंगे, नतीजा उतना ही पहचान वाला होगा।
Mismatch क्यों अलग दिखता है
असली browser भीतर से consistent होता है। उसका operating system उसके fonts से मेल खाता है, उसकी timezone उसकी language setting से, और उसका screen size उस device से जिस पर वह चलता है। Scrapers अनजाने में यह consistency तोड़ देते हैं:
- Desktop browser से कॉपी किया गया user agent, जो ऐसे server से जाता है जिस पर कोई font installed नहीं है।
- एक जर्मन
Accept-Languageheader, ऐसी request पर जिसका IP पता किसी दूसरे देश का है, और timezone इन दोनों में से किसी से मेल नहीं खाती। - Headless environment जो ऐसा window size बताता है जो कोई असली monitor इस्तेमाल नहीं करता।
- हर run पर बिलकुल नया profile, इसलिए cookies और history कभी लौटने वाले visitor जैसी नहीं लगतीं।
हर mismatch एक छोटा signal है। साथ मिलकर वे एक request को "आम visitor" से "थोड़ा और ध्यान देने लायक" की श्रेणी में ले जा सकते हैं।
Step 1: अपना setup मापें
आप एक ऐसा fingerprint test page लोड करके देख सकते हैं कि page आपके client के बारे में क्या जानता है, जो आपका अपना हो या locally चलाया गया diagnostic page। Values देखें और पूछें कि क्या वे एक consistent machine का वर्णन करती हैं। यहाँ एक छोटा Playwright उदाहरण है जो उनमें से कुछ प्रिंट करता है:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context(locale="en-GB", timezone_id="Europe/London")
page = context.new_page()
page.goto("https://example.com") # इसकी जगह ऐसा page लगाएँ जो आपका हो
print(page.evaluate("""() => ({
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
platform: navigator.platform,
viewport: [innerWidth, innerHeight]
})"""))
browser.close()
Step 2: हर profile की एक पहचान रखें
सबसे उपयोगी आदत है हर scraping identity को एक profile मानना। उसे एक ही set की विशेषताएँ दें और पूरी उम्र के लिए उन्हें रखें:
- एक browser build, एक user agent और एक operating system।
- ऐसा locale, language और timezone जो उस region से मेल खाए जहाँ से traffic आ रहा है।
- ऐसा viewport और device scale factor जो असली screen से मेल खाए।
- एक persistent cookie jar, ताकि profile लौटने वाले visitor की तरह व्यवहार करे।
हर request पर इनमें से कोई एक बदलना, इन्हें स्थिर रखने से ज़्यादा संदिग्ध है। Consistency ही profile को आम दिखाती है।
Step 3: profile को visitor की तरह चलाएँ
Fingerprinting केवल एक input है। Sites यह भी देखती हैं कि एक profile site में कितनी तेज़ी से घूमता है। जो profile एक मिनट में दो सौ product pages लोड करता है, वह इंसान नहीं है, भले ही उसका fingerprint कुछ भी कहे। Requests फैलाएँ, नतीजे cache करें, और जब कोई page संकेत दे तब रुकें। scrape without getting blocked checklist में pacing पर और विस्तार से बात है।
Step 4: सीमाएँ जानें
Fingerprint tuning किसी automated profile को ऐसे इंसान जैसा नहीं दिखा सकती जो वहाँ है ही नहीं। जो sites fingerprinting पर निर्भर हैं, वे आम तौर पर उसे rate limits, account checks और कभी-कभी captcha के साथ मिलाती हैं। जब captcha दिखे, तो आपको fingerprint के और बदलावों के बजाय solver से token चाहिए। Scarnox पर live captcha type PopularCaptcha है; PopularCaptcha Python guide request दिखाती है। Widgets की व्यापक तस्वीर के लिए captcha के प्रकार समझाए गए पढ़ें।
इससे भी ज़रूरी बात: fingerprint evasion site के नियमों को नज़रअंदाज़ करने का लाइसेंस नहीं है। अगर owner ने automated access सीमित किया है, तो सही कदम है रुक जाना, न कि अपने profile को और मुश्किल से पहचाने जाने लायक बनाना। Fingerprinting privacy का विषय भी है। कुछ sites इसका इस्तेमाल लोगों को विभिन्न visits के बीच track करने के लिए करती हैं, और यह एक और कारण है कि आप वही data इकट्ठा करें जो आपके प्रोजेक्ट के लिए ज़रूरी है।
ज़िम्मेदारी से scrape करें
- किसी site को scrape करने से पहले
robots.txtऔर terms पढ़ें। - कम, धीमी requests भेजें, और जो पहले से इकट्ठा कर चुके हैं उसे cache करें।
- ऐसे profiles न बनाएँ जो असली लोगों का रूप धरें या किसी block के आसपास से निकलें।
- वह personal data सेव न करें जिसकी ज़रूरत नहीं है, और जो सेव करें उसे सावधानी से संभालें।
आगे कहाँ जाएँ
अगर आपका target किसी browser-level check के पीछे है, तो headless browser detection से शुरू करें, जो automated browsers के लिए विशिष्ट signals कवर करती है। जो pages अपना content दिखाने के लिए JavaScript चाहते हैं, उनके लिए JavaScript websites को scrape करना देखें।
मुफ़्त ट्रायल क्रेडिट से शुरू करें, कार्ड की ज़रूरत नहीं: खाता बनाएँ और अपने पास वाली page पर PopularCaptcha flow आज़माएँ। मौजूदा दरों के लिए pricing page देखें।