साइट स्क्रैपिंग को रोकना

मैं एक ग्राहक के लिए एक वेबसाइट चलाता हूं जहां वे वर्षों के बारे में जानकारी का एक बड़ा डेटाबेस प्रदर्शित करते हैं जिसे उन्होंने सटीक और धीरे-धीरे इकट्ठा किया है। वे विभिन्न स्थानों पर वेब पर अपना डेटा ढूंढ रहे हैं। संभवत: पृष्ठ के आधार पर उनके साइट पेज के माध्यम से जा रहे स्क्रैपर के कारण और उन्हें अपने डेटाबेस में आवश्यक जानकारी निकालने के कारण। और यदि आप सोच रहे हैं, तो वे जानते हैं कि यह उनकी साइट पर प्रत्येक श्रेणी में डेटा के एक सिंगल प्लांट टुकड़े के कारण उनका डेटा है।

मैंने पिछले कुछ दिनों में इस पर बहुत सारे शोध किए हैं, और मैं आपको बता सकता हूं कि एक बिल्कुल सही पकड़ नहीं है। हालांकि, मुझे उनके लिए थोड़ा कठिन बनाने के लिए कई चीजें मिल गई हैं। यही वह है जिसे मैंने क्लाइंट के लिए लागू किया था।

अजाक्सित पेजिनेटेड डेटा

यदि आपके पास बहुत अधिक अंकुरित डेटा है, और आप अपने यूआरएल के अंत में एक अलग संख्या को जोड़कर अपने डेटा को पेजिंग कर रहे हैं, यानी http://www.domain.com/category/programming/2 - फिर आप बना रहे हैं क्रॉलर का काम इतना आसान है। पहली समस्या यह है कि यह आसानी से पहचाने जाने योग्य पैटर्न में है, इसलिए इन पृष्ठों पर एक स्क्रैपर ढीला सेट करना पाई के रूप में आसान है। दूसरी समस्या, श्रेणी में आने वाले पृष्ठों के यूआरएल के बावजूद, संभावना से अधिक उनके लिए आगे और पिछला लिंक होगा।

पेज रीलोड के बिना जावास्क्रिप्ट के माध्यम से पृष्ठांकित डेटा लोड करके, यह वहां बहुत सारे स्क्रैपर्स के लिए नौकरी को जटिल बनाता है। Google ने हाल ही में ही पृष्ठ पर जावास्क्रिप्ट को पार्स करना शुरू कर दिया है। इस तरह के डेटा को पुनः लोड करने के लिए बहुत कम नुकसान है। आप सूचकांक के लिए Google के लिए कुछ कम पृष्ठ प्रदान करते हैं, लेकिन, तकनीकी रूप से, पृष्ठबद्ध डेटा सभी को रूट श्रेणी पृष्ठ पर किसी भी तरह से वैधानिकरण के माध्यम से इंगित करना चाहिए। डेटा के अपने पेज किए गए पृष्ठों को अजाधित करें।

यादृच्छिक टेम्पलेट आउटपुट

विशेष रूप से आपके डेटा के लिए स्क्रैपर्स को थोड़ा सा अनुकूलित किया जाएगा। वे शीर्षक के लिए एक निश्चित div आईडी या कक्षा पर पहुंचेंगे, आपके विवरण के लिए प्रत्येक पंक्ति में तीसरा कक्ष इत्यादि। अधिकांश स्क्रैपर्स के साथ काम करने के लिए एक आसानी से पहचाना जाने वाला पैटर्न एक ही तालिका से आने वाले अधिकांश डेटा के साथ काम करने के लिए है, एक ही टेम्पलेट द्वारा प्रदर्शित किया जाता है। अपने div ids और वर्ग नामों को यादृच्छिक बनाएं, 0 चौड़ाई के साथ यादृच्छिक रूप से खाली तालिका कॉलम डालें। अपने डेटा को एक पृष्ठ पर, स्टाइल divs में और किसी अन्य टेम्पलेट पर एक संयोजन में दिखाएं। अनुमानित रूप से अपना डेटा पेश करके, इसे अनुमानित और सटीक रूप से स्क्रैप किया जा सकता है।

शहद का बर्तन

