रियल-टाइम वेब स्क्रैपिंग: एक व्यावहारिक ताजगी आर्किटेक्चर गाइड
Lead Scraping Automation Engineer
TL;DR:
- वास्तविक समय वेब स्क्रैपिंग एक ताजगी प्रतिबद्धता है, यह वादा नहीं है कि हर पृष्ठ को तुरंत प्रोसेस किया जाएगा। निर्धारित करें कि उपभोक्ता के पास पहुँचने पर डेटा कितना पुराना हो सकता है, फिर उस सीमा से पीछे की ओर पाइपलाइन को डिजाइन करें।
- महत्वपूर्ण मार्ग ट्रिगर → रेंडर या फ़ेच → निकालें → प्रकाशित करें। प्रत्येक चरण को अलग से मापें ताकि एक धीमा ब्राउज़र, भरा हुआ कतार, या विलंबित उपभोक्ता एक औसत के भीतर छिप न सकें।
- लाइव वेब स्क्रैपिंग सबसे अच्छा तब काम करता है जब अनुरोध चयनात्मक होते हैं। घटना संकेत, परिवर्तन पहचान, कैशिंग और डेडुप्लिकेशन महत्वपूर्ण कार्यों को कम मूल्य वाले कार्यों के साथ प्रतिस्पर्धा से रोकते हैं।
- स्क्रेपलेस स्क्रैपिंग ब्राउज़र गतिशील पृष्ठों के लिए प्रबंधित ब्राउज़र सत्र प्रदान करता है। आपका सिस्टम अभी भी अनुसूची, ताजगी नीति, सामान्यीकरण, संग्रहण और अवलोकन का मालिक है।
वास्तविक समय वेब स्क्रैपिंग तब उपयोगी होता है जब मूल्य, स्टॉक फ़्लैग, टिकट, मार्केट सिग्नल, या जोखिम संकेत जल्दी से मूल्य खो देते हैं। एक तेज़ ब्राउज़र रन केवल एक घटक है; संपूर्ण डेटा पथ को स्रोत पृष्ठ से उपभोक्ता प्रणाली तक मापनीय ताजगी की आवश्यकता होती है।
यह मार्गदर्शिका लाइव वेब स्क्रैपिंग और वास्तविक समय डेटा निष्कर्षण के लिए एक व्यावहारिक ताजगी आर्किटेक्चर प्रस्तुत करती है। यह दिखाती है कि वेब स्क्रैपिंग विलंबता कहाँ फैली हुई है, ब्राउज़़र रेंडरिंग और हल्के संग्रह पथों के बीच कैसे चुनना है, और बिना नियंत्रित डुप्लिकेट कार्य का प्रवाह उत्पन्न किए बिना संरचित डेटा को कैसे प्रकाशित करना है।
वास्तविक समय वेब स्क्रैपिंग पाइपलाइन एक नज़र में
एक उत्पादन पाइपलाइन में चार परिचालन चरण और एक नियंत्रण तल होता है:
- ट्रिगर: यह तय करें कि कौन-सा URL अवलोकन की आवश्यकता है और यह अब क्यों महत्वपूर्ण है।
- रेंडर या फ़ेच: लक्ष्य के लिए आवश्यक प्रतिनिधित्व प्राप्त करें।
- निकालें और सामान्यीकृत करें: पृष्ठ-विशिष्ट साक्ष्यों को एक स्थिर योजना में परिवर्तित करें।
- प्रकाशित करें: एक संस्करणित रिकॉर्ड को एक कतार, डेटाबेस, वेबहुक, या एप्लिकेशन में भेजें।
- अवलोकन करें: प्रत्येक चरण में आयु, समयावधि, कतार की गहराई, त्रुटियों, और फेंके गए डुप्लिकेट्स को मापें।
टाइमस्टैम्प को डेटा अनुबंध का हिस्सा मानें। न्यूनतम, triggered_at, collection_started_at, observed_at, और published_at बनाए रखें। observed_at और published_at के बीच का अंतर वितरण विलंबता है; स्रोत के परिवर्तन समय और published_at के बीच का अंतर विश्वसनीय परिवर्तन समय प्रकट करने पर अंत-से-अंत ताजगी है।
"वास्तविक समय" का वास्तव में क्या अर्थ है?
“वास्तविक समय” कई सेवा स्तरों का वर्णन कर सकता है। एक मूल्य अलर्ट को एक मिनट के भीतर एक अवलोकन की आवश्यकता हो सकती है, जबकि एक उत्पाद कैटलॉग पंद्रह मिनट सहन कर सकता है। यदि ताजगी का उद्देश्य व्यापार निर्णय के साथ मेल खाता है तो दोनों लाइव सिस्टम हो सकते हैं।
शब्द को ठोस बनाने के लिए चार स्तरों का उपयोग करें:
| स्तर | ट्रिगर मॉडल | सबसे अच्छा फिट | मुख्य व्यापार |
|---|---|---|---|
| मांग पर | उपयोगकर्ता या एप्लिकेशन अनुरोध | एक बार सत्यापन | अनियोजित फट |
| अनुसूचित | निश्चित या अनुकूली पॉलिंग | ज्ञात परिवर्तित पृष्ठ | कुछ जांचें कोई परिवर्तन नहीं मिलता |
| घटना सहायता | साईटमैप, फीड, वेबहुक, या अपस्ट्रीम सिग्नल | उपयोगी परिवर्तन संकेत वाले स्रोत | संकेत में पूर्ण सामग्री नहीं हो सकती |
| निरंतर | लंबी अवधि की स्ट्रीम या अवलोकन सत्र | तेज़ी से बढ़ते, उच्च-मूल्य वाले सर्फेस | उच्चतम संचालन जटिलता |
एक घटना रिकॉर्ड में दोनों घटना डेटा और संदर्भ होना चाहिए। CloudEvents विशिष्टीकरण उत्पादकों और उपभोक्ताओं के बीच घटनाओं का वर्णन करने के लिए एक विक्रेता-तटस्थ मॉडल प्रदान करता है, जो तब उपयोगी संदर्भ है जब एक स्क्रैपिंग ट्रिगर सेवाओं के बीच क्रॉस करना होता है।
ताजगी बजट को परिभाषित करें
एक अधिकतम स्वीकार्य आयु के साथ शुरू करें, फिर प्रत्येक चरण को समय आवंटित करें। एक 30-सेकंड का उद्देश्य कतार में प्रवेश, पृष्ठ अधिग्रहण, निष्कर्षण, प्रकाशन, और एक सुरक्षा सीमा के लिए समय सुरक्षित रख सकता है। सटीक संख्याएँ आपके लक्ष्यों और बुनियादी ढाँचे से आनी चाहिए; किसी अन्य टीम का औसत न उधार लें।
एक बजट कार्यपत्र इस तरह दिख सकता है:
| चरण | लक्ष्य | मापी गई प्रतिशत | मालिक | बजट से अधिक होने पर कार्रवाई |
|---|---|---|---|---|
| कतार प्रवेश | टीम द्वारा परिभाषित | रिकॉर्ड p50/p95/p99 | शेड्यूलर | निम्न प्राथमिकता के कार्यों को हटाएँ |
| ब्राउज़र कनेक्शन | टीम द्वारा परिभाषित | रिकॉर्ड p50/p95/p99 | ब्राउज़र प्लेटफ़ॉर्म | सत्र क्षमता की समीक्षा करें |
| नेविगेशन और रेंडरिंग | लक्ष्य-विशिष्ट | रिकॉर्ड p50/p95/p99 | कलेक्टर | पृष्ठ और प्रतीक्षा स्थिति की जांच करें |
| निष्कर्षण | योजना-विशिष्ट | रिकॉर्ड p50/p95/p99 | पार्सर | चयनकर्ताओं और ट्रांसफॉर्म को प्रोफाइल करें |
| प्रकाशन | उपभोक्ता-विशिष्ट | रिकॉर्ड p50/p95/p99 | डेटा प्लेटफ़ॉर्म | ब्रोकर या डेटाबेस की जांच करें |
प्रतिशत महत्वपूर्ण हैं क्योंकि एक औसत स्वस्थ दिख सकता है जबकि रिकॉर्ड का एक महत्वपूर्ण हिस्सा देर से पहुँचता है। उपभोक्ताओं को वास्तव में आवश्यकता के खिलाफ सेवा उद्देश्य को परिभाषित करें।
स्क्रेपलेस से स्क्रैपिंग शुरू करें
स्क्रैपलेस के साथ अपने वेब स्क्रैपिंग और स्वचालन कार्य प्रवाह को सक्रिय करें!
आज ही साइन अप करें और $5 का मुफ्त क्रेडिट प्राप्त करें — क्रेडिट कार्ड की आवश्यकता नहीं है।
अपने मुफ्त क्रेडिट को अब Scrapeless Dashboard में दावा करें।
चरण 1: केवल मूल्यवान काम को सक्रिय करें
एक ट्रिगर को लक्ष्य, प्राथमिकता, कारण, इच्छित ताजगी, और डीडुप्लिकेशन कुंजी को स्पष्ट रूप से बताना चाहिए। यह "इसे लगातार स्क्रैप करें" को शेड्यूलर का एकमात्र नियम बनने से रोकता है।
निर्धारित संग्रह के लिए, परिवर्तनों की आवृत्ति और व्यावसायिक मूल्य के आधार पर एक अंतराल का उपयोग करें। घटना-सहायता प्राप्त संग्रह के लिए, एक साइटमैप अपडेट, फीड प्रविष्टि, इन्वेंट्री इवेंट, या उपयोगकर्ता क्रिया स्वीकार करें, फिर पृष्ठ की पुष्टि करें। मांग पर संग्रह के लिए, क्षमता आरक्षित करें ताकि इंटरएक्टिव कार्य बैच कार्य के पीछे न रहें।
ब्राउज़र आवंटन से पहले डीडुप्लिकेट करें। यदि दस उपभोक्ता एक ही यूआरएल और ताजगी विंडो के लिए पूछते हैं, तो एक संग्रह परिणाम सभी दस को संतोष दिला सकता है। एक छोटा जीवनकाल वाला अनुरोध कुंजी बनाए रखें जो कैनॉनिकल यूआरएल, स्थान, सत्र श्रेणी, और निष्कर्षण स्कीमा संस्करण से निर्मित हो।
चरण 2: आवश्यक प्रतिनिधित्व को रेंडर या फ़ेच करें
सबसे कम खर्चीले मार्ग का चयन करें जो आपको आवश्यक सबूत लौटाए। स्थिर एचटीएमएल सर्वर-रेंडर्ड पृष्ठों के लिए पर्याप्त हो सकता है। जब सामग्री JavaScript, इंटरएक्शन, क्लाइंट-साइड अनुरोधों, या एक अनुमोदित प्रमाणित सत्र पर निर्भर करती है, तो एक ब्राउज़र उपयुक्त है।
ब्राउज़र कार्यों के लिए, डिफ़ॉल्ट पर भरोसा करने के बजाय परिचालन मापदंड निर्दिष्ट करें:
- सत्र का दायरा: असंबंधित खातों को आइसोलेट करें और केवल अनुमोदित स्थिति का पुन: उपयोग करें।
- संवहनीयता: कार्यभार और योजना स्तर पर सक्रिय सत्रों की अधिकतम सीमा निर्धारित करें।
- स्थान: उस मार्केट का चयन करें जिसे अवलोकन का प्रतिनिधित्व करने के लिए बनाया गया है।
- प्रतीक्षा स्थिति: किसी विशेष तत्व या प्रतिक्रिया की प्रतीक्षा करें, न कि एक मनचाही लंबी चिंता की।
- पूर्णता की स्थिति: एक बार जब आवश्यक सबूत मौजूद हो, तो रुकें।
Scrapeless Scraping Browser दस्तावेज़ ब्राउज़र कनेक्शन मॉडल को समझाता है। एक प्रबंधित सत्र स्थानीय ब्राउज़र बेड़े के काम को हटा देता है, लेकिन यह आपकी कतार, स्कीमा, या ताजगी नीति को प्रतिस्थापित नहीं करता है।
चरण 3: DOM पार्स करने से पहले संरचित डेटा खोजें
एक बार जब पृष्ठ लोड हो जाता है, तो ब्राउज़र के लिए पहले से उपलब्ध सबूतों का निरीक्षण करें। एक पृष्ठ JSON-LD, एम्बेडेड स्थिति, या एक नेटवर्क प्रतिक्रिया को उजागर कर सकता है जिसमें प्रदर्शित पाठ की तुलना में स्वच्छ फ़ील्ड होते हैं। एक प्रलेखित, स्थिर स्रोत को प्राथमिकता दें जब यह वही जानकारी प्रदान करता है जिसे उपयोगकर्ता देखते हैं और इसका उपयोग अधिकृत है।
निष्कर्षण को निर्धारित रखने के लिए बनाए रखें। स्रोत फ़ील्ड को product_id, price, currency, availability, source_url, और observed_at जैसे संस्करणित अनुबंध में मैप करें। एक संकुचित सबूत संदर्भ संग्रहीत करें ताकि एक परिवर्तनशील मान को बिना अनावश्यक व्यक्तिगत या प्रतिबंधित सामग्री को सेव किए बिना ऑडिट किया जा सके।
DOM निष्कर्षण तब भी आवश्यक है जब पृष्ठ स्वयं सत्य का स्रोत है। स्थिर अर्थों के लिए एंकर चयनकर्ताओं को संलग्न करें, आवश्यक फ़ील्ड मान्य करें, और अधूरे रिकॉर्ड को स्टाइल से भरने के बजाय लेबल करें।
चरण 4: निकालें, सामान्य करें, और मान्य करें
सामान्यीकरण स्पष्ट और उलटने योग्य होना चाहिए। केवल तभी मुद्राओं को परिवर्तित करें जब डाउनस्ट्रीम अनुबंध इसकी आवश्यकता करता है, कच्चे मूल्य को बनाए रखें, और विनिमय दर टाइमस्टैम्प संलग्न करें। देखे गए पृष्ठ के खिलाफ सापेक्ष यूआरएल को हल करें। स्रोत स्थानीयता के साथ क्षेत्र-विशिष्ट संख्याओं को पार्स करें, न कि मनमाने ढंग से विराम चिह्न हटाने से।
प्रकाशन से पहले मान्यता की आवश्यकता होती है:
- आवश्यक पहचानकर्ता मौजूद हैं;
- संख्यात्मक मान घोषित प्रकारों के भीतर हैं, अनुमानित व्यापारिक सीमाओं के भीतर नहीं;
- टाइमस्टैम्प में एक टाइमज़ोन है;
- स्कीमा संस्करण ज्ञात है;
- एक रिकॉर्ड जिसे बदला नहीं गया है उसे लेबल किया गया है और दबाया जा सकता है।
WHATWG URL मानक ब्राउज़र-संगत यूआरएल पार्सिंग के लिए उचित संदर्भ है। मेज़बानों, पथों, और प्रश्न पैरामीटरों के लिए नियमित अभिव्यक्तियों के बजाय एक सुसंगत यूआरएल पार्सर का उपयोग करें।
चरण 5: प्रकाशित करें और ताजगी पर नज़र रखें
एक अपरिवर्तनीय अवलोकन प्रकाशित करें, फिर उपभोक्ताओं को वर्तमान स्थिति बनाने दें। यह देर से या अनुचित घटनाओं को दृश्यमान बनाता है, बजाय इसके कि एक धीमी नौकरी नए रिकॉर्ड को अधिलेखित कर सके।
स्वीकृत ट्रिगर्स, डुप्लिकेट ट्रिगर्स, पूर्ण अवलोकनों, मान्यता विफलताओं, और देर से प्रकाशनों के लिए काउंटर को मापें। कतार में देरी, संग्रह अवधि, निष्कर्षण अवधि, प्रकाशन अवधि, और अंत-to-अंत आयु के लिए हिस्टोग्राम रिकॉर्ड करें। ओपनटेलीमेट्री एक मीट्रिक को समय और संबंधित मेटाडेटा के साथ एक रनटाइम माप के रूप में परिभाषित करता है; इसका मीट्रिक्स मॉडल इन उपकरणों के लिए एक उपयोगी आधार है।
एक उल्लंघन ताजगी उद्देश्य पर चेतावनी दें, न केवल अनुरोध विफलता पर। एक पाइपलाइन सफल प्रतिक्रियाएँ लौटा सकती है जबकि डेटा को बहुत देर से उपयोगी होने के लिए प्रदान करती है।
वास्तविक समय बनाम बैच: एक निर्णय मैट्रिक्स
| प्रश्न | वास्तविक समय को प्राथमिकता दें | बैच को प्राथमिकता दें |
|---|---|---|
| मूल्य कितनी जल्दी क्षीण होता है? | मिनट या सेकंड | घंटे या दिन |
| स्रोत कितनी बार बदलता है? | बार-बार या घटना-संकेतित | पूर्वानुमानित और दुर्लभ |
| क्या उपभोक्ता इंटरएक्टिव है? | हाँ | नहीं |
| क्या डुप्लीकेट पठन को समेटा जा सकता है? | अक्सर, छोटे कैश के साथ | सामान्यत: प्रत्येक बैच के भीतर |
| क्या एक चूका हुआ विंडो महंगा है? | सामग्री निर्णय प्रभाव | कम प्रभाव |
| क्या ब्राउज़र रेंडरिंग की आवश्यकता है? | नियंत्रित क्षमता आरक्षित करें | अनुसूचित काम में आमोदित करें |
अधिकांश परिपक्व प्रणालियाँ दोनों का उपयोग करती हैं। वास्तविक समय की क्षमता तत्काल इकाइयों को कवर करती है; एक बैच पास कवरेज की मरम्मत करता है और विश्वसनीय ट्रिगर्स के बिना आइटमों को पकड़ता है।
HTTP कैशिंग भी स्रोत निर्देशों और ताजगी नीति की अनुमति देने पर बार-बार कार्य को कम कर सकता है। RFC 9111 बताता है कि कैश कैसे समान अनुरोधों के लिए प्रतिक्रिया समय और नेटवर्क बैंडविड्थ को कम करता है, जिसमें उन शर्तों को शामिल किया गया है जिसके तहत संग्रहीत प्रतिक्रियाएँ पुनः उपयोग की जा सकती हैं।
उपयोगी संख्याएँ उत्पन्न करने वाली बेंचमार्क कार्यप्रणाली
एक सार्वजनिक, स्थिर, अधिकृत गतिशील पृष्ठ पर पूर्ण पथ का बेंचमार्क करें और रन स्थितियों का खुलासा करें। लक्षित क्षेत्र, ब्राउज़र स्थान, सत्र स्थिति, समवर्तीता, प्रतीक्षा स्थिति, पेलोड आकार, और अवलोकन समय को रिकॉर्ड करें। प्रतिशत की रिपोर्ट करने के लिए पर्याप्त रन का उपयोग करें और गर्म और नए-सेशन मापों को अलग से लेबल करें।
ब्राउज़र-रेंडर किया गया कार्य और HTTP-केवल कार्य की तुलना न करें जैसे कि वे वही कार्य करते हैं। पुष्टि करें कि प्रत्येक रन ने वही आवश्यक फ़ील्ड निकाले। एक तेज़ खाली परिणाम एक असफल मापन है।
परिणाम को लेटेंसी जलप्रपात के रूप में चित्रित करें: कतार, कनेक्शन, नेविगेशन, प्रतीक्षा स्थिति, निष्कर्षण, सत्यापन, और प्रकाशन। यह अगला इंजीनियरिंग निर्णय स्पष्ट बनाता है क्योंकि सबसे लंबा चरण दृश्यमान है।
निष्कर्ष
वास्तविक समय की वेब स्क्रेपिंग सफल होती है जब ताजगी एक बजट बन जाता है जिसे शेड्यूलर, ब्राउज़र स्तर, एक्सट्रैक्टर, और प्रकाशक साझा करते हैं। चयनात्मक ट्रिगर्स शोर को कम करते हैं; स्पष्ट ब्राउज़र पैरामीटर निष्पादन को पूर्वानुमानित बनाते हैं; संस्करणित रिकॉर्ड उपभोक्ताओं की रक्षा करते हैं; और चरण-स्तरीय मेट्रिक्स यह प्रदर्शित करते हैं कि डेटा कब देर हो गया।
स्क्रेपलेस स्क्रेपिंग ब्राउज़र गतिशील लक्ष्यों के लिए प्रबंधित ब्राउज़र निष्पादन स्तर प्रदान कर सकता है। समवर्ती सत्रों के आकार निर्धारण के लिए स्क्रेपलेस मूल्य निर्धारण की समीक्षा करें, और ताजगी और शासन निर्णयों को अपनी स्वयं की नियंत्रण योजना में रखें।
अपनी ताजगी पाइपलाइन बनाएं
स्क्रेपलेस स्क्रेपिंग ब्राउज़र का अन्वेषण करें, फिर आर्किटेक्चर की तुलना ब्राउज़र CLI कार्यप्रणाली से करें। स्क्रेपलेस समुदाय में जुड़ें डिस्कॉर्ड या टेलीग्राम पर।
सामान्य प्रश्न
प्रश्न: क्या वास्तविक समय की वेब स्क्रेपिंग निरंतर स्क्रेपिंग के समान है?
नहीं। निरंतर अवलोकन एक कार्यान्वयन है। मांग पर, अनुसूचित, और घटना-सहायता पाइपलाइन्स सभी वास्तविक समय की ताजगी उद्देश्य को पूरा कर सकती हैं जब उनकी डिलीवरी उम्र घोषित बजट के भीतर रहती है।
प्रश्न: एक पृष्ठ को ब्राउज़र की आवश्यकता कब होती है?
जब आवश्यक प्रमाण केवल जावास्क्रिप्ट, बातचीत, क्लाइंट-साइड अनुरोध, या एक स्वीकृत प्रमाणित सत्र के बाद ही प्रकट होते हैं, तब ब्राउज़र का उपयोग करें। जब यह वही आवश्यक प्रतिनिधित्व लौटाता है तब एक हल्का अधिकृत फेच का उपयोग करें।
प्रश्न: क्या प्रॉक्सी एक पाइपलाइन को वास्तविक समय बनाते हैं?
नहीं। नेटवर्क स्थान एक मान्य अवलोकन के लिए एक इनपुट हो सकता है, लेकिन ताजगी ट्रिगर से उपभोक्ता तक के पूरे पथ पर निर्भर करती है। कतार, रेंडरिंग, निष्कर्षण और प्रकाशन में से प्रत्येक लेटेंसी को अधिग्रहित कर सकता है।
प्रश्न: एक पाइपलाइन को WAF या पहुंच प्रतिबंधों को कैसे संभालना चाहिए?
एक पहुंच प्रतिक्रिया को प्रमाण के रूप में मानें, सुनिश्चित करें कि संग्रह अधिकृत है, लक्ष्य की शर्तों और उपलब्ध आधिकारिक इंटरफेस की जांच करें, और उस काम को रोकें जो स्वीकृत दायरे से बाहर है। ब्राउज़र बुनियादी ढांचे को अनुमति नहीं दी जाती है।
प्रश्न: बदलते DOM चयन कर्ता ताजगी को कैसे प्रभावित करते हैं?
एक चयनकर्ता विफलता एक समय पर लेकिन खाली रिकॉर्ड उत्पन्न कर सकता है। आवश्यक फ़ील्ड को मान्य करें, निष्कर्षण की पूर्णता की निगरानी करें, स्कीमाओं का संस्करण बनाएँ, और कॉम्पैक्ट प्रमाण बनाए रखें ताकि लेआउट परिवर्तन को उपभोक्ताओं द्वारा परिणाम स्वीकार करने से पहले ही पता चल सके।
प्रश्न: समवर्तीता कैसे निर्धारित की जानी चाहिए?
लक्ष्य के प्रलेखित नीति, आपके ब्राउज़र योजना, और ताजगी बजट से शुरू करें। कर्मचारियों के बीच एक साझा सीमा लागू करें, कतार की उम्र को मापें, और उच्च प्राथमिकता वाले कार्यों के लिए क्षमता आरक्षित करें बजाय इसके कि हर निर्माता स्वतंत्र रूप से सत्र बनाए।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



