403/429, फ़िंगरप्रिंटिंग, CAPTCHA, डायनमिक पेज और लॉगिन सेशन के नज़रिए से यह लेख बताता है कि वेब स्क्रैपिंग सीमित क्यों होती है, और एक ऐसा तरीका सुझाता है जिसमें अधिकृत API, रेट लिमिट, बैकऑफ़, इंक्रीमेंटल कैश और अनुपालन-अनुरूप अकाउंट वातावरण पहले आते हैं।
जब कोई स्क्रैपिंग काम 403, 429, CAPTCHA या बार-बार लॉगिन विफलताओं पर टकराती है, तो सही प्रतिक्रिया IP रोटेट करना, फ़िंगरप्रिंट छिपाना या "असली इंसान बनने" की कोशिश नहीं है। ये संकेत आमतौर पर बताते हैं कि अनुरोध की दर, पहुँच का दायरा, प्रमाणीकरण का तरीका या स्वचालित व्यवहार उस सीमा को पार कर गया है जिसे साइट स्वीकार करती है। ज़िद करने पर अवरोध बढ़ता है और सेवा की शर्तें, अनुबंध, कॉपीराइट या डेटा संरक्षण नियम टूट सकते हैं।
अधिक स्थिर रास्ता यह है कि पहले प्राधिकार और उपलब्ध इंटरफ़ेस की पुष्टि करें, फिर ट्रैफ़िक कम करें, जहाँ ज़रूरत हो वहाँ कैश और बैकऑफ़ लगाएँ, और ब्राउज़र ऑटोमेशन सिर्फ उन पेजों तक सीमित रखें जिनके लिए वाकई JavaScript रेंडरिंग या इंसानी लॉगिन चाहिए। CAPTCHA को रोकने के संकेत की तरह लें, न कि तोड़ने लायक तकनीकी बाधा की तरह।
लक्षण से शुरू कर कारण को सँकरा करें
| लक्षण | सामान्य कारण | अनुपालन-अनुरूप प्रतिक्रिया |
|---|---|---|
| 429 Too Many Requests | अनुरोध बहुत तेज़, बहुत समानांतर या दोहराए जा रहे | दर घटाएँ, Retry-After का पालन करें, एक्सपोनेंशियल बैकऑफ़ लगाएँ |
| 403 Forbidden | अनधिकृत पाथ, पॉलिसी ब्लॉक, सेशन गायब | अनुमतियाँ, शर्तें, robots.txt और प्रमाणीकरण का तरीका जाँचें |
| CAPTCHA आता है | साइट इंसानी पुष्टि माँग रही है या ऑटोमेशन रोक रही है | काम रोकें, मैन्युअल पूरा करें, या API माँगें |
| लॉगिन बार-बार विफल | कुकीज़ एक्सपायर, सेशन ओवरराइट, प्रमाणीकरण विफल | आधिकारिक OAuth या सर्विस अकाउंट इस्तेमाल करें, सेशन हैंडओवर ठीक से करें |
| पेज पर कंटेंट है पर स्क्रिप्ट नहीं पढ़ पाती | JavaScript रेंडरिंग, API असिंक्रोनस लोडिंग | आधिकारिक API इस्तेमाल करें; अनुमति से ब्राउज़र में रेंडर कर DOM पढ़ें |
| सिलेक्टर अचानक काम नहीं करते | DOM में बदलाव, A/B टेस्ट, भाषा बदली | सिमैंटिक लोकेटर, स्ट्रक्चर टेस्ट और अलर्ट इस्तेमाल करें, हार्डकोड हायरार्की से बचें |
| डुप्लिकेट या गायब डेटा | पेजिनेशन, कर्सर, टाइमज़ोन, अपडेट विंडो गलत | यूनिक की, इंक्रीमेंटल वॉटरमार्क और रीरन मैकेनिज़्म बनाएँ |
एक बार में एक ही वेरिएबल बदलें और लॉग रखें। अगर आप एक साथ IP, User-Agent, अकाउंट और पार्सर बदल दें, तो काम भले चल पड़े, पर यह पता नहीं लगेगा कि असल में किस बदलाव ने मदद की।
चरण 1: पुष्टि करें कि इन डेटा को इकट्ठा करने का आपको अधिकार है
शुरू करने से पहले चार सवालों के जवाब दें:
- डेटा सार्वजनिक है, या लॉगिन, भुगतान या किसी विशेष भूमिका के बाद ही मिलता है?
- क्या साइट API, एक्सपोर्ट, फ़ीड, वेबहुक या पार्टनर डेटा इंटरफ़ेस देती है?
- क्या सेवा की शर्तें, robots.txt, अनुबंध और स्थानीय कानून इस इरादे को अनुमति देते हैं?
- क्या डेटा में व्यक्तिगत जानकारी, कॉपीराइट-सुरक्षित सामग्री या अन्य संवेदनशील फ़ील्ड हैं?
robots.txt वह मानक तरीका है जिससे कोई साइट ऑटोमेटेड क्लाइंट को बताती है कि कौन से पाथ की अनुमति है और कौन से नहीं। RFC 9309 Robots Exclusion Protocol के सिंटैक्स और मिलान नियम तय करता है और स्पष्ट करता है कि robots.txt कोई एक्सेस अनुमति नहीं है। दूसरे शब्दों में, robots.txt से अनुमति मिलने का मतलब यह नहीं कि आपको डेटा कॉपी, प्रोसेस या व्यावसायिक रूप से इस्तेमाल करने का पूरा अधिकार मिल गया; जिन पाथ पर रोक है उन्हें किसी और रास्ते से नहीं जोड़ना चाहिए।
एंटरप्राइज़ प्रोजेक्ट में डेटा स्रोत, एक्सेस का आधार, उद्देश्य, फ़ील्ड, रिटेंशन अवधि और डिलीशन मैकेनिज़्म का रिकॉर्ड रखना चाहिए। अगर समुच्चय (एग्रीगेट) डेटा से काम चल सकता है तो पहचान-योग्य व्यक्तिगत जानकारी न जुटाएँ।
चरण 2: स्थिर डेटा प्रवेश-बिंदुओं को प्राथमिकता दें
आम प्राथमिकता क्रम यह है:
- आधिकारिक API, वेबहुक या डेटा एक्सपोर्ट;
- सार्वजनिक फ़ीड, साइटमैप या बैच फ़ाइलें;
- अनुमति प्राप्त सामान्य HTTP पेज;
- ब्राउज़र ऑटोमेशन केवल तब जब JavaScript रेंडर करना ज़रूरी हो;
- इंसानी अकाउंट और इंटरैक्शन वाले पेज सबसे अंत में।
API आमतौर पर फ़ील्ड परिभाषा, पेजिनेशन, रेट लिमिट और एरर कोड देते हैं, इसलिए UI पार्स करने से उनका रखरखाव सस्ता होता है। वेब पेज इंसानी आँखों के लिए है; यह कभी भी बदल सकता है और इसे स्थिर डेटाबेस नहीं मानना चाहिए।
अगर साइट के पास उचित इंटरफ़ेस नहीं है, तो पहले डेटा के मालिक से संपर्क कर उद्देश्य, आवृत्ति, फ़ील्ड और व्यावसायिक पैमाना समझाएँ। स्पष्ट डेटा लाइसेंस लंबे समय तक सीमाओं से लड़ने से अक्सर सस्ता पड़ता है।
चरण 3: 429 और IP बैन को छिपाने से नहीं, लोड कम करके हल करें
रेट और कॉन्करेंसी की सीमा तय करें
एक वर्कर और लंबा अंतराल रखकर शुरू करें, फिर प्रतिक्रिया समय और एरर दर देखें। अगर सर्वर Retry-After लौटाए, तो उतनी देर ठहरें। अगर न लौटाए, तो एक्सपोनेंशियल बैकऑफ़ के साथ रैंडम जिटर इस्तेमाल करें ताकि कई काम एक साथ दोबारा कोशिश न करें।
सरल नीति:
प्रतीक्षा = min(सीमा, आधार × 2^पुनःप्रयास) + जिटर
अधिकतम पुनःप्रयास पूरा होने पर रुकें और अलर्ट उठाएँ। अनंत लूप में न पड़ें।
कैश और इंक्रीमेंटल अपडेट
एक ही URL को कैश करें और जहाँ समर्थन हो वहाँ ETag या Last-Modified के साथ कंडीशनल अनुरोध भेजें। अंतिम अपडेट समय या कर्सर सहेजें ताकि केवल नया या बदला हुआ कंटेंट ही लाया जाए। पूर्ण रन और दैनिक इंक्रीमेंटल कार्य को अलग करने से अनुरोधों की संख्या काफ़ी घटती है।
अपने क्लाइंट की ईमानदार पहचान दें
अनुपालन करने वाला क्रॉलर स्थिर और असली User-Agent इस्तेमाल करता है, अपना उद्देश्य बताता है और संपर्क पृष्ठ या ईमेल देता है। सामान्य ब्राउज़र बनने का नाटक और बार-बार पहचान बदलने से साइट के लिए अच्छे और बुरे ट्रैफ़िक में फ़र्क करना मुश्किल हो जाता है, जिससे ब्लॉक होने की संभावना बढ़ती है।
अगर किसी विशेष IP पर रोक लगी है, तो काम रोकें और कारण देखें। पहुँच बनाए रखने के लिए प्रॉक्सी रोटेट करते रहना एक्सेस कंट्रोल को दरकिनार करने जैसा माना जा सकता है, समाधान नहीं।
चरण 4: फ़िंगरप्रिंटिंग और व्यवहार विश्लेषण से निपटें
ब्राउज़र फ़िंगरप्रिंट User-Agent, OS, भाषा, टाइमज़ोन, रिज़ॉल्यूशन, Canvas और WebGL जैसे संकेतों को जोड़ता है। साइट अनुरोधों की लय, नेविगेशन पाथ और सेशन व्यवहार का भी विश्लेषण कर सकती है। OWASP Fingerprinting, Scraping, CAPTCHA Defeat, Credential Stuffing आदि को अलग-अलग स्वचालित खतरों की श्रेणी में रखता है — यही कारण है कि साइटें अक्सर कई संकेतों को मिलाकर ऑटोमेशन जोखिम तय करती हैं।
अधिकृत काम के लिए लक्ष्य बहुत सारी "इंसानी" पहचान बनाना नहीं, बल्कि वातावरण को स्थिर और समझाने योग्य रखना है:
- एक ही बिज़नेस अकाउंट के लिए स्थिर वातावरण और सामान्य प्रमाणीकरण;
- ब्राउज़र पैरामीटर असली क्षेत्र और डिवाइस से मेल खाएँ;
- बैन से बचने के लिए फ़िंगरप्रिंट को यादृच्छिक रूप से न बदलें;
- स्क्रैपिंग दर, कार्य ID और ज़िम्मेदार व्यक्ति को लॉग में दर्ज करें;
- साइट के साथ अनुमत अकाउंट संख्या, कॉन्करेंसी और डेटा दायरा तय करें।
अगर साइट अधिकृत कार्य को फिर भी ग़लत तरीके से वर्गीकृत करे, तो उसे टाइमस्टैम्प, User-Agent, एग्ज़िट IP और अनुरोध के नमूने भेजकर व्हाइटलिस्ट या समर्पित इंटरफ़ेस माँगें।
चरण 5: CAPTCHA आने पर ऑटोमेशन रोकें
CAPTCHA इंसान की पुष्टि या संदिग्ध ऑटोमेशन को रोकने के लिए होता है। OCR, CAPTCHA सॉल्विंग सर्विस, CAPTCHA-ब्रेकिंग प्लगइन या किसी भी अन्य स्वचालित बाईपास का इस्तेमाल न करें।
सही प्रक्रिया:
- तुरंत मौजूदा अकाउंट और कार्य कतार को रोकें;
- ट्रिगर होने से ठीक पहले की अनुरोध दर, पाथ और एरर लॉग सहेजें;
- अधिकृत व्यक्ति आधिकारिक पेज पर ज़रूरी पुष्टि पूरी करे;
- जाँचें कि अनुरोध बहुत तेज़ तो नहीं थे, सेशन एक्सपायर तो नहीं हुआ, या किसी अनुमति-रहित पाथ पर तो नहीं गए;
- दीर्घकालिक ऑटोमेशन के लिए साइट से API, सर्विस अकाउंट या व्हाइटलिस्ट माँगें।
इंसान एक बार CAPTCHA हल कर दे, इसका मतलब यह नहीं कि फिर असीमित स्वचालित अनुरोध भेजने का अधिकार मिल गया। पहले ट्रिगर होने का कारण ठीक करें।
चरण 6: लॉगिन और मल्टी-अकाउंट को औपचारिक अनुमतियों से संभालें
लॉगिन के पीछे का डेटा सार्वजनिक पेजों से अधिक संवेदनशील होता है। OAuth, सर्विस अकाउंट, API टोकन या प्लेटफ़ॉर्म की आधिकारिक टीम की दी गई अनुमतियों को प्राथमिकता दें। स्क्रिप्ट को किसी का मुख्य पासवर्ड सहेजने न दें।
जब ब्राउज़र सेशन वाकई ज़रूरी हो:
- एक वैध बिज़नेस अकाउंट का एक स्थिर वातावरण से मेल हो;
- कुकीज़ एन्क्रिप्ट करके सहेजें, एक्सपायरी और निरस्त करने का तरीका रखें;
- MFA चालू रखें, ऑटोमेशन दो-चरणीय पुष्टि को बायपास न करे;
- कई लोगों द्वारा एक साथ पासवर्ड रीसेट या कुकी कॉपी करने पर रोक लगाएँ;
- किसने कौन सा काम कब शुरू किया, इसे दर्ज करें;
- किसी के जाने, प्रोजेक्ट खत्म होने या भूमिका बदलने पर तुरंत पहुँच रद्द करें।
मल्टी-अकाउंट सिर्फ उन अकाउंट पर लागू होता है जिनके आप वास्तविक मालिक हैं या जिनके इस्तेमाल की अनुमति मिली है। जब साइट एक इकाई को सिर्फ एक अकाउंट तक सीमित रखती है, तो वातावरण अलगाव का इस्तेमाल उस सीमा को तोड़ने के लिए नहीं करना चाहिए।
चरण 7: डायनमिक पेज पार्सिंग को रीडिज़ाइन के प्रति मज़बूत बनाएँ
सिमैंटिक और स्थिर एट्रिब्यूट इस्तेमाल करें
शीर्षक, हेडर, एक्सेसिबिलिटी एट्रिब्यूट और साइट द्वारा प्रकाशित टेस्ट आइडेंटिफ़ायर को प्राथमिकता दें। div:nth-child(7) जैसी नाज़ुक हायरार्की से बचें। पेज रीफ़्रेश होने के बाद DOM फिर से पढ़ें, पुराने नोड अभी भी होंगे, यह मत मानें।
निष्कर्षण को बिज़नेस लॉजिक से अलग रखें
संग्रह परत पेज को सिर्फ संरचित फ़ील्ड में बदलती है। वैलिडेशन परत टाइप, रेंज, यूनिक की और अनिवार्य फ़ील्ड की जाँच करती है। इस बँटवारे से रीडिज़ाइन सिर्फ पार्सर को छूता है, आगे की एनालिसिस नहीं टूटती।
सैंपल और अलर्ट बनाएँ
अनुपालन-अनुरूप कुछ HTML या स्ट्रक्चरल स्नैपशॉट टेस्ट सैंपल के रूप में रखें। पूरे अकाउंट पेज या संवेदनशील डेटा सहेज कर न रखें। मिसिंग फ़ील्ड दर, रिकॉर्ड संख्या, डुप्लिकेशन दर और पेज शीर्षकों पर नज़र रखें; विचलन होने पर प्रोडक्शन डेटा में लिखना रोक दें।
अधिकृत स्क्रैपिंग में PurpleMark की उचित भूमिका
जब किसी टीम को एक साथ कई अधिकृत अकाउंट, अलग-अलग क्लाइंट वातावरण या क्षेत्रों को संभालना हो, तो PurpleMark web app में हर बिज़नेस अकाउंट के लिए एक स्वतंत्र ब्राउज़र वातावरण बनाया जा सकता है और उसी में संबंधित कुकीज़, लॉगिन के बाद डिफ़ॉल्ट रूप से खुलने वाला पेज और सामान्य नेटवर्क कॉन्फ़िगरेशन एक साथ सहेजा जा सकता है। उसी वातावरण को दोबारा खोलने पर ब्राउज़र पिछले सेशन और कार्य पेज पर वापस आ जाता है, ताकि कई लोग एक ही कुकी सेट साझा न करें और बार-बार लॉगिन न करना पड़े।
जब अकाउंट को क्लाइंट, प्लेटफ़ॉर्म या क्षेत्र के अनुसार अलग करना हो, तो वातावरण समूहों से बिज़नेस अकाउंट अलग-अलग फ़ोल्डर में रखे जा सकते हैं, और सदस्य अनुमतियाँ, शेयरिंग तथा ट्रांसफ़र तय करते हैं कि कौन कौन सा वातावरण खोल सकता है। ऑपरेशन लॉग में हर वातावरण कब और किसने खोला या बदला, यह दर्ज रहता है। अधिकृत स्क्रैपिंग पर सवाल उठने पर जल्दी से किसी खास अकाउंट और पहचाने गए ज़िम्मेदार व्यक्ति तक पहुँचा जा सकता है।
PurpleMark टीम को लंबे समय तक "अकाउंट, वातावरण, सेशन और जवाबदेही" को एक ही वर्कस्पेस में सँभालने में मदद करता है, लेकिन यह IP बैन, CAPTCHA, अकाउंट संख्या सीमा या किसी साइट की ऑटोमेशन-रोधी सुरक्षा को दरकिनार करने के लिए नहीं है। पहले अनुमति लें, फिर ऑटोमेशन की बात करें।
रखरखाव-योग्य स्क्रैपिंग आर्किटेक्चर
पाँच परतों का उपयोगी बँटवारा:
- शेड्यूलिंग: दर, कॉन्करेंसी, कार्य प्राथमिकता और रोक नियंत्रित करता है;
- एक्सेस: API, HTTP, या अधिकृत ब्राउज़र सेशन;
- पार्सिंग: प्रतिक्रियाओं को संरचित फ़ील्ड में बदलता है;
- क्वालिटी: डी-डुप्लिकेशन, टाइप जाँच, मिसिंग फ़ील्ड अलर्ट, संस्करण लॉग;
- गवर्नेंस: अनुमतियाँ, स्रोत, उद्देश्य, रिटेंशन अवधि, डिलीशन।
हर रिकॉर्ड में स्रोत URL, संग्रह का समय और पार्सर संस्करण रखें। गलती होने पर पूरी साइट दोबारा क्रॉल करने के बजाय प्रभावित रिकॉर्ड को खोजकर फिर से चलाया जा सकता है।
अक्सर पूछे जाने वाले सवाल
क्या प्रॉक्सी रोटेट करने से IP बैन दूर हो जाता है?
शायद थोड़ी देर के लिए एग्ज़िट एड्रेस बदल जाए, लेकिन दर, अनुमति या व्यवहार की समस्या दूर नहीं होती। पहुँच बनाए रखने के लिए प्रॉक्सी रोटेट करना बायपास माना जा सकता है। पहले काम रोकें, अनुरोध कम करें और साइट से संपर्क करें।
क्या CAPTCHA को अपने आप हल किया जा सकता है?
नहीं। CAPTCHA रुकने या इंसान से पुष्टि कराने का संकेत है। निरंतर ऑटोमेशन के लिए API, सर्विस अकाउंट या व्हाइटलिस्ट माँगें।
अगर robots.txt अनुमति देता है, तो हमेशा स्क्रैप कर सकते हैं?
ज़रूरी नहीं। robots.txt कोई एक्सेस अनुमति नहीं है; शर्तें, कॉपीराइट, गोपनीयता, अनुबंध और डेटा का उद्देश्य भी देखने होते हैं।
क्या फ़िंगरप्रिंट ब्राउज़र स्क्रैपिंग को "अदृश्य" बना देता है?
इसकी कोई गारंटी नहीं है, और यह लक्ष्य भी नहीं होना चाहिए। यह वैध अकाउंट सेशन और टीम अनुमतियों को अलग रखने, कुकी की भूल-चूक और गलत संचालन कम करने के लिए बेहतर है।
समापन
वेब स्क्रैपिंग की सीमाएँ सिर्फ़ "तकनीकी एंटी-बॉट समस्या" नहीं हैं। 403, 429, फ़िंगरप्रिंटिंग, CAPTCHA और मल्टी-अकाउंट सीमाएँ सब मिलकर अनुमति, लोड और पहचान प्रबंधन की ओर इशारा करती हैं।
स्थिर तरीका हमेशा API-पहले, स्पष्ट अनुमति, संयमित अनुरोध, इंक्रीमेंटल कैश, टेस्ट करने योग्य पार्सिंग और ऑडिट-योग्य अकाउंट पर लौटता है। CAPTCHA या ब्लॉक मिलने पर ऑटोमेशन का स्रोत छिपाने के बजाय प्रक्रिया रोककर ठीक करें।


