
Lucas Mitchell
Automation Engineer

एक स्क्रैपर अधिक अनुरोध शुरू कर सकता है और कम उपयोगी डेटा एकत्र कर सकता है। धीमी प्रतिक्रियाएं जड़ता को बरकरार रखती हैं, कार्यकर्ता विफल प्रयासों को दोहराते हैं, और अनुरोध बैकलॉग विफल प्रयासों की प्रतिलिपि से भर जाता है। फिर कार्यकर्ता संख्या बढ़ाना समान बैकलॉग को बढ़ा सकता है। उपयोगी प्रदर्शन मापदंड स्वीकृत डेटा के वितरण के साथ कार्य की अंतिम तिथि के भीतर होता है, न कि शुरू किए गए अनुरोधों की संख्या।
इस गाइड में एक अनुमति प्राप्त संग्रह प्रक्रिया के लिए स्क्रैपिंग समकालिकता सीमा कैसे सेट करें, इसका वर्णन किया गया है। यह स्रोत-स्तरीय प्रवेश, पुनर्प्रयास योजना, ब्राउजर क्षमता और नियंत्रित ट्यूनिंग प्रक्रिया को कवर करता है। CapSolver जब अनुमति प्राप्त प्रक्रिया की आवश्यकता होती है, तो एक अलग समर्थित CAPTCHA कार्य चरण में फिट होता है। बड़े कार्यकर्ता समूह या पूरा किया गया चुनौती स्रोत की दर नीति को बदल नहीं सकता, इसलिए स्केड्यूलर को पूरे चलाने के दौरान नियंत्रण बनाए रखना आवश्यक है।
समकालिकता वर्तमान में उड़ान में ऑपरेशन की संख्या है, जबकि अनुरोध दर समय के आधार पर शुरू होने की मात्रा को मापती है। एक समकालिकता सीमा अकेले एक स्थिर अनुरोध दर सुनिश्चित नहीं करती है क्योंकि उत्तर समय अकेले ले जाता है कि कितनी जल्दी स्लॉट उपलब्ध हो जाते हैं।
एक अनुमति परीक्षण स्रोत के चार सक्रिय अनुरोध स्लॉट हो सकते हैं। यदि अनुरोध तेजी से समाप्त होते हैं, तो इन स्लॉट कई शुरू होने के लिए एक छोटी अवधि में उत्पन्न कर सकते हैं। यदि प्रतिक्रिया धीमी हो जाती है, तो उसी चार स्लॉट अधिक समय बिताते हुए कम शुरू होते हैं। दोनों व्यवहार समकालिकता सीमा के अधीन हैं। जब शुरू होने की समय-आधारित अनुमति बनाए रखनी होती है, तो एक अलग दर नियंत्रक की आवश्यकता होती है।
समकालिकता शब्दकोश और दर सीमा शब्दकोश संबंधित अवधारणाओं का वर्णन करते हैं। अपने स्केड्यूलर में इन्हें अलग सेटिंग के रूप में रिकॉर्ड करें। अधिकतम प्रतीक्षा बैकलॉग और कार्य की अंतिम तिथि जोड़ें ताकि देरी वाले कार्य अनंत रूप से अन्य सामान्य सीमाओं के पीछे एकत्र न हो सकें।
कोई भी सार्वभौमिक सर्वोत्तम संख्या समकालिक अनुरोध नहीं है। स्रोत नीति, पैकेट आकार, ब्राउजर रेंडरिंग, बैंडविड्थ और नीचे के प्रसंस्करण सभी उपयोगी कार्यात्मक बिंदु को प्रभावित करते हैं। स्रोत के दस्तावेजीकृत अनुमति और अपनी क्षमता से शुरू करें, फिर स्पष्ट रूप से अनुमति प्राप्त भार को मापें।
एक समकालिकता सीमा के लिए कार्यकर्ता के लिए आवश्यक है जो एक ही क्षमता या अनुमति के प्रतिस्पर्धा करते हैं। जब कई प्रक्रियाएं, मशीनें या कार्य समान सीमित स्रोत तक पहुंचते हैं, तो प्रति-प्रक्रिया सेटिंग पर्याप्त नहीं होती है।
कार्यकर्ता बनाने से पहले संबंधित स्कोप की पहचान करें। यह एक होस्टनाम, एक API प्रमाणपत्र, एक स्रोत-निर्धारित खाता अनुमति, या एक नियंत्रित ब्राउजर सत्र हो सकता है। प्रदाता द्वारा वर्णित स्कोप का उपयोग करें, न कि प्रत्येक URL के स्वतंत्र क्षमता के बारे में मान लें। उपडोमेन भी संरचना या खाता-स्तरीय अनुमति साझा कर सकते हैं।
ग्लोबल क्षमता को स्रोत क्षमता से अलग करें। एक ग्लोबल ऊपरी सीमा आपकी मशीनों और बाहरी संसाधनों की रक्षा करती है। प्रति-स्रोत ऊपरी सीमा एक तेज बैकलॉग द्वारा सभी उपलब्ध स्लॉट के उपभोग को रोकती है। यदि स्रोत अस्थायी रूप से रोक दिया गया है, तो अन्य स्वतंत्र रूप से अनुमति प्राप्त स्रोत अपने रोके गए स्रोत के पहचान या अनुमति के बिना जारी रख सकते हैं।
ब्राउजर कार्य प्रवाह के लिए, निर्धारित करें कि कौन सा स्लॉट ले लेता है: एक नेविगेशन, एक सक्रिय पृष्ठ, या पूरा सत्र। एक खाता-संबद्ध सत्र को समानांतर कार्यों के बीच आसानी से साझा नहीं करना चाहिए। इसके कुकीज, लंबित कार्रवाई और अपेक्षित लक्ष्य के लिए कार्य के दौरान एक मालिक की आवश्यकता होती है।
प्रवेश को अनुरोध शुरू होने से पहले होना चाहिए और इसे प्रारंभिक प्रयास, पुनर्निर्देश जो आपके क्लाइंट द्वारा नियंत्रित होते हैं, और कार्यकर्ता पुनरारंभ के लिए समान रूप से लागू करना चाहिए। एक पुनर्प्रयास पथ जो सीधे ट्रांसपोर्ट में भेजता है, स्केड्यूलर की सीमाओं के मुख्य नियंत्रण को अस्वीकृत कर सकता है।
एक कार्य पहचान का उपयोग अवलोकन के लिए करें और ट्रांसपोर्ट कार्य के लिए अलग प्रयास पहचान का उपयोग करें। इससे बैकलॉग को एक वैध पुनर्प्रयास के साथ एक दोहराए गए योजना कार्य के बीच अलग करने में सक्षम बनाता है। यदि एक कार्यकर्ता पुनरारंभ करता है, तो इसे अवलोकन पहले से पूरा हो गया है या नहीं, इसकी जांच करनी चाहिए जब तक कि एक अन्य अनुरोध नहीं बनाया जाता है।
एक स्लॉट को जब आवश्यक ऑपरेशन वास्तव में समाप्त हो जाता है या इसके ट्रांसपोर्ट को रद्द कर दिया जाता है, तो छोड़ देना चाहिए। केवल उपयोगकर्ता इंतजार करना बंद कर देता है, तो छिपे हुए अनुरोध नाममात्र सीमा से बाहर चले जा सकते हैं। अनिश्चित या अभी भी चल रहे कार्य को विस्तारित क्षमता माना जाना चाहिए जब तक इसकी स्थिति समाप्त नहीं हो जाती है।
बैकलॉग को भी सीमित करें। जब बहुत सारा कार्य आता है, तो बाद के संग्रह खिंचाव को टालें, अतिरिक्त मांग को अस्वीकृत करें, या अपने सेवा समझौते के अनुसार अनुरोध के स्कोप को कम करें। असीमित बैकलॉग विफलता को स्मृति दबाव और जीर्ण अवलोकन में स्थानांतरित करता है।
पुनर्प्रयास को एक नियंत्रित बैकलॉग में वापस भेजें जिसमें भविष्य की योग्यता समय, प्रयास की संख्या और शेष कार्य की अंतिम तिथि होती है। कार्यकर्ता में फैले सो जाने के कॉल नियंत्रित स्रोत के ठंडा होने के लिए समन्वय करने में कठिनाई पैदा करते हैं।
HTTP 429 स्थिति यह दर्शाता है कि एक संबंधित अवधि के भीतर बहुत सारे अनुरोध भेजे गए हैं। जब उत्तर में Retry-After शामिल होता है, तो इसके देरी या तारीख अर्थ को बरकरार रखें। प्रत्येक कार्यकर्ता एक छोटा इंतजार चुनने से रोकें।
प्रभावित स्कोप के लिए एक साझा ठंडा होने का उपयोग करें। जब ठंडा होना सक्रिय होता है, तो नए कार्यों के प्रवेश को रोकें, जिसमें विफल रहे अनुरोध भी शामिल हैं। अब तक चल रहे कार्य पूरा हो सकते हैं, लेकिन एक कार्यकर्ता द्वारा सफल उत्तर दूसरे द्वारा अवलोकित वैध ठंडा होने को अस्वीकृत नहीं कर सकता है।
अस्थायी पठन समय सीमा अतिक्रमण के बिना, एक बाध्य पुनर्प्रयास नीति का उपयोग ऑपरेशन के अनुरूप करें। एक असमान योजना अवधि के बाद समन्वित झटके बचा सकती है। एक फॉर्म जमा करने या अन्य राज्य बदलने वाली ऑपरेशन में पुनर्प्रयास न करें, जब तक कि इसके प्रभाव और दोहराव की विशेषता समझ नहीं होती है।
| अवलोकन | स्केड्यूलर प्रतिक्रिया | साबित करने के लिए साक्ष्य बनाए रखें |
|---|---|---|
| HTTP 429 | प्रभावित स्कोप को रोकें और पुनर्प्रयास दिशा-निर्देश का सम्मान करें | स्रोत स्कोप, उत्तर समय, ठंडा होना |
| अस्थायी पठन समय सीमा अतिक्रमण | केवल प्रयास और अंतिम तिथि बजट के भीतर फिर से बैकलॉग करें | प्रयास पहचान और शेष समय |
| प्रमाणीकरण या पहुंच अस्वीकृति | रोकें या पहुंच समीक्षा के लिए रास्ता बदलें | रद्द किया गया उत्तर श्रेणी |
| समर्थित CAPTCHA चेकपॉइंट | एक अलग अनुमति चुनौती चरण में प्रवेश करें | वर्तमान अवलोकन और चुनौती संदर्भ |
| अमान्य निकाला रिकॉर्ड | विश्लेषण या स्रोत डेटा की जांच करें | बरकरार रखे गए पृष्ठ संदर्भ और सत्यापन त्रुटि |
अपना CapSolver बोनस कोड उपयोग करें
अपने स्वचालन बजट को तत्काल बढ़ाएं!
CapSolver खाता में जमा करते समय बोनस कोड CAP26 का उपयोग करें ताकि प्रत्येक जमा पर 5% बोनस मिले — कोई सीमा नहीं।
अपने CapSolver डैशबोर्ड में अब इसे उपयोग करें
एक CAPTCHA चेकपॉइंट एक नियंत्रित हस्तांतरण बनाए, न कि स्क्रैपर के साथ एक अतिरिक्त अनुरोध लूप। लक्ष्य अवलोकन एक कार्य रहता है भले ही इसके लिए एक समर्थित चुनौती चरण की आवश्यकता हो।
CapSolver createTask दस्तावेज़ टास्क सबमिशन की परिभाषा करता है, जबकि getTaskResult परिणाम प्राप्त करने की विवरण करता है। लागू टास्क मानदंडों का पालन करें और वापस किए गए टास्क पहचान को वर्तमान अवलोकन से जोड़ें। ज्ञात टास्क की जांच करना और एक नई टास्क बनाना अलग कार्य हैं।
इस चरण के लिए अपनी एक्टिव वर्क, समय और प्रयास के लिए अलग सीमा निर्धारित करें। जब ब्राउजर फिर से शुरू होता है, तो लक्ष्य की दर अनुमति अभी भी लागू होती है। एक चुनौती परिणाम एक स्रोत ठंडा होने के लिए एक तत्काल अपवाद नहीं होना चाहिए या सभी रोके गए कार्यकर्ता को एक साथ फिर से शुरू करना नहीं होना चाहिए।
यदि एक टास्क सबमिशन अपनी स्वीकृति के बिना समय सीमा से बाहर हो जाता है, तो अनिश्चितता को बरकरार रखें। अंधाधुंध एक और टास्क सबमिशन करना कार्य के दोहराव का कारण बन सकता है। स्केड्यूलर को यह जानना चाहिए कि क्या वह एक अस्तित्व में परिणाम की प्रतीक्षा कर रहा है, एक अनिश्चित अनुरोध की जांच कर रहा है, या जांच के लिए अवलोकन को बंद कर रहा है।
लक्ष्य आगे बढ़ जाने के बाद, अपेक्षित पृष्ठ की पुष्टि करें और संधि के रूप में रिकॉर्ड करें। अन्यथा, बढ़े हुए चुनौती प्रवाह यह छिपा सकता है कि स्वीकृत संग्रह आउटपुट में सुधार नहीं हुआ है।
एक समकालिकता बढ़ाने के लिए एक ही क्षमता सेटिंग को बदलें जबकि तुलना कार्यभार और स्वीकृति मानदंड स्थिर रहे। एक स्वामित्व टेस्ट स्रोत या अन्य पर्यावरण का उपयोग करें जहां लोड परीक्षण स्पष्ट रूप से अनुमति है।
छोटे अनुमति भार के साथ शुरू करें और पूर्ण अवलोकन, स्वीकृत रिकॉर्ड, अनुरोध देरी, त्रुटि श्रेणियां और बैकलॉग आयु को रिकॉर्ड करें। अनुरोध प्रवेश के लिए बिताए गए समय को नेटवर्क या ब्राउजर में बिताए गए समय से अलग करें। एक लंबा अंत-से-अंत अवधि अलग कारणों के कारण हो सकती है जिनके लिए अलग समाधान की आवश्यकता होती है।
पहले प्रयास और पुनर्प्रयास को एक ही रिपोर्ट में दृश्य रखें। यदि स्वीकृत रिकॉर्ड स्थिर रहते हैं लेकिन कुल अनुरोध बढ़ते हैं, तो अतिरिक्त ट्रैफिक उपयोगी प्रवाह उत्पन्न नहीं करता है। पहले कार्यकर्ता जोड़ने से पहले जांचें कि पुनर्प्रयास नीति, पृष्ठ तैयारी या नीचे के सत्यापन अंतर के लिए उत्तरदायी हैं।
सीमा को एक छोटे पूर्वनिर्धारित चरण द्वारा बढ़ाएं और एक समान अवधि के लिए अवलोकन करें। जब स्वीकृत प्रवाह तल में रहता है, त्रुटि आवृत्ति बढ़ती है या पिछली देरी टास्क की आवश्यकता से अधिक होती है, तो बढ़ाना बंद कर दें। इन अवलोकनों ने उस कार्यभार के लिए एक क्षमता सीमा निर्धारित की है; यह पूरे प्रदाता की सीमा के लिए एक स्थायी सीमा साबित नहीं करता है।
विभिन्न डेटा आकार और पृष्ठ प्रकार के लिए प्रतिनिधि मामलों को दोहराएं। एक हल्का HTML पृष्ठ और एक जावास्क्रिप्ट-भारित डैशबोर्ड बहुत अलग ब्राउजर संसाधनों की आवश्यकता हो सकती है। अपने ऑपरेटिंग सीमा केवल सबसे आसान पृष्ठों से चुनने से बचें।
अस्थायी सीमा के नीचे एक ऑपरेटिंग बिंदु चुनें बजाय लगातार उच्चतम मान पर चलाएं। स्रोत प्रदर्शन और आपकी स्वयं की बुनियादी संरचना में भिन्नता हो सकती है। योजना कार्य के लिए क्षमता बचाएं और खोज कार्यों को पूरे पूल पर अधिकार न दें।
स्वचालित थ्रॉटलिंग अवलोकित देरी के आधार पर अनुरोध समय को अनुकूलित कर सकती है, लेकिन इसके व्यवहार अनुप्रयोग और कॉन्फ़िगर की गई सीमाओं पर निर्भर करता है। दूसरे स्केड्यूलर के साथ इसका उपयोग करने से पहले उपयोग करने वाले फ्रेमवर्क के दस्तावेज़ को पढ़ें।
Scrapy AutoThrottle दस्तावेज़ एक लक्ष्य समकालिकता और देरी आधारित अनुकूलन के बारे में बताता है जबकि कॉन्फ़िगर की गई समकालिकता के छत का सम्मान करता है। इसका लक्ष्य एक अनिवार्य वादा नहीं है कि एक निश्चित संख्या में अनुरोध हमेशा सक्रिय रहेंगे। असफल उत्तर भी देरी की गणना में विशेष उपचार प्राप्त करते हैं।
फ्रेमवर्क-विशिष्ट नियंत्रण का उपयोग उनके दस्तावेज़ के द्वारा निर्धारित सीमा में करें। एक खोजकर्ता के स्थानीय थ्रॉटल अन्य डेप्लॉयमेंट के साथ समन्वय नहीं करता है या संगठन के कुल अनुमति निर्धारित नहीं करता है। यदि कई कार्य एक अनुमति के साथ साझा करते हैं, तो उन स्वतंत्र कार्यकर्ता के ऊपर एक साझा नियंत्रक रखें।
प्रत्येक चलाने के लिए उपयोग की गई प्रभावी कॉन्फ़िगरेशन को रिकॉर्ड करें। यदि फ्रेमवर्क, ट्रांसपोर्ट पूल, पुनर्प्रयास मिडलवेयर और बाहरी स्केड्यूलर सभी एक साथ बदल जाते हैं, तो एक समकालिकता प्रयोग को पुनर्प्राप्त करना कठिन होता है। ब्राउजर बुनियादी संरचना समीक्षा इन संसाधनों के अलग करने के लिए उपयोगी संदर्भ प्रदान करता है।
कम स्वीकृत बैकलॉग नेटवर्क, स्रोत, ब्राउजर, पार्सर या लक्ष्य स्टोर से आ सकता है। अधिक फेच कार्यकर्ता केवल कुछ बैकलॉग को सुधारते हैं और अन्य को बर्बाद कर सकते हैं।
यदि बैकलॉग बढ़ रहा है जबकि नेटवर्क स्लॉट अकेले रहते हैं, तो प्रवेश और ठंडा होने के तकनीक की जांच करें। यदि ब्राउजर मेमोरी बढ़ रही है, तो सत्र की अवधि और पृष्ठ साफ करने की जांच करें। यदि अनुरोध पूरा हो जाते हैं लेकिन रिकॉर्ड अस्वीकृत कर दिए जाते हैं, तो सामग्री तैयारी, स्कीमा परिवर्तन और पार्सर व्यवहार की जांच करें। यदि स्वीकृत रिकॉर्ड स्टोर करने के लिए प्रतीक्षा कर रहे हैं, तो नीचे के लिखने वाले से बैकप्रेशर लागू करें।
एक स्पष्ट रोक प्रक्रिया रखें। ऑपरेटरों को एक स्रोत के लिए नए शुरू करने को रोकना चाहिए, अंतर्निहित कार्य पहचान को बरकरार रखना चाहिए और समस्या के बारे में समझे बिना धीरे-धीरे फिर से शुरू करना चाहिए। एक साथ सभी कार्यकर्ता को फिर से शुरू करना एक नियंत्रित पुनर्खोल के बजाय एक खराब विकल्प है।
स्क्रैपिंग समकालिकता स्रोत नीति, वास्तविक संसाधन स्वामित्व और स्वीकृत रिकॉर्ड के आसपास सेट करें। प्रत्येक प्रयास को प्रवेश में मार्गदर्शन करें, कोओलडाउन को समन्वित करें और केवल जब पूरा पाइपलाइन लाभ प्राप्त करता है, तो भार बढ़ाएं।
समर्थित CAPTCHA निपटान की आवश्यकता वाले प्रक्रियाओं के लिए, CapSolver का उपयोग एक अलग सीमित चरण में करें और फिर से उसी स्रोत नियंत्रण में वापस आएं। एक विनम्र स्केड्यूलर सिस्टम को बदलते हुए लोड और पृष्ठ व्यवहार के साथ अधिक आसान बनाता है।
प्रश्न: क्या समकालिकता सीमा, प्रति सेकंड अनुरोध सीमा के बराबर है?
उत्तर: नहीं। समकालिकता सक्रिय ऑपरेशन को सीमित करती है। अनुरोध दर सीमाएं समय के आधार पर शुरू होती हैं, इसलिए आपको दोनों नियंत्रक की आवश्यकता हो सकती है।
प्रश्न: क्या प्रत्येक कार्यकर्ता HTTP 429 के स्वतंत्र रूप से नियंत्रित करता है?
उत्तर: एक ही दर सीमित स्कोप वाले कार्यकर्ता अपने कूलडाउन के समन्वय करना चाहिए। स्वतंत्र पुनर्प्रयास एक बर्स्ट फिर से उत्पन्न कर सकते हैं जब एक कार्यकर्ता अपने आप को आशावादी दिखाता है।
प्रश्न: क्या अस्पष्ट स्क्रैपिंग को समकालिकता बढ़ाकर ठीक किया जा सकता है?
उत्तर: केवल जब अतिरिक्त क्षमता स्रोत की अनुमति सीमा के भीतर स्वीकृत आउटपुट में सुधार करती है। पहले यह निर्धारित करें कि अधिग्रहण, रेंडरिंग, पार्सिंग या संग्रहण बैकलॉग है।
प्रश्न: क्या CAPTCHA परिणाम एक अनुरोध को स्केड्यूलर से बाहर छोड़ सकता है?
उत्तर: नहीं। चुनौती निपटान पूरा होने के बाद भी लक्ष्य की दर और समकालिकता नियम लागू रहते हैं।
प्रश्न: जब नीचे के स्टोर अग्रेषित हो जाता है, तो क्या होना चाहिए?
उत्तर: पीछे की ओर से बैकप्रेशर के माध्यम से नए अधिग्रहण को कम करें या रोकें। असीमित बैकलॉग वाले फेच किए गए पृष्ठ अधिक संसाधन उपयोग करते हैं और अपने स्वीकृति से पहले अवलोकन जीर्ण हो सकते हैं।
Rust में वेब स्क्रैपिंग के स्केलेबल आर्किटेक्चर सीखें, reqwest, scraper, असिंक्रोनस स्क्रैपिंग, हेडलेस ब्राउज़र स्क्रैपिंग, प्रॉक्सी रोटेशन, और संगत CAPTCHA का निपटारा।

CapSolver के साथ RoxyBrowser के एकीकरण करें ताकि ब्राउज़र के कार्यों को स्वचालित किया जा सके और reCAPTCHA, Turnstile और अन्य CAPTCHAs को बायपास किया जा सके।