यह अपनी सादगी में काफी साफ है। मैं साइट स्क्रैपिंग को रोकने के बारे में कई पृष्ठों पर इस विधि में आया हूं।

  • Gotcha.html नामक आपके सर्वर पर एक नई फ़ाइल बनाएं।
  • अपनी robots.txt फ़ाइल में, निम्न जोड़ें:
    उपभोक्ता अभिकर्ता: *
    अस्वीकार करें: /gotcha.html
    यह फ़ाइल robcha.html फ़ाइल को इंडेक्स करने के लिए आपकी साइट को अनुक्रमणित करने वाले सभी रोबोट और मकड़ियों को बताता है। कोई भी सामान्य वेब क्रॉलर आपकी robots.txt फ़ाइल की इच्छाओं का सम्मान करेगा और उस फ़ाइल तक नहीं पहुंच पाएगा। यानी, Google और बिंग। आप वास्तव में इस चरण को लागू करना चाहते हैं, और अगले चरण में जाने से पहले 24 घंटे प्रतीक्षा करें। यह सुनिश्चित करेगा कि जब आप अपनी robots.txt फ़ाइल को अपडेट करते हैं तो यह क्रॉलर आपके द्वारा गलती से अवरुद्ध नहीं होता है क्योंकि यह पहले से ही मध्य-क्रॉल था।
  • अपनी वेबसाइट पर कहीं कहीं gotcha.html के लिए एक लिंक रखें। इससे कोई फर्क नहीं पड़ता। मैं पाद लेख में अनुशंसा करता हूं, हालांकि, सुनिश्चित करें कि यह लिंक दिखाई नहीं दे रहा है, सीएसएस में, प्रदर्शित करें: कोई नहीं;
  • अब, इस पृष्ठ पर आने वाले पेप की आईपी / सामान्य जानकारी लॉग करें और उन्हें अवरोधित करें। वैकल्पिक रूप से, आप उन्हें गलत और कचरा डेटा प्रदान करने के लिए एक स्क्रिप्ट के साथ आ सकते हैं। या शायद आप से एक अच्छा व्यक्तिगत संदेश।

नियमित वेब दर्शक लिंक को देखने में सक्षम नहीं होंगे, इसलिए यह गलती से क्लिक नहीं किया जाएगा। सम्मानित क्रॉलर्स (उदाहरण के लिए Google), आपके robots.txt की इच्छाओं का सम्मान करेंगे और फ़ाइल पर नहीं जाएंगे। इसलिए, इस पृष्ठ पर जो एकमात्र कंप्यूटर ठोकर खाए, वे दुर्भावनापूर्ण इरादों वाले हैं, या कोई आपके स्रोत कोड को देख रहा है और यादृच्छिक रूप से चारों ओर क्लिक कर रहा है (और ओह ठीक है अगर ऐसा होता है)।

ऐसा कुछ कारण हैं जो हमेशा काम नहीं कर सकते हैं। सबसे पहले, बहुत से स्क्रैपर्स सामान्य वेब क्रॉलर की तरह काम नहीं करते हैं, और अपनी साइट पर प्रत्येक पृष्ठ से प्रत्येक लिंक का पालन करके डेटा न खोजें। स्क्रैपर्स अक्सर कुछ पृष्ठों पर ठीक करने के लिए बनाए जाते हैं और केवल कुछ संरचनाओं का पालन करते हैं। उदाहरण के लिए, एक श्रेणी पृष्ठ पर एक स्क्रैपर शुरू किया जा सकता है, और फिर स्लग में शब्द / डेटा वाले यूआरएल देखने के लिए कहा जाता है। दूसरा, अगर कोई अन्य नेटवर्क के समान नेटवर्क पर अपना स्क्रैपर चला रहा है, और एक साझा आईपी इस्तेमाल किया जा रहा है, तो आप पूरे नेटवर्क पर प्रतिबंध लगा देंगे। वास्तव में एक समस्या होने के लिए आपको एक बहुत ही लोकप्रिय वेबसाइट मिलनी होगी।

फ्लाई पर छवियों को डेटा लिखें

डेटा का एक छोटा सा क्षेत्र ढूंढें, पाठ की जरूरी लंबी तार नहीं, क्योंकि यह पृष्ठ को थोड़ा और कठिन बना सकता है। इस डेटा को एक छवि के अंदर आउटपुट करें, मुझे पूरा भरोसा है कि लगभग हर प्रोग्रामिंग भाषा में गतिशील रूप से छवि को लिखने के लिए विधियां हैं (php, imagettftext में)। यह संख्यात्मक मूल्यों के साथ शायद सबसे प्रभावी है क्योंकि संख्याएं बहुत अधिक महत्वहीन एसईओ लाभ प्रदान करती हैं।

विकल्प

यह इस परियोजना के लिए एक विकल्प नहीं था। किसी निश्चित पृष्ठदृश्य के बाद लॉगिन की आवश्यकता है, या लॉग इन किए बिना डेटा की सीमित मात्रा प्रदर्शित करना। यानी, यदि आपके पास 10 कॉलम हैं, तो केवल 5 में उपयोगकर्ताओं को गैर-लॉग इन करने के लिए प्रदर्शित करें।

यह गलती मत करो

बॉट के उपयोगकर्ता-एजेंट के आधार पर किसी प्रकार के समाधान के साथ आने की कोशिश न करें। इस जानकारी को आसानी से एक स्क्रैपर द्वारा धोखा दिया जा सकता है जो जानता है कि वे क्या कर रहे हैं। उदाहरण के लिए Google बॉट आसानी से नकल किया जा सकता है। आप Google से अधिक प्रतिबंध नहीं लेना चाहते हैं।

यह भी देखना