मैं साइट स्क्रैपिंग को कैसे रोकूं? [बन्द है]


301

मेरे पास एक बड़े कलाकार डेटाबेस के साथ एक काफी बड़ी संगीत वेबसाइट है। मैं हमारी साइट के डेटा को स्क्रैप करते हुए अन्य संगीत साइटों को नोटिस कर रहा हूं (मैं यहां और वहां डमी आर्टिस्ट के नाम दर्ज करता हूं और फिर उनके लिए Google खोज करता हूं)।

मैं स्क्रीन स्क्रैपिंग को कैसे रोक सकता हूं? क्या यह भी संभव है?


9
क्या आपने आईपी या समान (अपने लॉग्स की जाँच करें) के माध्यम से उनके स्क्रैपर का पता लगाने की कोशिश करने पर विचार किया है और आपके डेटा को पूरी तरह से उन लोगों के लिए फेक कर रहे हैं? इस तरह, हाँ, वे आपकी साइट को "खराब" करेंगे, लेकिन उनका "डेटा" बेकार होगा।
लेज़ वी। कार्लसन जू

30
लोलकैट उल्टा और उल्टा / टेढ़ा पाठ किसी को भी?
वेन वर्नर

2
इसी तरह के सवाल stackoverflow.com/questions/2705394/…
user279521


2
@JonasCz यह विडंबना थी। दुख की बात यह है कि आपके प्रस्ताव में समान प्रस्ताव शामिल है, यद्यपि आलोचना की गई है।
टॉम ज़ातो -

जवाबों:


325

नोट: चूंकि इस उत्तर का पूर्ण संस्करण स्टैक ओवरफ्लो की लंबाई सीमा से अधिक है, इसलिए आपको अधिक सुझावों और विवरणों के साथ विस्तारित संस्करण को पढ़ने के लिए GitHub की ओर जाना होगा।


स्क्रैपिंग में बाधा डालने के लिए (जिसे वेब्सक्रैपिंग , स्क्रीनक्रैपिंग , वेब डेटा माइनिंग , वेब हार्वेस्टिंग या वेब डेटा निष्कर्षण के रूप में भी जाना जाता है ), यह जानने में मदद करता है कि ये स्क्रैपर्स कैसे काम करते हैं, और, विस्तार से, जो उन्हें अच्छी तरह से काम करने से रोकता है।

वहाँ विभिन्न प्रकार के खुरचनी है, और प्रत्येक अलग तरीके से काम करता है:

  • मकड़ियों, जैसे कि Google के बॉट या वेबसाइट कॉपियर्स जैसे HTtrack , जो डेटा प्राप्त करने के लिए अन्य पृष्ठों के लिंक का पुन: अनुसरण करता है। इन्हें कभी-कभी विशिष्ट डेटा प्राप्त करने के लिए लक्षित स्क्रैपिंग के लिए उपयोग किया जाता है, अक्सर प्रत्येक पृष्ठ से वांछित डेटा निकालने के लिए HTML पार्सर के साथ संयोजन में।

  • शैल स्क्रिप्ट: कभी-कभी, सामान्य यूनिक्स टूल का उपयोग स्क्रैपिंग के लिए किया जाता है: पृष्ठों को डाउनलोड करने के लिए Wget या कर्ल, और डेटा निकालने के लिए Grep (Regex)।

  • HTML पार्सर, जैसे कि Jsoup, Scrapy और अन्य के आधार पर । शेल-स्क्रिप्ट रेगेक्स आधारित लोगों के समान, ये HTML में पैटर्न के आधार पर पृष्ठों से डेटा निकालने के द्वारा काम करते हैं, आमतौर पर बाकी सभी चीजों को अनदेखा करते हैं।

    उदाहरण के लिए: यदि आपकी वेबसाइट में एक खोज सुविधा है, तो ऐसा स्क्रैपर खोज के लिए अनुरोध सबमिट कर सकता है, और फिर परिणाम पृष्ठ HTML से सभी परिणाम लिंक और उनके शीर्षक प्राप्त कर सकते हैं, विशेष रूप से केवल खोज परिणाम लिंक और उनके शीर्षक प्राप्त करने के लिए। । ये सबसे आम हैं।

  • स्क्रीनशॉट, उदाहरण के आधार पर। सेलेनियम या फैंटमजेएस , जो आपकी वेबसाइट को एक वास्तविक ब्राउज़र में खोलते हैं, जावास्क्रिप्ट, AJAX और इसी तरह चलाते हैं, और फिर वेबपेज से आम तौर पर वांछित पाठ प्राप्त करते हैं:

    • आपके पेज लोड होने के बाद ब्राउज़र से HTML प्राप्त करना और जावास्क्रिप्ट चलाना, और फिर वांछित डेटा निकालने के लिए HTML पार्सर का उपयोग करना है। ये सबसे आम हैं, और इसलिए HTML पार्सर / स्क्रेपर्स को तोड़ने के कई तरीके यहां भी काम करते हैं।

    • प्रस्तुत पृष्ठों का स्क्रीनशॉट लेना, और फिर स्क्रीनशॉट से वांछित पाठ निकालने के लिए ओसीआर का उपयोग करना। ये दुर्लभ हैं, और केवल समर्पित स्क्रैपर्स हैं जो वास्तव में चाहते हैं कि आपका डेटा इसे सेट करेगा।

  • Webscraping सेवाएं जैसे कि ScrapingHub या Kimono । वास्तव में, ऐसे लोग हैं जिनका काम यह पता लगाना है कि आपकी साइट को कैसे खंगालना है और दूसरों के उपयोग के लिए सामग्री को बाहर निकालना है।

    अप्रत्याशित रूप से, पेशेवर स्क्रैपिंग सेवाएं रोकना सबसे कठिन हैं, लेकिन यदि आप अपनी साइट को परिमार्जन करने के तरीके का पता लगाने के लिए इसे कठिन और समय लेने योग्य बनाते हैं, तो ये (और जो लोग ऐसा करने के लिए भुगतान करते हैं) आपकी वेबसाइट को खंगालने के लिए परेशान नहीं हो सकते हैं।

  • अपनी वेबसाइट को फ़्रेम के साथ अन्य साइट के पृष्ठों में एम्बेड करना, और मोबाइल एप्लिकेशन में अपनी साइट को एम्बेड करना।

    जबकि तकनीकी रूप से स्क्रैपिंग नहीं है, मोबाइल एप्लिकेशन (एंड्रॉइड और आईओएस) वेबसाइटों को एम्बेड कर सकते हैं, और कस्टम सीएसएस और जावास्क्रिप्ट को इंजेक्ट कर सकते हैं, इस प्रकार आपके पृष्ठों की उपस्थिति को पूरी तरह से बदल सकते हैं।

  • मानव प्रति - पेस्ट: लोग इसे कहीं और उपयोग करने के लिए आपकी सामग्री को कॉपी और पेस्ट करेंगे।

इन विभिन्न प्रकार के स्क्रैपर के बीच बहुत ओवरलैप होता है, और कई स्क्रैपर्स समान व्यवहार करेंगे, भले ही वे विभिन्न तकनीकों और विधियों का उपयोग करें।

इन युक्तियों में ज्यादातर मेरे अपने विचार हैं, विभिन्न कठिनाइयाँ जो मुझे स्क्रेपर्स लिखते समय हुई हैं, साथ ही साथ सूचनाओं और विचारों के बारे में भी है।

स्क्रैपिंग को कैसे रोकें

आप इसे पूरी तरह से रोक नहीं सकते हैं , जो कुछ भी आप करते हैं, निर्धारित स्क्रैपर्स अभी भी पता लगा सकते हैं कि कैसे परिमार्जन करना है। हालाँकि, आप कुछ चीज़ें करके बहुत अधिक स्क्रैपिंग को रोक सकते हैं:

अपने लॉग और ट्रैफ़िक पैटर्न की निगरानी करें; यदि आप असामान्य गतिविधि देखते हैं तो सीमा तक पहुंच:

नियमित रूप से अपने लॉग की जांच करें, और स्वचालित एक्सेस (स्क्रैपर्स) के असामान्य गतिविधि संकेतक के मामले में, जैसे कि एक ही आईपी पते से कई समान क्रियाएं, आप एक्सेस को ब्लॉक या सीमित कर सकते हैं।

विशेष रूप से, कुछ विचार:

  • दर सीमित:

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

  • असामान्य गतिविधि का पता लगाएं:

    यदि आप असामान्य गतिविधि देखते हैं, जैसे कि विशिष्ट आईपी पते से कई समान अनुरोध, कोई व्यक्ति अत्यधिक संख्या में पृष्ठों को देख रहा है या असामान्य संख्या में खोज कर रहा है, तो आप पहुंच को रोक सकते हैं, या बाद के अनुरोधों के लिए कैप्चा दिखा सकते हैं।

  • आईपी ​​पते द्वारा सिर्फ मॉनिटर और रेट लिमिट न करें - अन्य संकेतकों का भी उपयोग करें:

    यदि आप ब्लॉक या दर सीमा करते हैं, तो इसे प्रति-आईपी पते के आधार पर न करें; विशिष्ट उपयोगकर्ताओं या स्क्रैपर्स की पहचान करने के लिए आप अन्य संकेतकों और विधियों का उपयोग कर सकते हैं। कुछ संकेतक जो आपको विशिष्ट उपयोगकर्ताओं / स्क्रैपर्स की पहचान करने में मदद कर सकते हैं, उनमें शामिल हैं:

    • उपयोगकर्ता कितनी तेज़ी से फ़ॉर्म भरते हैं, और एक बटन पर वे कहाँ क्लिक करते हैं;

    • आप जावास्क्रिप्ट के साथ बहुत सारी जानकारी एकत्र कर सकते हैं, जैसे कि स्क्रीन आकार / रिज़ॉल्यूशन, टाइमज़ोन, स्थापित फोंट, आदि; आप उपयोगकर्ताओं की पहचान करने के लिए इसका उपयोग कर सकते हैं।

    • HTTP हेडर और उनका क्रम, विशेष रूप से उपयोगकर्ता-एजेंट।

    एक उदाहरण के रूप में, यदि आपको एक ही आईपी पते से कई अनुरोध मिलते हैं, तो सभी एक ही उपयोगकर्ता एजेंट, स्क्रीन आकार (जावास्क्रिप्ट के साथ निर्धारित) का उपयोग करते हैं, और उपयोगकर्ता (इस मामले में स्क्रैपर) हमेशा एक ही तरह से बटन पर क्लिक करता है और नियमित अंतराल, यह शायद एक स्क्रीन खुरचनी है; और आप अस्थायी रूप से समान अनुरोधों को ब्लॉक कर सकते हैं (उदाहरण के लिए उस उपयोगकर्ता एजेंट और उस विशेष आईपी पते से आने वाले स्क्रीन आकार के साथ सभी अनुरोधों को ब्लॉक कर सकते हैं), और इस तरह से आप उस आईपी पते पर वास्तविक उपयोगकर्ताओं को असुविधा नहीं करेंगे, जैसे। साझा इंटरनेट कनेक्शन के मामले में।

    आप इसे आगे भी ले सकते हैं, जैसा कि आप समान अनुरोधों की पहचान कर सकते हैं, भले ही वे अलग-अलग आईपी पते से आते हों, वितरित स्क्रैपिंग का संकेत (बॉटनेट या प्रॉक्सी के नेटवर्क का उपयोग कर एक स्क्रैपर)। यदि आपको बहुत से समान अनुरोध मिलते हैं, लेकिन वे अलग-अलग आईपी पते से आते हैं, तो आप ब्लॉक कर सकते हैं। फिर, अनजाने में वास्तविक उपयोगकर्ताओं को अवरुद्ध नहीं करने के बारे में जागरूक रहें।

    यह स्क्रीनसेवर के खिलाफ प्रभावी हो सकता है जो जावास्क्रिप्ट चलाते हैं, क्योंकि आप उनसे बहुत सारी जानकारी प्राप्त कर सकते हैं।

    सुरक्षा स्टैक एक्सचेंज पर संबंधित प्रश्न:

  • अस्थायी रूप से अवरुद्ध पहुंच के बजाय, कैप्चा का उपयोग करें:

    दर-सीमा को लागू करने का सरल तरीका एक निश्चित समय के लिए अस्थायी रूप से पहुंच को अवरुद्ध करना होगा, हालांकि एक कैप्चा का उपयोग करना बेहतर हो सकता है, कैप्चा पर अनुभाग को और नीचे देखें।

पंजीकरण और लॉगिन की आवश्यकता है

यदि आपकी साइट के लिए यह संभव है, तो अपनी सामग्री को देखने के लिए खाता निर्माण की आवश्यकता है। यह स्क्रेपर्स के लिए एक अच्छा निवारक है, लेकिन वास्तविक उपयोगकर्ताओं के लिए भी एक अच्छा निवारक है।

  • यदि आपको खाता बनाने और लॉगिन करने की आवश्यकता है, तो आप उपयोगकर्ता और कार्यों को सही तरीके से ट्रैक कर सकते हैं। इस तरह, आप आसानी से पता लगा सकते हैं कि स्क्रैपिंग के लिए एक विशिष्ट खाते का उपयोग कब किया जा रहा है, और इसे प्रतिबंधित करें। दरों को सीमित करने या दुरुपयोग का पता लगाने (जैसे थोड़े समय में बड़ी संख्या में खोजें) जैसी चीजें आसान हो जाती हैं, क्योंकि आप केवल आईपी पते के बजाय विशिष्ट स्क्रैपर्स की पहचान कर सकते हैं।

कई खाते बनाने वाली लिपियों से बचने के लिए, आपको निम्न करना चाहिए:

  • पंजीकरण के लिए एक ईमेल पते की आवश्यकता होती है, और खाता सक्रिय करने के लिए एक लिंक भेजकर उस ईमेल पते को सत्यापित करना चाहिए। प्रति ईमेल पते पर केवल एक ही खाते की अनुमति दें।

  • पंजीकरण / खाता निर्माण के दौरान कैप्चा को हल करना होगा।

सामग्री देखने के लिए खाता निर्माण की आवश्यकता उपयोगकर्ताओं और खोज इंजनों को दूर ले जाएगी; यदि आपको किसी लेख को देखने के लिए खाते के निर्माण की आवश्यकता है, तो उपयोगकर्ता कहीं और जाएंगे।

क्लाउड होस्टिंग और स्क्रैपिंग सेवा आईपी पते से ब्लॉक का उपयोग

कभी-कभी, स्क्रैपर्स को वेब होस्टिंग सेवाओं, जैसे अमेज़ॅन वेब सर्विसेज या जीएई, या वीपीएस से चलाया जाएगा। ऐसी क्लाउड होस्टिंग सेवाओं द्वारा उपयोग किए जाने वाले आईपी पतों से उत्पन्न अनुरोधों के लिए आपकी वेबसाइट तक पहुंच सीमित करें (या एक कैप्चा दिखाएं)।

इसी तरह, आप प्रॉक्सी या वीपीएन प्रदाताओं द्वारा उपयोग किए जाने वाले आईपी पते से भी पहुंच को सीमित कर सकते हैं, क्योंकि कई अनुरोधों का पता लगाने से बचने के लिए स्क्रैपर्स ऐसे प्रॉक्सी सर्वर का उपयोग कर सकते हैं।

खबरदार कि प्रॉक्सी सर्वर और वीपीएन तक पहुंच को अवरुद्ध करके, आप वास्तविक उपयोगकर्ताओं को नकारात्मक रूप से प्रभावित करेंगे।

यदि आप ब्लॉक करते हैं तो अपनी त्रुटि संदेश नॉन्डस्क्रिप्ट बनाएं

यदि आप ब्लॉक / लिमिट एक्सेस का उपयोग करते हैं, तो आपको यह सुनिश्चित करना चाहिए कि आप स्क्रैपर को ब्लॉक होने का कारण न बताएं, जिससे उन्हें यह पता चल सके कि उनके स्क्रैपर को कैसे ठीक किया जाए। तो एक बुरा विचार पाठ के साथ त्रुटि पृष्ठ दिखाना होगा:

  • आपके IP पते से बहुत सारे अनुरोध, कृपया बाद में पुनः प्रयास करें।

  • त्रुटि, उपयोगकर्ता एजेंट हेडर मौजूद नहीं है!

इसके बजाय, एक फ्रेंडली एरर मैसेज दिखाएं, जो स्क्रैपर को इसका कारण नहीं बताता है। ऐसा कुछ बेहतर है:

  • क्षमा करें, कुछ गलत हो गया। आप के माध्यम से समर्थन से संपर्क कर सकते हैं helpdesk@example.com, समस्या बनी रहना चाहिए।

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

कैप्चा का उपयोग करें यदि आपको संदेह है कि आपकी वेबसाइट एक खुरचनी द्वारा एक्सेस की जा रही है।

स्क्रैपर्स को रोकने के खिलाफ कैप्चा ("कंप्यूटर और मानव को अलग बताने के लिए पूरी तरह से स्वचालित परीक्षण") बहुत प्रभावी हैं। दुर्भाग्य से, वे उपयोगकर्ताओं को परेशान करने में भी बहुत प्रभावी हैं।

इस तरह, वे तब उपयोगी होते हैं जब आपको संभावित स्क्रेपर पर संदेह होता है, और स्क्रैपिंग को रोकना चाहते हैं, बिना एक्सेस को ब्लॉक किए भी अगर यह स्क्रैपर नहीं है बल्कि एक वास्तविक उपयोगकर्ता है। यदि आपको किसी स्क्रैपर पर संदेह है, तो आप सामग्री तक पहुंच की अनुमति देने से पहले एक कैप्चा दिखाने पर विचार कर सकते हैं।

कैप्चा का उपयोग करते समय ध्यान रखने योग्य बातें:

  • अपना स्वयं का रोल न करें, Google के reCaptcha जैसी किसी चीज़ का उपयोग करें : अपने आप को कैप्चा लागू करने की तुलना में बहुत आसान है, यह कुछ धुंधले और विकृत पाठ समाधान की तुलना में अधिक उपयोगकर्ता के अनुकूल है जो आप स्वयं के साथ आ सकते हैं (उपयोगकर्ताओं को अक्सर केवल एक बॉक्स पर टिक करने की आवश्यकता होती है ), और आपकी साइट से प्राप्त एक साधारण छवि की तुलना में एक ट्रॉटर के लिए यह बहुत कठिन है

  • HTML मार्कअप में कैप्चा के समाधान को शामिल न करें: मैंने वास्तव में एक वेबसाइट देखी है, जिसमें पेज में ही कैप्चा के लिए समाधान था , (हालांकि काफी अच्छी तरह से छिपा हुआ) इस प्रकार यह बहुत बेकार बना। ऐसा कुछ मत करो। फिर से, reCaptcha जैसी सेवा का उपयोग करें, और आपको इस तरह की समस्या नहीं होगी (यदि आप इसे ठीक से उपयोग करते हैं)।

  • कैप्चा को थोक में हल किया जा सकता है: कैप्चा-सॉल्विंग सेवाएँ हैं जहां वास्तविक, कम-भुगतान, मनुष्य बल्क में कैप्चा को हल करते हैं। फिर से, reCaptcha का उपयोग करना यहां एक अच्छा विचार है, क्योंकि उनके पास सुरक्षा है (जैसे कि कैप्चा को हल करने के लिए उपयोगकर्ता के पास अपेक्षाकृत कम समय है)। इस तरह की सेवा का उपयोग करने की संभावना नहीं है जब तक कि आपका डेटा वास्तव में मूल्यवान न हो।

एक छवि के रूप में अपनी पाठ सामग्री परोसें

आप एक छवि सर्वर-साइड में पाठ को प्रस्तुत कर सकते हैं, और प्रदर्शित होने के लिए सेवा कर सकते हैं, जो पाठ को निकालने वाले सरल स्क्रैपर्स में बाधा उत्पन्न करेगा।

हालाँकि, यह स्क्रीन रीडर, सर्च इंजन, प्रदर्शन और बाकी सभी चीजों के लिए बहुत बुरा है। यह कुछ स्थानों पर गैरकानूनी है (पहुंच के कारण, जैसे कि विकलांग अमेरिकियों के लिए अधिनियम), और कुछ ओसीआर के साथ चक्कर लगाना भी आसान है, इसलिए ऐसा न करें।

आप सीएसएस स्प्राइट्स के साथ भी कुछ ऐसा कर सकते हैं, लेकिन यह समान समस्याओं से ग्रस्त है।

अपने संपूर्ण डेटासेट को उजागर न करें:

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

यह अप्रभावी होगा यदि:

  • बॉट / स्क्रिप्ट को वैसे भी पूर्ण डेटासेट की आवश्यकता / आवश्यकता नहीं है।
  • आपके लेख एक URL से परोसे जाते हैं, जो कुछ इस तरह दिखता है example.com/article.php?articleId=12345। यह (और इसी तरह की चीजें) जो स्क्रेपर्स को सभी articleIdएस पर बस पुनरावृति करने की अनुमति देगा और इस तरह से सभी लेखों का अनुरोध करेगा।
  • अंत में सभी लेखों को खोजने के अन्य तरीके हैं, जैसे कि लेखों के भीतर लिंक का पालन करने के लिए एक स्क्रिप्ट लिखकर जो अन्य लेखों की ओर ले जाता है।
  • "और" या "" जैसी किसी चीज़ की खोज लगभग हर चीज़ को प्रकट कर सकती है, जिससे कि कुछ पता होना चाहिए। (आप केवल शीर्ष 10 या 20 परिणामों को वापस करके इससे बच सकते हैं)।
  • आपको अपनी सामग्री खोजने के लिए खोज इंजन की आवश्यकता है।

अपने API, समापन बिंदु और इसी तरह की चीजों को उजागर न करें:

सुनिश्चित करें कि आप अनजाने में भी, किसी भी एपीआई को उजागर नहीं करते हैं। उदाहरण के लिए, यदि आप अपने डेटा को लोड करने के लिए Adobe Flash या Java Applets (God forbid!) से AJAX या नेटवर्क अनुरोधों का उपयोग कर रहे हैं, तो यह पृष्ठ से नेटवर्क अनुरोधों को देखने और उन अनुरोधों का पता लगाने के लिए तुच्छ है, जहां वे अनुरोध करने जा रहे हैं, और फिर रिवर्स इंजीनियर और एक स्क्रैपर प्रोग्राम में उन समापन बिंदुओं का उपयोग करें। सुनिश्चित करें कि आप अपने समापन बिंदुओं को बाधित करते हैं और उन्हें वर्णित करने के लिए दूसरों के उपयोग के लिए कठिन बनाते हैं।

HTML पार्सर और स्क्रेपर्स को रोकने के लिए:

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

बार-बार अपना HTML बदलें

HTML को प्रोसेस करने वाले स्क्रैपर्स आपके HTML पेज के विशिष्ट, पहचान योग्य भागों से सामग्री निकालकर सीधे ऐसा करते हैं। उदाहरण के लिए: यदि आपकी वेबसाइट के सभी पृष्ठों में divएक आईडी है article-content, जिसमें लेख का पाठ है, तो यह आपकी साइट पर सभी लेख पृष्ठों पर जाने के लिए एक स्क्रिप्ट लिखने के लिए तुच्छ है, और article-contentdiv के सामग्री पाठ को निकालना है। प्रत्येक लेख पृष्ठ पर, और ध्वनि, स्क्रैपर में आपकी साइट के सभी लेख एक प्रारूप में होते हैं जिन्हें अन्यत्र पुन: उपयोग किया जा सकता है।

यदि आप HTML और अपने पृष्ठों की संरचना को बार-बार बदलते हैं, तो ऐसे स्क्रैपर्स अब काम नहीं करेंगे।

  • आप अपने HTML में अक्सर तत्वों की आईडी और कक्षाओं को बदल सकते हैं, शायद स्वचालित रूप से भी। इसलिए, यदि आपका div.article-contentकुछ ऐसा हो जाता है div.a4c36dda13eaf0, और हर हफ्ते बदलता है, तो स्क्रैपर शुरू में ठीक काम करेगा, लेकिन एक सप्ताह के बाद टूट जाएगा। अपनी आईडी / कक्षाओं की लंबाई भी बदलना सुनिश्चित करें, अन्यथा खुरचनी का उपयोग div.[any-14-characters]वांछित div खोजने के लिए किया जाएगा। अन्य समान छिद्रों से भी सावधान रहें।

  • यदि मार्कअप से वांछित सामग्री खोजने का कोई तरीका नहीं है, तो स्क्रैपर HTML संरचना के तरीके से ऐसा करेगा। इसलिए, यदि आपके सभी लेख पृष्ठ समान हैं, जो कि प्रत्येक के divअंदर divआता है जो h1कि लेख सामग्री के बाद आता है, तो स्क्रैपर्स को उस पर आधारित लेख सामग्री मिल जाएगी। फिर, इसे तोड़ने के लिए, आप अपने HTML में समय-समय पर और बेतरतीब ढंग से अतिरिक्त मार्कअप जोड़ सकते हैं / हटा सकते हैं। अतिरिक्त divएस या spanएस जोड़ना । आधुनिक सर्वर साइड HTML प्रसंस्करण के साथ, यह बहुत कठिन नहीं होना चाहिए।

चीजों के बारे में पता होना चाहिए:

  • इसे लागू करना, बनाए रखना और डिबग करना थकाऊ और कठिन होगा।

  • आप कैशिंग में बाधा डालेंगे। विशेष रूप से यदि आप अपने HTML तत्वों की आईडी या कक्षाएं बदलते हैं, तो इसके लिए आपकी सीएसएस और जावास्क्रिप्ट फ़ाइलों में इसी परिवर्तन की आवश्यकता होगी, जिसका अर्थ है कि हर बार जब आप उन्हें बदलते हैं, तो उन्हें ब्राउज़र द्वारा फिर से डाउनलोड करना होगा। यह दोहराए जाने वाले आगंतुकों के लिए लंबे समय तक लोड समय और सर्वर लोड में वृद्धि होगी। यदि आप इसे सप्ताह में केवल एक बार बदलते हैं, तो यह एक बड़ी समस्या नहीं होगी।

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

अनिवार्य रूप से, सुनिश्चित करें कि स्क्रिप्ट के लिए हर समान पृष्ठ के लिए वास्तविक, वांछित सामग्री ढूंढना आसान नहीं है।

यह भी देखें कि पीएचपी में क्रैटलर्स को विवरणों के लिए पेज कंटेंट प्राप्त करने से कैसे रोका जा सकता है, इसे PHP में कैसे लागू किया जा सकता है।

उपयोगकर्ता के स्थान के आधार पर अपना HTML बदलें

यह पिछले टिप के समान है। यदि आप अपने उपयोगकर्ता के स्थान / देश (IP पते द्वारा निर्धारित) के आधार पर अलग-अलग HTML की सेवा करते हैं, तो यह स्क्रैपर्स को तोड़ सकता है जो उपयोगकर्ताओं को वितरित किए जाते हैं। उदाहरण के लिए, यदि कोई मोबाइल ऐप लिख रहा है जो आपकी साइट के डेटा को स्क्रैप करता है, तो यह शुरू में ठीक काम करेगा, लेकिन जब यह वास्तव में उपयोगकर्ताओं को वितरित किया जाता है, तो टूट जाता है, क्योंकि वे उपयोगकर्ता एक अलग देश में हो सकते हैं, और इस प्रकार अलग-अलग HTML प्राप्त होते हैं, जो एम्बेडेड स्क्रैपर का उपभोग करने के लिए डिज़ाइन नहीं किया गया था।

बार-बार अपना HTML बदलें, ऐसा करने से स्क्रेपर्स के साथ सक्रिय रूप से पेंच!

एक उदाहरण: आपके पास अपनी वेबसाइट पर एक खोज सुविधा है example.com/search?query=somesearchquery, जो निम्न HTML को लौटाती है:

<div class="search-result">
  <h3 class="search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"search-result-link" href="/stories/story-link">Read more</a>
</div>
(And so on, lots more identically structured divs with search results)

जैसा कि आप अनुमान लगा सकते हैं कि यह परिमार्जन करना आसान है: सभी स्क्रैपर को खोज URL को एक क्वेरी के साथ हिट करना होगा, और वांछित HTML से वांछित डेटा को निकालना होगा। समय-समय पर ऊपर वर्णित HTML को बदलने के अलावा, आप पुराने मार्कअप को पुरानी आईडी और कक्षाओं में भी छोड़ सकते हैं , इसे CSS से छिपा सकते हैं, और इसे नकली डेटा से भर सकते हैं, जिससे स्क्रैपर में जहर होता है। यहां बताया गया है कि खोज परिणाम पृष्ठ को कैसे बदला जा सकता है:

<div class="the-real-search-result">
  <h3 class="the-real-search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="the-real-search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"the-real-search-result-link" href="/stories/story-link">Read more</a>
</div>

<div class="search-result" style="display:none">
  <h3 class="search-result-title">Visit Example.com now, for all the latest Stack Overflow related news !</h3>
  <p class="search-result-excerpt">Example.com is so awesome, visit now !</p>
  <a class"search-result-link" href="http://example.com/">Visit Now !</a>
</div>
(More real search results follow)

इसका मतलब यह होगा कि वर्गों या आईडी के आधार पर HTML से डेटा निकालने के लिए लिखे गए स्क्रैपर्स लगातार काम करते रहेंगे, लेकिन उन्हें नकली डेटा या यहां तक ​​कि विज्ञापन भी मिलेंगे, जो वास्तविक उपयोगकर्ता कभी नहीं देखेंगे, क्योंकि वे CSS के साथ छिपे हुए हैं।

स्क्रैपर के साथ पेंच: अपने पेज में नकली, अदृश्य हनीपोट डेटा डालें

पिछले उदाहरण में जोड़कर, आप स्क्रेपर्स को पकड़ने के लिए अपने HTML में अदृश्य हनीपॉट आइटम जोड़ सकते हैं। एक उदाहरण जो पहले वर्णित खोज परिणाम पृष्ठ में जोड़ा जा सकता है:

<div class="search-result" style="display:none">
  <h3 class="search-result-title">This search result is here to prevent scraping</h3>
  <p class="search-result-excerpt">If you're a human and see this, please ignore it. If you're a scraper, please click the link below :-)
  Note that clicking the link below will block access to this site for 24 hours.</p>
  <a class"search-result-link" href="/scrapertrap/scrapertrap.php">I'm a scraper !</a>
</div>
(The actual, real, search results follow.)

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

आप अपने scrapertrap.phpआईपी ​​पते के लिए ब्लॉक एक्सेस की तरह कुछ कर सकते हैं जो उस पर गया या उस आईपी से सभी बाद के अनुरोधों के लिए कैप्चा को मजबूर कर सकता है।

  • /scrapertrap/अपनी robots.txt फ़ाइल में अपने honeypot ( ) को हटाना न भूलें ताकि खोज इंजन बॉट्स उसमें न पड़े।

  • आप अपने HTML को बार-बार बदलने के पिछले टिप के साथ इसे जोड़ सकते हैं / कर सकते हैं।

  • इसे बार-बार बदलें, क्योंकि स्क्रैपर्स अंततः इससे बचना सीखेंगे। हनीपोट URL और पाठ बदलें। इसके अलावा इनलाइन सीएसएस को छुपाने के लिए इस्तेमाल करने पर विचार करना चाहते हैं, और इसके बजाय एक आईडी विशेषता और बाहरी सीएसएस का उपयोग करें, क्योंकि स्क्रैपर्स कुछ भी से बचने के लिए सीखेंगे जिसमें styleसीएसएस के साथ एक विशेषता है जो सामग्री को छिपाने के लिए उपयोग किया जाता है। केवल कभी-कभी इसे सक्षम करने का प्रयास करें, इसलिए स्क्रैपर शुरू में काम करता है, लेकिन थोड़ी देर बाद टूट जाता है। यह पिछले टिप पर भी लागू होता है।

  • दुर्भावनापूर्ण लोग आपके हनीपोट का लिंक साझा करके, या उस लिंक को एक छवि के रूप में कहीं भी एम्बेड कर सकते हैं (जैसे कि एक मंच पर)। URL को बार-बार बदलें, और किसी भी प्रतिबंध के समय को अपेक्षाकृत कम करें।

यदि आप एक खुरचनी का पता लगाते हैं तो नकली और बेकार डेटा परोसें

यदि आप पता लगाते हैं कि स्पष्ट रूप से एक खुरचनी है, तो आप नकली और बेकार डेटा की सेवा कर सकते हैं; यह उस डेटा को दूषित कर देगा जो स्क्रैपर आपकी वेबसाइट से प्राप्त करता है। आपको ऐसे नकली डेटा को वास्तविक डेटा से अलग करना असंभव बनाना चाहिए, ताकि स्क्रेपर्स को यह पता न चले कि वे खराब हो रहे हैं।

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

यदि उपयोगकर्ता एजेंट खाली / गायब है, तो अनुरोध स्वीकार न करें

अक्सर, आलसी लिखित स्क्रैपर्स अपने अनुरोध के साथ एक उपयोगकर्ता एजेंट हेडर नहीं भेजेंगे, जबकि सभी ब्राउज़रों और साथ ही खोज इंजन मकड़ियों करेंगे।

यदि आपको एक अनुरोध मिलता है जहां उपयोगकर्ता एजेंट हेडर मौजूद नहीं है, तो आप कैप्चा दिखा सकते हैं, या बस पहुंच को सीमित या सीमित कर सकते हैं। (या ऊपर वर्णित के रूप में नकली डेटा की सेवा, या कुछ और ..)

यह बिगाड़ने के लिए तुच्छ है, लेकिन खराब लिखे स्क्रैपर्स के खिलाफ एक उपाय के रूप में यह लागू करने के लायक है।

यदि उपयोगकर्ता एजेंट एक सामान्य खुरचनी है, तो अनुरोध स्वीकार न करें; स्क्रैपर्स द्वारा उपयोग की जाने वाली ब्लैक लिस्ट

कुछ मामलों में, स्क्रैपर्स एक उपयोगकर्ता एजेंट का उपयोग करेगा जो कोई वास्तविक ब्राउज़र या खोज इंजन मकड़ी का उपयोग नहीं करता है, जैसे:

  • "मोज़िला" (बस यही, और कुछ नहीं। मैंने यहाँ पर स्क्रैप करने के बारे में कुछ प्रश्न देखे हैं, इसका उपयोग करते हुए। एक वास्तविक ब्राउज़र केवल कभी नहीं होगा))
  • "Java 1.7.43_u43" (डिफ़ॉल्ट रूप से, Java का HttpUrlConnection कुछ इस तरह का उपयोग करता है)।
  • "बिज़्को इज़ीस्कैपिंग स्टूडियो 2.0"
  • "wget", "curl", "libcurl", .. (Wget और cURL का उपयोग कभी-कभी स्क्रैप स्क्रैप के लिए किया जाता है)

यदि आप पाते हैं कि किसी विशिष्ट उपयोगकर्ता एजेंट स्ट्रिंग का उपयोग आपकी साइट पर स्क्रैपर्स द्वारा किया जाता है, और इसका उपयोग वास्तविक ब्राउज़र या वैध मकड़ियों द्वारा नहीं किया जाता है, तो आप इसे अपनी ब्लैकलिस्ट में भी जोड़ सकते हैं।

यदि यह संपत्ति (सीएसएस, चित्र) का अनुरोध नहीं करता है, तो यह एक वास्तविक ब्राउज़र नहीं है।

एक वास्तविक ब्राउज़र (लगभग हमेशा) छवियों और सीएसएस जैसी परिसंपत्तियों का अनुरोध और डाउनलोड करेगा। HTML पार्सर और स्क्रेपर्स नहीं होंगे क्योंकि वे केवल वास्तविक पृष्ठों और उनकी सामग्री में रुचि रखते हैं।

आप अपनी संपत्ति के लिए अनुरोधों को लॉग कर सकते हैं, और यदि आप केवल HTML के लिए बहुत सारे अनुरोध देखते हैं, तो यह एक खुरचनी हो सकती है।

खोज इंजन बॉट, प्राचीन मोबाइल उपकरण, स्क्रीन रीडर और गलत डिवाइसों से सावधान रहें कि संपत्ति का अनुरोध न करें।

कुकीज़ का उपयोग और आवश्यकता; उपयोगकर्ता और खुरचने वाले कार्यों को ट्रैक करने के लिए उनका उपयोग करें।

अपनी वेबसाइट देखने के लिए आपको कुकीज़ को सक्षम करने की आवश्यकता हो सकती है। यह अनुभवहीन और नौसिखिया स्क्रैपर लेखकों को रोक देगा, हालांकि एक स्क्रेपर के लिए कुकीज़ भेजना आसान है। यदि आप उनका उपयोग करते हैं और उनकी आवश्यकता होती है, तो आप उपयोगकर्ता को ट्रैक कर सकते हैं और उनके साथ क्रियाओं को ट्रैक कर सकते हैं, और इस प्रकार प्रति-आईपी आधार के बजाय प्रति-उपयोगकर्ता पर रेट-लिमिटिंग, ब्लॉकिंग या कैप्चा दिखा सकते हैं।

उदाहरण के लिए: जब उपयोगकर्ता खोज करता है, तो एक विशिष्ट पहचान कुकी सेट करें। जब परिणाम पृष्ठ देखे जाते हैं, तो उस कुकी को सत्यापित करें। यदि उपयोगकर्ता सभी खोज परिणाम खोलता है (आप कुकी से बता सकते हैं), तो यह संभवतः एक खुरचनी है।

कुकीज़ का उपयोग करना अप्रभावी हो सकता है, क्योंकि स्क्रैपर्स कुकीज़ को अपने अनुरोधों के साथ भी भेज सकते हैं, और आवश्यकतानुसार उन्हें त्याग सकते हैं। आप वास्तविक उपयोगकर्ताओं के लिए भी पहुंच को रोकेंगे जिनकी कुकीज़ अक्षम हैं, यदि आपकी साइट केवल कुकीज़ के साथ काम करती है।

ध्यान दें कि यदि आप कुकी को सेट और पुनः प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग करते हैं, तो आप स्क्रैपर्स को ब्लॉक करेंगे जो जावास्क्रिप्ट को नहीं चलाते हैं, क्योंकि वे कुकी को उनके अनुरोध के साथ पुनर्प्राप्त और भेज नहीं सकते हैं।

अपनी सामग्री लोड करने के लिए JavaScript + Ajax का उपयोग करें

पृष्ठ के लोड होने के बाद आप अपनी सामग्री को लोड करने के लिए जावास्क्रिप्ट + AJAX का उपयोग कर सकते हैं। यह HTML पार्सर्स के लिए सामग्री को अप्राप्य बना देगा जो जावास्क्रिप्ट को नहीं चलाते हैं। यह अक्सर नौसिखिया और अनुभवहीन प्रोग्रामर को स्क्रेपर्स लिखने के लिए एक प्रभावी निवारक है।

से बच:

  • वास्तविक सामग्री लोड करने के लिए जावास्क्रिप्ट का उपयोग करना उपयोगकर्ता के अनुभव और प्रदर्शन को नीचा दिखाएगा

  • खोज इंजन जावास्क्रिप्ट को भी नहीं चला सकते हैं, इस प्रकार उन्हें आपकी सामग्री को अनुक्रमित करने से रोकते हैं। यह खोज परिणाम पृष्ठों के लिए समस्या नहीं हो सकती है, लेकिन अन्य चीज़ों के लिए हो सकती है, जैसे कि लेख पृष्ठ।

अपने मार्कअप, स्क्रिप्ट्स से नेटवर्क अनुरोध और बाकी सब चीज़ों पर ध्यान दें।

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

  • यदि आप डेटा लोड करने के लिए अजाक्स का उपयोग करते हैं, तो आपको पृष्ठ को पहले लोड किए बिना एंडपॉइंट्स का उपयोग करना कठिन बनाना चाहिए, जैसे कि एक पैरामीटर के रूप में कुछ सत्र कुंजी की आवश्यकता होती है, जिसे आप अपने जावास्क्रिप्ट या HTML में एम्बेड कर सकते हैं।

  • आप अपने ओफ़्फ़ुसेटेड डेटा को प्रारंभिक HTML पेज में सीधे एम्बेड कर सकते हैं और जावास्क्रिप्ट का उपयोग डीबॉफसेट करने और इसे प्रदर्शित करने के लिए कर सकते हैं, जो अतिरिक्त नेटवर्क अनुरोधों से बचना होगा। ऐसा करने से HTML-केवल पार्सर का उपयोग करके डेटा को निकालना काफी कठिन हो जाएगा जो जावास्क्रिप्ट को नहीं चलाता है, क्योंकि स्क्रैपर को लिखने वाले को आपके जावास्क्रिप्ट को रिवर्स इंजीनियर करना होगा (जिसे आपको बहुत अधिक बाधित करना चाहिए)।

  • आप नियमित रूप से अपने मोटापे के तरीकों को बदलना चाहते हैं, जो स्क्रैपर्स को तोड़ने के लिए इसे बाहर निकालते हैं।

हालांकि ऐसा करने के कई नुकसान हैं, हालांकि:

  • इसे लागू करना, बनाए रखना और डिबग करना थकाऊ और कठिन होगा।

  • यह स्क्रेपर्स और स्क्रीनक्रापर्स के खिलाफ अप्रभावी होगा जो वास्तव में जावास्क्रिप्ट चलाते हैं और फिर डेटा निकालते हैं। (अधिकांश सरल HTML पार्सर जावास्क्रिप्ट को नहीं चलाते हैं)

  • यदि वे जावास्क्रिप्ट अक्षम हैं तो यह आपकी साइट को वास्तविक उपयोगकर्ताओं के लिए अप्रभावी बना देगा।

  • प्रदर्शन और पृष्ठ-लोड समय भुगतना होगा।

गैर तकनिकि:

  • लोगों से कहें कि वे हाथापाई न करें, और कुछ इसका सम्मान करेंगे

  • एक वकील खोजें

  • अपना डेटा उपलब्ध करें, एक एपीआई प्रदान करें:

    आप अपना डेटा आसानी से उपलब्ध करा सकते हैं और इसके लिए रोपण और आपकी साइट पर लिंक की आवश्यकता होती है। शायद इसके लिए $ $ $ चार्ज करते हैं।

विविध:

  • क्लाउडफ़ेयर या डिस्टिल नेटवर्क्स द्वारा एंटी-स्क्रेपिंग जैसे कि यह कैसे काम करता है ( यहां यह कैसे काम करता है ) पर विवरण , जो इन चीजों को करते हैं और आपके लिए और भी हैं।

  • वास्तविक उपयोगकर्ताओं और स्क्रैपर प्रूफनेस के लिए प्रयोज्य के बीच एक संतुलन खोजें: आप जो कुछ भी करते हैं वह उपयोगकर्ता के अनुभव को एक या दूसरे तरीके से नकारात्मक रूप से प्रभावित करेगा, समझौता खोजें।

  • अपनी मोबाइल साइट और ऐप्स को न भूलें। यदि आपके पास एक मोबाइल ऐप है, जिसे स्क्रीनक्रैप भी किया जा सकता है, और नेटवर्क ट्रैफ़िक का निरीक्षण उसके द्वारा उपयोग किए जाने वाले REST के समापन बिंदुओं को निर्धारित करने के लिए किया जा सकता है।

  • स्क्रेपर्स अन्य स्क्रेपर्स को स्क्रैप कर सकते हैं: यदि कोई ऐसी वेबसाइट है जिस पर आपकी सामग्री स्क्रैप की गई है, तो अन्य स्क्रैपर उस स्क्रैपर की वेबसाइट से स्क्रैप कर सकते हैं।

आगे की पढाई:


11
यह मुझे यहाँ लाया। काफी प्रभावशाली जवाब। इसके अलावा, एक अद्भुत संशोधन इतिहास। पोस्ट के लिए धन्यवाद। आपको एक उत्थान मिलता है। न केवल इस प्रयास की मात्रा के कारण इस में डाल दिया, लेकिन क्योंकि यह मेरे लिए उपयोगी है।
डेवइनियन

1
बहुत बढ़िया जवाब! यहाँ कुछ विचार हैं। A real browser will (almost always) request and download assets such as images and CSSपहुँच पाठकों के लिए भी सही है? कैप्चा टूट गया है, इसलिए कम से कम पेशेवर सेवाएं शायद इससे बाधित न हों। कुकीज़ के उपयोग के लिए यूरोपीय संघ में अधिसूचना / सहमति की आवश्यकता होती है। Find a balance between usability for real users and scraper-proofnessप्रोग्रामिंग समय / जटिलता बनाम वित्तीय लाभ को भी संतुलित करता है।
एरिक जे।

5
@ जॉन, अगर वे रुचि रखते हैं, तो वे इसे पढ़ेंगे। इसके अलावा, मैंने इसे शीर्षकों और उप-शीर्षों के साथ पैराग्राफ में तोड़ दिया है, इसलिए लोग इसे स्कैन कर सकते हैं और उन हिस्सों को पढ़ सकते हैं जो वे चाहते हैं। वास्तव में SO पर कुछ इसी तरह के लंबे उत्तर हैं, और लोग उन्हें पढ़ते हैं।
जोनासकज -

2
@JoshCrozier - मुझे लगता है कि इस तरह की साइटें इस तरह की जानकारी के साथ अच्छा नहीं खेलती हैं। मैं यह नहीं कह रहा कि जानकारी खराब है।
जोन्ह

2
PS मेरे विचार सामग्री के विचार-विमर्श में संभवत: कानून की अदालत में इस्तेमाल किया जा सकता है। झटके की कल्पना करें जब आप साबित करते हैं कि आपके डेटा के स्वामी ने इसे आपसे प्राप्त किया है, सीधे डेटा में अद्वितीय विशेषताओं के माध्यम से ...
1

241

मैं मान लूंगा कि आपने सेट किया है robots.txt

जैसा कि दूसरों ने उल्लेख किया है, स्क्रैपर्स अपनी गतिविधियों के लगभग हर पहलू को नकली कर सकते हैं, और संभवतः उन अनुरोधों की पहचान करना बहुत मुश्किल है जो बुरे लोगों से आ रहे हैं।

मैं इस पर विचार करूंगा:

  1. एक पृष्ठ सेट करें /jail.html,।
  2. पृष्ठ में प्रवेश को अस्वीकार करें robots.txt(ताकि सम्मानजनक मकड़ियों कभी नहीं जाएँगे)।
  3. अपने एक पेज पर एक लिंक रखें, इसे सीएसएस ( display: none) के साथ छिपाएं ।
  4. आगंतुकों के आईपी पते को रिकॉर्ड करें /jail.html

इससे आपको स्क्रैपर्स से उन अनुरोधों को शीघ्रता से पहचानने में मदद मिल सकती है, जो आपके लिए अवहेलना कर रहे हैं robots.txt

आप भी अपनी बनाने के लिए चाहते हो सकता है /jail.htmlनकली डेटा के साथ (एक पूरे के पूरे वेबसाइट सामान्य पृष्ठों के समान ही, सटीक मार्कअप है, लेकिन /jail/album/63ajdka, /jail/track/3aads8, आदि)। इस तरह, खराब स्क्रैपर्स को "असामान्य इनपुट" के लिए सतर्क नहीं किया जाएगा, जब तक कि आपके पास उन्हें पूरी तरह से ब्लॉक करने का मौका न हो।


48
मैंने इस तकनीक को पहले "हनीपोट" के रूप में संदर्भित किया है। यह स्पैम फ़िल्टरिंग में भी इस्तेमाल की जाने वाली तकनीक है, जहाँ आप एक पेज पर एक ईमेल एड्रेस डालते हैं, लेकिन इसे छिपाते हैं या स्पष्ट करते हैं कि यह लोगों को वैध मेल भेजने के लिए नहीं है। फिर किसी भी मेल सर्वर का आईपी पता इकट्ठा करें जो उस पते पर मेल भेजता है।
थोमसट्रेटर

12
यह मानता है कि वे लिंक क्रॉल कर रहे हैं। अधिकांश स्क्रेपर्स किसी प्रकार के फॉर्म को सबमिट करने और वापस किए गए डेटा को परिमार्जन करने का प्रयास करेंगे।
बायरन व्हाईटलॉक

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

18
हनीपोट्स के लिए टॉस करने के लिए एक और भयानक बात टीयरगर्बिंग (या छेड़छाड़) है। यह एक पुरानी तकनीक है जो मुझे पसंद है - जब आप एक बुरे आदमी की पहचान करते हैं, तो आप उद्देश्यपूर्ण तरीके से उसके कनेक्शन को खोलकर क्रॉल करने के लिए उसकी स्पैमिंग / स्क्रेपिंग प्रक्रिया को उतने लंबे समय तक बिना शारीरिक रूप से संभव बनाए रखते हैं। बेशक, यह उन्हें सचेत कर सकता है कि आप उन पर भी हैं, लेकिन यह मजेदार है। en.wikipedia.org/wiki/Teergrubing
womp

11
इस दृष्टिकोण के साथ एक ही समस्या है अगर मैं एक लोकप्रिय मंच पर [img] yoursite / jail.html [/ img] रखता हूं । आपको अपने सिस्टम में लॉग इन किया हुआ टन आईपी प्राप्त होगा और यह फ़िल्टर करना मुश्किल होगा कि कौन सा खराब है। यदि आप इस तरह की चीज़ को रोकना चाहते हैं, तो आपको URL में IP से जुड़ा एक टोकन जोड़ना होगा। जेल की तरह कुछ। Php? T = hoeyvm और डेटाबेस में आपके पास hoeyvm और IP का एक संघ है, जिसने पृष्ठ का अनुरोध किया है।
HoLyVieR

48

उन पर मुकदमा।

गंभीरता से: यदि आपके पास कुछ पैसे हैं, तो एक अच्छे, अच्छे, युवा वकील से बात करें, जो इंटरनेट्स के आसपास अपना रास्ता जानता है। आप वास्तव में यहाँ कुछ करने में सक्षम हो सकते हैं। जहां साइटें आधारित हैं, उसके आधार पर, आप अपने देश में एक वकील को संघर्ष विराम और इसके समकक्ष लिख सकते हैं। आप कम से कम कमीनों को डराने में सक्षम हो सकते हैं।

अपने डमी मूल्यों के सम्मिलन का दस्तावेज। डमी मान डालें जो स्पष्ट रूप से (लेकिन अस्पष्ट रूप से) आपको इंगित करें। मुझे लगता है कि फोन बुक कंपनियों के साथ यह आम बात है, और यहां जर्मनी में, मुझे लगता है कि ऐसे कई उदाहरण हैं, जब नकली एंट्री के जरिए नकल करने वालों का भंडाफोड़ हुआ, जिनकी उन्होंने 1: 1 कॉपी की थी।

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

इस तरह के मामले कॉपीराइट कानूनों के लिए अच्छे हैं। पैसे कमाने के लिए दूसरे लोगों के ईमानदार काम को रोकना कुछ ऐसा है जिससे आपको लड़ने में सक्षम होना चाहिए।


9
केवल ठोस कानूनी ढांचे वाले देशों में काम करता है।
TomL

3
वकील संघर्ष पर पनपे - और इससे लाभ। शायद ही कभी अगर कोई वकील आपको अदालत न जाने की सलाह देगा। जो कोई भी आपको बताएगा कि जीत और हार का 'न्याय' की ठीक अवधारणाओं से कोई लेना देना नहीं है, लेकिन इस दिन तर्क, मनोदशा और पूर्वाग्रह हैं। याद रखें कि यदि यह गलत हो जाता है, तो आप न केवल अपने वकील की लागतों के लिए उत्तरदायी हो सकते हैं, बल्कि अन्य पक्ष भी, और यदि वे प्रति-मुकदमा करने का निर्णय लेते हैं - तो ठीक है। आप अपने घर और अपने जीवन में किसी भी अन्य संपत्ति को आसानी से खो सकते हैं। नहीं एक जुआ मैं सुझाव देना होगा। मैं आपको हर कीमत पर अदालतों से बचने की सलाह देता हूं।
फ्रेंकी

3
मैं @TomL से सहमत हूं। यदि वे पश्चिम में हैं, तो यह कुछ हद तक प्रशंसनीय है। लेकिन अगर वे भारत / चीन / रूस / यूक्रेन / जो कुछ भी हैं - तो, ​​गंभीरता से, कम से कम कोई मौका नहीं। मैं रूसी अदालतों के बारे में कह सकता हूं: वे आपके दावों के साथ काम करने से भी परेशान नहीं होंगे।
हाईस्टेकर

35

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

यदि वे आपकी साइट को पूरी तरह से स्लैम कर रहे हैं और आपके सभी पृष्ठों के माध्यम से राइफलिंग कर रहे हैं, तो आप किसी प्रकार की दर सीमित कर सकते हैं।

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


14
एक ऐसी प्रणाली बनाना जो सीमित कर सकती है कि कितने आईपी प्रति मिनट देख सकते हैं एक अच्छा हैक है, क्योंकि स्क्रीन स्क्रैपर्स किसी भी सामान्य व्यक्ति की तुलना में बहुत तेजी से साइट के माध्यम से चीर देगा।
ट्रैविसो जूल

माना। आईपी ​​में पैसे खर्च होते हैं और ज्यादातर होस्टिंग कंपनियों द्वारा सीमित होते हैं।
ताल वीस

पुन: "प्रत्येक लोड पर पृष्ठ तत्वों के आईडी या वर्ग नाम बदलने जैसी चीजें, आदि" यह इतना बुरा नहीं है यदि आप PHP के माध्यम से एक वर्ग का नाम बनाते हैं और फिर <div class = "<? Php इको $ myPHPGeneratedClassName?>?"> का उपयोग करते हैं, तो आप इसे पूरी तरह से अद्वितीय बनाने के लिए इसमें यादृच्छिक स्ट्रिंग्स का उपयोग भी कर सकते हैं। जो कुछ भी उन्हें पैटर्न खोजने से रोकता है, वह DOM के बाहर पार्स करना बहुत कठिन बनाता है।
niggles

आईपी ​​खोजना मुश्किल नहीं है। वहाँ बहुत सारे परदे के पीछे है, दोस्तों के कंप्यूटर, काम कंप्यूटर, स्कूल कंप्यूटर, पुस्तकालय कंप्यूटर ...
गुप्त

@ user257493: सच है, लेकिन हम यहां किसी ऐसे व्यक्ति के बारे में बात कर रहे हैं जो डेटा को स्क्रैप कर रहा है। संभावना है कि वे सिर्फ डेटा की फसल के लिए उस प्रयास में नहीं जा रहे हैं । और अगर वे करते हैं, तो आप अंततः आईपी की उनकी आपूर्ति को समाप्त कर देंगे।
15

31

अपने डेटा तक पहुंचने के लिए XML API प्रदान करें; एक तरीके से जो उपयोग करने के लिए सरल है। यदि लोग आपका डेटा चाहते हैं, तो वे इसे प्राप्त करेंगे, आप सभी को बाहर भी कर सकते हैं।

इस तरह से आप कार्यक्षमता को एक प्रभावी तरीके से प्रदान कर सकते हैं, यह सुनिश्चित करते हुए कि बहुत कम से कम, स्क्रेपर्स HTTP अनुरोधों और भारी मात्रा में बैंडविड्थ को नहीं करेंगे।

फिर आपको बस उन लोगों को समझाना है जो एपीआई का उपयोग करने के लिए आपका डेटा चाहते हैं। ;)


3
यह बहुत ही उचित लगता है। स्क्रीन स्क्रैपिंग को रोकने के लिए बहुत मुश्किल है, और यदि आप एक एपीआई प्रदान करते हैं, तो आप उस पर कुछ प्रतिबंध लगा सकते हैं, नोटिस ("----.com से सामग्री") जोड़ सकते हैं, और मूल रूप से नियंत्रित कर सकते हैं कि डेटा क्या दिया गया है।
alecwh

6
@alecwh: और एक्सेस के लिए चार्ज!
आंद्रे कारन

3
मैं तुम्हें इनाम से सम्मानित किया है, आंशिक रूप से क्योंकि वेब इतना बेहतर होगा अगर हर वेबसाइट ने ऐसा किया। चलो आशा करते हैं कि यह अधिक सामान्य हो जाएगा।
जोनासकज - मोनिका

1
जैसे ही आप उन्हें सेवा के लिए पंजीकृत करेंगे, वे सामान्य साइट पर लौट आएंगे
mplungjan

मैं इस वार्तालाप के विपरीत पक्ष का एक व्यक्ति हूं। मैं ब्रॉडवे शो के लिए मॉडल बनाता हूं और बड़े करीने से उपयोग करने के बजाय अपने सभी डेटा को परिमार्जन करना है।
याकोव बेस्लर

22

क्षमा करें, ऐसा करना वास्तव में काफी कठिन है ...

मेरा सुझाव है कि आप विनम्रता से उन्हें अपनी सामग्री (यदि आपकी सामग्री कॉपीराइट है) का उपयोग न करने के लिए कहें।

यदि यह है और वे इसे नहीं लेते हैं, तो आप उन पर कार्रवाई कर सकते हैं और उन्हें एक संघर्ष विराम और वांछित पत्र भेज सकते हैं ।

आम तौर पर, जो कुछ भी आप स्क्रैपिंग को रोकने के लिए करते हैं, संभवतः अधिक नकारात्मक प्रभाव के साथ समाप्त होगा, जैसे पहुंच, बॉट्स / मकड़ियों, आदि।


12

ठीक है, जैसा कि सभी पोस्ट कहते हैं, अगर आप इसे सर्च इंजन-फ्रेंडली बनाना चाहते हैं तो बॉट्स निश्चित रूप से खराब हो सकते हैं।

लेकिन आप अभी भी कुछ चीजें कर सकते हैं, और यह 60-70% स्क्रैप बॉट के लिए स्नेह हो सकता है।

नीचे की तरह एक चेकर स्क्रिप्ट बनाओ।

यदि कोई विशेष IP पता बहुत तेजी से दौरा कर रहा है, तो कुछ विज़िट (5-10) के बाद किसी फ़ाइल या डेटाबेस में अपना IP पता + ब्राउज़र जानकारी डालें।

अगला चरण

(यह एक पृष्ठभूमि प्रक्रिया होगी और सभी समय या कुछ मिनटों के बाद चलने वाली होगी।) एक और स्क्रिप्ट बनाएं जो उन संदिग्ध आईपी पते की जांच करता रहेगा।

केस 1. यदि उपयोगकर्ता एजेंट Google, बिंग , याहू जैसे ज्ञात खोज इंजन का है (आप googling द्वारा उपयोगकर्ता एजेंटों के बारे में अधिक जानकारी पा सकते हैं)। फिर आपको http://www.iplists.com/ देखना होगा । यह सूची और पैटर्न से मेल खाने का प्रयास करें। और अगर यह एक फेक यूजर-एजेंट की तरह लगता है तो अगली मुलाकात पर कैप्चा भरने को कहें । (आपको बॉट्स आईपी पतों पर थोड़ा और शोध करने की जरूरत है। मुझे पता है कि यह प्राप्त करने योग्य है और आईपी एड्रेस की भी कोशिश करें। यह मददगार हो सकता है।)

केस 2. खोज बॉट का कोई उपयोगकर्ता एजेंट नहीं: बस अगली यात्रा पर कैप्चा भरने के लिए कहें।


+1 का उपयोग iplists.com एक उत्कृष्ट विचार है
डैनियल ट्रेबिएन

10

देर से जवाब - और यह भी जवाब शायद वह नहीं है जिसे आप सुनना चाहते हैं ...

खुद ने पहले से ही विभिन्न विशेष के कई (कई दसियों) लिख दिए डेटा-खनन स्क्रैपर्स के । (सिर्फ इसलिए कि मुझे "ओपन डेटा" दर्शन पसंद है)।

यहां पहले से ही अन्य उत्तरों में कई सलाह दी गई हैं - अब मैं शैतान के वकील की भूमिका निभाऊंगा निभाऊंगा और उनकी प्रभावशीलता को बढ़ाऊंगा और / या सही करूंगा।

प्रथम:

  • अगर कोई वास्तव में आपका डेटा चाहता है
  • आप प्रभावी रूप से (तकनीकी रूप से) अपने डेटा को छिपा नहीं सकते
  • यदि डेटा आपके "नियमित उपयोगकर्ताओं" के लिए सार्वजनिक रूप से उपलब्ध होना चाहिए

कुछ तकनीकी बाधाओं का उपयोग करने की कोशिश करना परेशानी का कारण नहीं है:

  • अपने उपयोगकर्ता-अनुभव को खराब करके अपने नियमित उपयोगकर्ताओं के लिए
  • नियमित और स्वागत बॉट्स (खोज इंजन)
  • आदि...

सादे एचएमटीएल - सबसे आसान तरीका सादे HTML पृष्ठों को पार्स करना है, जिसमें अच्छी तरह से परिभाषित संरचना और सीएसएस कक्षाएं हैं। जैसे यह Firebug के साथ तत्व का निरीक्षण करने के लिए पर्याप्त है, और मेरे स्क्रैपर में सही Xpaths, और / या CSS पथ का उपयोग करें।

आप HTML संरचना को गतिशील रूप से और भी उत्पन्न कर सकते हैं, आप गतिशील रूप से CSS वर्ग-नाम (और CSS स्वयं भी) उत्पन्न कर सकते हैं (जैसे कुछ यादृच्छिक वर्ग नामों का उपयोग करके) - लेकिन

  • आप अपने नियमित उपयोगकर्ताओं को सुसंगत तरीके से सुझाव देना चाहते हैं
  • उदाहरण के लिए फिर से - पृष्ठ संरचना का विश्लेषण करने के लिए पर्याप्त है एक बार स्क्रैपर को सेटअप करने के लिए।
  • और यह कुछ "पहले से ही ज्ञात सामग्री" का विश्लेषण करके स्वचालित रूप से किया जा सकता है
    • एक बार कोई पहले से ही जानता है (पहले परिमार्जन द्वारा), जैसे:
    • "फिल कोलिन्स" के बारे में क्या है
    • "द फिल कोलिन्स" पृष्ठ को पर्याप्त रूप से प्रदर्शित करें और (स्वचालित रूप से) विश्लेषण करें कि पृष्ठ "आज" कैसे संरचित है :)

आप हर प्रतिक्रिया के लिए संरचना नहीं बदल सकते, क्योंकि आपके नियमित उपयोगकर्ता आपसे नफरत करेंगे। इसके अलावा, यह आपके (रखरखाव) के लिए अधिक परेशानी का कारण बनेगा। XPath या CSS पथ ज्ञात सामग्री से स्वचालित रूप से स्क्रैपिंग स्क्रिप्ट द्वारा निर्धारित किया जाता है।

अजाक्स - शुरुआत में थोड़ा कठिन, लेकिन कई बार स्क्रैपिंग प्रक्रिया को गति देता है :) - क्यों?

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

तो, अजाक्स ज्यादा मदद नहीं करता है ...

कुछ और जटिल पृष्ठ हैं जो बहुत पैक किए गए जावास्क्रिप्ट फ़ंक्शंस का उपयोग करते हैं

यहां दो बुनियादी तरीकों का उपयोग करना संभव है:

  • जेएस को अनपैक करें और समझें और एक स्क्रैपर बनाएं जो जावास्क्रिप्ट तर्क का अनुसरण करता है (कठिन तरीका)
  • या (अधिमानतः खुद के द्वारा उपयोग) - बस स्क्रैप के लिए मोज़ेरेप के साथ मोज़िला का उपयोग कर रहा है । उदाहरण के लिए असली स्क्रैपिंग पूर्ण रूप से प्रदर्शित जावास्क्रिप्ट सक्षम ब्राउज़र में किया जाता है, जिसे सही तत्वों पर क्लिक करने के लिए प्रोग्राम किया जाता है और ब्राउज़र विंडो से सीधे "डीकोड" प्रतिक्रियाओं को हथियाने होता है।

ऐसा स्क्रैपिंग धीमा है (नियमित ब्राउज़र की तरह ही स्क्रैपिंग किया जाता है), लेकिन यह है

  • सेटअप और उपयोग करने के लिए बहुत आसान है
  • और इसका मुकाबला करना लगभग असंभव है :)
  • और "सुस्ती" वैसे भी "तेजी से उसी आईपी आधारित अनुरोधों को अवरुद्ध करने" का मुकाबला करने के लिए आवश्यक है

उपयोगकर्ता-एजेंट आधारित फिल्टरिंग सब पर मदद करता है नहीं है। कोई भी गंभीर डेटा-माइनर इसे अपने खुरचने वाले को सही करने के लिए सेट करेगा।

लॉगिन की आवश्यकता है - मदद नहीं करता है। सबसे सरल तरीके से इसे हराया (बिना किसी विश्लेषण और / या लॉगिन-प्रोटोकॉल को स्क्रिप्ट किए) बस साइट में नियमित उपयोगकर्ता के रूप में लॉग इन कर रहा है, मोज़िला का उपयोग कर रहा है और बस मोज़ेरेप आधारित स्क्रैपर चला रहा है ...

याद रखें, अनाम बॉट के लिए लॉग इन की आवश्यकता में मदद करता है, लेकिन किसी ऐसे व्यक्ति के खिलाफ मदद नहीं करता है जो आपके डेटा को स्क्रैप करना चाहता है। वह नियमित उपयोगकर्ता के रूप में आपकी साइट पर अपना पंजीकरण करता है।

फ़्रेम का उपयोग करना बहुत प्रभावी नहीं है। इसका उपयोग कई लाइव मूवी सेवाओं द्वारा किया जाता है और इसे हराना बहुत मुश्किल नहीं है। फ़्रेम बस एक और एक HTML / जावास्क्रिप्ट पृष्ठ हैं जो विश्लेषण करने के लिए आवश्यक हैं ... यदि डेटा परेशानियों के लायक है - डेटा-माइनर आवश्यक विश्लेषण करेगा।

IP- आधारित सीमित करना बिल्कुल भी प्रभावी नहीं है - यहाँ बहुत अधिक सार्वजनिक प्रॉक्सी सर्वर हैं और यहाँ भी TOR है ... :) यह स्क्रैपिंग को धीमा नहीं करता (किसी ऐसे व्यक्ति के लिए जो वास्तव में आपका डेटा चाहता है)।

बहुत मुश्किल है छवियों में छिपा डेटा परिमार्जन। (उदाहरण के लिए डेटा को केवल सर्वर-साइड में परिवर्तित करना)। "टेसरैक्ट" (ओसीआर) को नियोजित करना कई बार मदद करता है - लेकिन ईमानदारी से - डेटा को खुरचनी के लिए परेशानियों के लायक होना चाहिए। (जो कई बार लायक नहीं है)।

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

सबसे मुश्किल वे साइट्स हैं जो जावा एप्लेट या फ्लैश का उपयोग करती हैं , और एप्लेट आंतरिक रूप से सुरक्षित https अनुरोधों का उपयोग करता है । लेकिन दो बार सोचें - आपके iPhone उपयोगकर्ताओं को कितनी खुशी होगी ...;)। इसलिए, वर्तमान में उनका उपयोग करने वाली बहुत कम साइटें हैं। अपने आप, मेरे ब्राउज़र में सभी फ्लैश सामग्री को अवरुद्ध करना (नियमित ब्राउज़िंग सत्रों में) - और उन साइटों का उपयोग न करना जो फ्लैश पर निर्भर करते हैं।

आपके मील के पत्थर हो सकते हैं ..., इसलिए आप इस विधि को आजमा सकते हैं - बस याद रखें - आप शायद अपने कुछ उपयोगकर्ताओं को ढीला कर देंगे। यह भी याद रखें, कुछ SWF फाइलें विघटित होती हैं। ;)

कैप्चा (अच्छे वाले - जैसे reCaptcha) बहुत मदद करता है - लेकिन आपके उपयोगकर्ता आपसे नफरत करेंगे ... - बस कल्पना करें, जब आपके संगीतकारों के बारे में कुछ पेज कैप्चर करने की आवश्यकता होती है, तो आपके उपयोगकर्ता आपको कैसे प्यार करेंगे।

संभवतः जारी रखने की आवश्यकता नहीं है - आप पहले से ही चित्र में आ गए हैं।

अब आपको क्या करना चाहिए:

याद रखें: अपने डेटा को छिपाना लगभग असंभव है, अगर आप दूसरी तरफ अपने नियमित उपयोगकर्ताओं के लिए उन्हें (अनुकूल तरीके से) प्रकाशित करना चाहते हैं।

इसलिए,

  • कुछ API द्वारा - अपने डेटा को आसानी से एक्सेस कर सकते हैं
    • यह आसान डेटा एक्सेस की अनुमति देता है
    • उदा। अपने सर्वर को स्क्रैप करने से रोकें - आपके लिए अच्छा है
  • सही उपयोग अधिकार सेटअप करें (उदाहरण के लिए स्रोत का हवाला देना चाहिए)
  • याद रखें, कई डेटा कॉपीराइट-सक्षम नहीं हैं - और उनकी सुरक्षा करना कठिन है
  • कुछ नकली डेटा जोड़ें (जैसा कि आपने पहले ही किया था) और कानूनी उपकरणों का उपयोग करें
    • जैसा कि दूसरों ने पहले ही कहा था, "संघर्ष विराम और पत्र भेजें"
    • अन्य कानूनी कार्रवाइयां (मुकदमा करना और पसंद करना) शायद जीतना बहुत महंगा है (विशेष रूप से गैर अमेरिकी साइटों के खिलाफ)

कुछ तकनीकी बाधाओं का उपयोग करने का प्रयास करने से पहले दो बार सोचें।

डेटा-माइनर्स को ब्लॉक करने की कोशिश करने के बजाय, अपनी वेबसाइट की प्रयोज्य में और अधिक प्रयास जोड़ें। आपका उपयोगकर्ता आपसे प्यार करेगा। तकनीकी अवरोधों में निवेश किया जाने वाला समय (और ऊर्जा) आमतौर पर लायक नहीं होता - बेहतर वेबसाइट बनाने के लिए समय बिताने के लिए बेहतर ...

इसके अलावा, डेटा-चोर सामान्य चोरों की तरह नहीं हैं।

यदि आप एक सस्ती होम अलार्म खरीदते हैं और एक चेतावनी जोड़ते हैं "यह घर पुलिस से जुड़ा है" - कई चोरों को तोड़ने की कोशिश भी नहीं की जाएगी। क्योंकि उसके द्वारा एक गलत कदम - और वह जेल जा रहा है ...

तो, आप केवल कुछ रुपये का निवेश करते हैं, लेकिन चोर निवेश और जोखिम को बहुत कम करता है।

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

इस मामले में, आपको बहुत अधिक निवेश करने की आवश्यकता है - और खुरचने वाले को बहुत कम निवेश करना चाहिए।

जरा सोचिए कि आप अपना समय और ऊर्जा कहां लगाना चाहते हैं ...

Ps: अंग्रेजी मेरी मूल नहीं है - इसलिए मेरी टूटी हुई अंग्रेजी को माफ कर दो ...


@Parapluie आपको वास्तव में मुफ्त सामग्री और / या ओपन सोर्स मॉडल के बारे में पढ़ना चाहिए - तारीखों के बारे में, यह इतिहास, लक्ष्य और नैतिकता है। और विशेष रूप से ओपन डेटा के बारे में - जिसके लिए मैंने अपने अधिकांश स्क्रेपर्स बनाए ...
jm666

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

8

तकनीक के नजरिए से: जब आप उन्हें बहुत सारे प्रश्नों के साथ एक ही बार में हिट करते हैं, तो Google केवल मॉडल करता है। यह एक बहुत करने के लिए एक पड़ाव डाल देना चाहिए।

कानूनी दृष्टिकोण से: ऐसा लगता है कि आपके द्वारा प्रकाशित किया जा रहा डेटा स्वामित्व नहीं है। मतलब कि आप नाम और आँकड़े और अन्य जानकारी प्रकाशित कर रहे हैं जिन्हें कॉपीराइट नहीं किया जा सकता है।

यदि यह मामला है, तो स्क्रैपर्स कलाकार नाम आदि के बारे में आपकी जानकारी को पुनर्वितरित करके कॉपीराइट का उल्लंघन नहीं कर रहे हैं, हालांकि, जब वे आपकी साइट को मेमोरी में लोड करते हैं तो वे कॉपीराइट का उल्लंघन कर सकते हैं क्योंकि आपकी साइट में ऐसे तत्व हैं जो कॉपीराइट योग्य हैं (जैसे लेआउट आदि)।

मैं फेसबुक v। पॉवर डॉट कॉम के बारे में पढ़ने की सलाह देता हूं और तर्कों को देखते हुए फेसबुक स्क्रीन स्क्रैचिंग को रोकता है। कई कानूनी तरीके हैं जिनसे आप किसी को अपनी वेबसाइट को स्क्रैप करने से रोकने की कोशिश कर सकते हैं। वे दूरगामी और कल्पनाशील हो सकते हैं। कभी-कभी अदालतें दलीलें खरीदती हैं। कभी-कभी वे नहीं करते।

लेकिन, यह मानते हुए कि आप सार्वजनिक डोमेन जानकारी प्रकाशित कर रहे हैं जो नामों और बुनियादी आंकड़ों की तरह कॉपीराइट नहीं है ... आपको इसे केवल मुफ्त भाषण और खुले डेटा के नाम पर जाने देना चाहिए। यही है, वेब के बारे में क्या है।


1
भले ही आप जानकारी को कॉपीराइट करने में सक्षम न हों, आप उपयोग की शर्तों में स्क्रैपिंग के खिलाफ एक निश्चित रूप से एक खंड डाल सकते हैं। फिर, उपयोग की शर्तों के उल्लंघन के लिए एक संघर्ष विराम और वांछनीय पत्र भेजें।
आंद्रे कारन

1
नि: शुल्क भाषण और खुले डेटा वास्तव में इंटरनेट की आत्मा है!
सियारा

हाँ, मुक्त भाषण और वह सब। लेकिन, स्क्रैपर्स ओपी के बजट या बैंडविथ के साथ-साथ अनौपचारिक डेटा को कॉपी करने के लिए महत्वपूर्ण मात्रा में बर्बाद कर सकते हैं।
jpaugh

8

शुरुआती स्क्रैपर्स के खिलाफ काम करने वाली चीजें:

  • आईपी ​​अवरुद्ध
  • अजाक्स का बहुत उपयोग करें
  • रेफ़र अनुरोध शीर्ष लेख देखें
  • लॉगिन की आवश्यकता है

चीजें जो सामान्य रूप से मदद करेंगी:

  • हर हफ्ते अपना लेआउट बदलें
  • robots.txt

चीजें जो मदद करेंगी लेकिन आपके उपयोगकर्ताओं को आपसे नफरत करेंगी:

  • कैप्चा

8

मैंने वेब स्क्रैपिंग को बहुत कम किया है और वेब स्क्रैपर्स को रोकने के लिए कुछ तकनीकों को संक्षेप में प्रस्तुत किया है किया है जो मेरे ब्लॉग पर जो मुझे कष्टप्रद हैं।

यह आपके उपयोगकर्ताओं और स्क्रैपर्स के बीच एक ट्रेडऑफ़ है। यदि आप आईपी को सीमित करते हैं, तो कैप्चा का उपयोग करें, लॉगिन आदि की आवश्यकता है, आप स्क्रैपर्स के लिए मुश्किल बनाते हैं। लेकिन यह आपके वास्तविक उपयोगकर्ताओं को भी दूर कर सकता है।


8

आपका सबसे अच्छा विकल्प दुर्भाग्य से काफी मैनुअल है: ट्रैफ़िक पैटर्न देखें जो आपको लगता है कि उनके आईपी पते को स्क्रैप करने और प्रतिबंधित करने के संकेत हैं।

चूंकि आप किसी सार्वजनिक साइट के बारे में बात कर रहे हैं, तो साइट को खोज-इंजन के अनुकूल बनाने से साइट भी स्क्रैप-फ्रेंडली हो जाएगी। यदि कोई खोज-इंजन आपकी साइट को क्रॉल और स्क्रैप कर सकता है तो एक दुर्भावनापूर्ण स्क्रैपर भी हो सकता है। चलना ठीक है।


4
IP ब्लॉकिंग धीमा हो जाएगी लेकिन यह आपके सर्वर के लिए बहुत काम की भी है। मान लीजिए कि मैं आपको 1000 प्रॉक्सी के साथ परिमार्जन करता हूं, मुझे अभी भी वह डेटा मिला है जो मैं चाहता हूं और अब आपका फ़ायरवॉल गड़बड़ है।
पगडियारियो

1
जब आप ऐसा करेंगे, तो वे आप पर भयंकर हो जाएंगे। 100000 पते आज उनके लिए कुछ भी खर्च नहीं करते हैं, लेकिन अगर आप उन सभी पर प्रतिबंध लगाने की कोशिश करते हैं, तो वे आपकी साइट को धीमा कर देते हैं - और वे आईपी को घुमाएंगे एक या दो बार से अधिक यात्रा न करने के लिए
mplungjan

6

यकीन है कि यह संभव है। 100% सफलता के लिए, अपनी साइट को ऑफ़लाइन लें।

हकीकत में आप कुछ ऐसे काम कर सकते हैं जो थोड़ा और मुश्किल हो जाता है। Google यह सुनिश्चित करने के लिए ब्राउज़र की जाँच करता है कि आप खोज परिणाम प्राप्त करने वाले रोबोट नहीं हैं (हालाँकि यह, अन्य सभी चीज़ों की तरह, इसे ख़राब किया जा सकता है)।

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

मुझे यकीन है कि कई अन्य लोग हैं, जिनके पास बहुत अधिक अनुभव है, लेकिन मुझे उम्मीद है कि वे विचार कम से कम कुछ हद तक सहायक हैं।


6

स्क्रीन स्क्रैपिंग को रोकने और रोकने के लिए आप कुछ चीजें कर सकते हैं। कुछ बहुत प्रभावी नहीं हैं, जबकि अन्य (एक कैप्चा) हैं, लेकिन प्रयोज्यता में बाधा है। आपको यह भी ध्यान रखना होगा कि यह वैध साइट स्क्रेपर्स को बाधित कर सकता है, जैसे कि सर्च इंजन इंडेक्स।

हालाँकि, मुझे लगता है कि यदि आप नहीं चाहते हैं कि यह स्क्रैप हो जाए तो इसका मतलब है कि आप सर्च इंजन को इसे इंडेक्स नहीं करना चाहते हैं।

यहाँ कुछ चीजें हैं जिन्हें आप आज़मा सकते हैं:

  • छवि में पाठ दिखाएं। यह काफी विश्वसनीय है, और कैप्चा की तुलना में उपयोगकर्ता पर एक दर्द कम है, लेकिन इसका मतलब है कि वे कट और पेस्ट नहीं कर पाएंगे और यह पहले से सुलभ या सुलभ नहीं होगा।
  • एक कैप्चा का उपयोग करें और पृष्ठ को वापस करने से पहले इसे पूरा करने की आवश्यकता होती है। यह एक विश्वसनीय तरीका है, लेकिन उपयोगकर्ता पर थोपने का सबसे बड़ा दर्द भी है।
  • पृष्ठों को देखने से पहले उपयोगकर्ता को किसी खाते के लिए साइन अप करने और उनके ईमेल पते की पुष्टि करने की आवश्यकता है। यह बहुत प्रभावी होगा, लेकिन पूरी तरह से नहीं - एक स्क्रीन-स्क्रैपर एक खाता स्थापित कर सकता है और होशियारी से उनके लिए लॉग इन करने के लिए अपनी स्क्रिप्ट प्रोग्राम कर सकता है।
  • यदि क्लाइंट का यूजर-एजेंट स्ट्रिंग खाली है, तो एक्सेस को ब्लॉक करें। एक साइट-स्क्रैपिंग स्क्रिप्ट अक्सर आलसी क्रमादेशित होगी और उपयोगकर्ता-एजेंट स्ट्रिंग सेट नहीं करेगी, जबकि सभी वेब ब्राउज़र करेंगे।
  • जैसा कि आप उन्हें जानते हैं आप ज्ञात स्क्रीन स्क्रैपर उपयोगकर्ता-एजेंट स्ट्रिंग्स की एक काली सूची सेट कर सकते हैं। फिर से, यह केवल आलसी-कोडित लोगों की मदद करेगा; एक प्रोग्रामर जो जानता है कि वह क्या कर रहा है, वेब ब्राउज़र को लगाने के लिए उपयोगकर्ता-एजेंट स्ट्रिंग सेट कर सकता है।
  • URL पथ को अक्सर बदलें। जब आप इसे बदलते हैं, तो सुनिश्चित करें कि पुराना काम करता रहता है, लेकिन केवल तब तक जब तक कि एक उपयोगकर्ता के पास अपना ब्राउज़र खुला होने की संभावना है। यह अनुमान लगाना कठिन है कि नया URL पथ क्या होगा। यह स्क्रिप्ट के लिए इसे हड़पने के लिए मुश्किल होगा अगर उनका URL हार्ड-कोडेड है। किसी तरह की स्क्रिप्ट के साथ ऐसा करना सबसे अच्छा होगा।

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


6
  1. नहीं, इसे रोकना संभव नहीं है (किसी भी तरह से)
  2. इसे गले लगाने। RDFa के रूप में प्रकाशित क्यों न करें और सुपर सर्च इंजन फ्रेंडली बनें और डेटा के पुनः उपयोग को प्रोत्साहित करें? लोग आपको धन्यवाद देंगे और जहां क्रेडिट देंगे (उदाहरण के तौर पर म्यूज़िकब्रेनज़ देखें)।

यह वह उत्तर नहीं है जो आप शायद चाहते हैं, लेकिन जो आप सार्वजनिक करने की कोशिश कर रहे हैं उसे क्यों छिपाएं?


5

विधि एक (छोटी साइटें केवल):
एन्क्रिप्टेड / एन्कोडेड डेटा परोसें।
मैंने अजगर (urllib, request, beautifulSoup आदि ...) का उपयोग करके वेब पर बलात्कार किया और कई वेबसाइटें देखीं जो एन्क्रिप्टेड / एन्कोडेड डेटा की सेवा करती हैं जो डिक्रिप्ट करने में सक्षम नहीं हैं, क्योंकि किसी भी प्रोग्रामिंग भाषा में एन्क्रिप्शन विधि मौजूद नहीं है।

मैंने इसे PHP वेबसाइट में एन्क्रिप्ट करके और आउटपुट को कम करके प्राप्त किया (चेतावनी: यह बड़ी साइटों के लिए एक अच्छा विचार नहीं है) प्रतिक्रिया हमेशा सामग्री का झंझट थी।

PHP में आउटपुट को कम करने का उदाहरण ( php पेज html आउटपुट को छोटा कैसे करें? ):

<?php
  function sanitize_output($buffer) {
    $search = array(
      '/\>[^\S ]+/s', // strip whitespaces after tags, except space
      '/[^\S ]+\</s', // strip whitespaces before tags, except space
      '/(\s)+/s'      // shorten multiple whitespace sequences
    );
    $replace = array('>', '<', '\\1');
    $buffer = preg_replace($search, $replace, $buffer);
    return $buffer;
  }
  ob_start("sanitize_output");
?>

विधि दो:
यदि आप उन्हें रोक नहीं सकते तो उन्हें एक प्रतिक्रिया के रूप में नकली / बेकार डेटा परोसें।

विधि तीन:
सामान्य स्क्रैपिंग उपयोगकर्ता एजेंटों को ब्लॉक करें, आप इसे प्रमुख / बड़ी वेबसाइटों में देखेंगे क्योंकि उपयोगकर्ता-एजेंट के रूप में "python3.4" के साथ उन्हें परिमार्जन करना असंभव है।

विधि चार:
सुनिश्चित करें कि सभी उपयोगकर्ता हेडर मान्य हैं, मैं कभी-कभी अपने हेडर को एक प्रामाणिक उपयोगकर्ता की तरह प्रतीत करने के लिए अधिक से अधिक हेडर प्रदान करता हूं, उनमें से कुछ एन-फू :) की तरह सही या मान्य नहीं हैं।
यहाँ कुछ शीर्ष लेखों की एक सूची दी गई है जिन्हें मैं आमतौर पर प्रदान करता हूं।

headers = {
  "Requested-URI": "/example",
  "Request-Method": "GET",
  "Remote-IP-Address": "656.787.909.121",
  "Remote-IP-Port": "69696",
  "Protocol-version": "HTTP/1.1",
  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
  "Accept-Encoding": "gzip,deflate",
  "Accept-Language": "en-FU,en;q=0.8",
  "Cache-Control": "max-age=0",
  "Connection": "keep-alive",
  "Dnt": "1",  
  "Host": "http://example.com",
  "Referer": "http://example.com",
  "Upgrade-Insecure-Requests": "1",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"
}

2

बॉट को ब्लैकलिस्ट करने के बजाय, शायद आपको उन्हें सफेद करना चाहिए। यदि आप शीर्ष कुछ इंजनों के लिए अपने खोज परिणामों को मारना नहीं चाहते हैं, तो आप उनके उपयोगकर्ता-एजेंट के तारों को सफेद कर सकते हैं, जो आमतौर पर अच्छी तरह से प्रचारित होते हैं। कम नैतिक बॉट लोकप्रिय वेब ब्राउज़रों के उपयोगकर्ता-एजेंट तार बनाने के लिए करते हैं। शीर्ष कुछ खोज इंजन आपके ट्रैफ़िक के 95% से ऊपर की ओर होने चाहिए।

खुद बॉट्स की पहचान करना काफी सरल होना चाहिए, तकनीकों का उपयोग करते हुए अन्य पोस्टर ने सुझाव दिया है।


2

इस के लिए त्वरित दृष्टिकोण एक उल्लसित / बॉट जाल सेट करना होगा।

  1. ऐसा पृष्ठ बनाएं कि यदि वह कुछ निश्चित समय में खोला गया है या यहाँ तक कि सभी में खोला गया है, तो कुछ जानकारी जैसे कि आईपी और व्हाट्सएप (आप अनियमितता या पैटर्न पर भी विचार कर सकते हैं, एकत्र करेंगे) लेकिन इस पृष्ठ को बिल्कुल नहीं खोला जाना चाहिए।

  2. सीएसएस प्रदर्शन के साथ छिपे हुए अपने पृष्ठ में इसके लिए एक लिंक बनाएं: कोई नहीं; या बाएं: -9999px; स्थिति: पूर्ण; इसे उन जगहों पर रखने की कोशिश करें, जिनकी अनदेखी करने की संभावना कम हो, जैसे कि आपकी सामग्री कहां गिरती है और आपके फुटर नहीं, क्योंकि कभी-कभी बॉट किसी पृष्ठ के कुछ हिस्सों के बारे में भूल सकते हैं।

  3. अपनी robots.txt फ़ाइल में नियमों के एक पूरे समूह को उन पृष्ठों के लिए सेट करें जिन्हें आप नहीं चाहते हैं कि मैत्रीपूर्ण बॉट्स (LOL, जैसे खुश चेहरे हों!) इस पृष्ठ को जानकारी इकट्ठा करने और उनमें से एक के रूप में सेट करने के लिए।

  4. अब, अगर एक अनुकूल बॉट इसके माध्यम से आता है, तो उस पृष्ठ को अनदेखा करना चाहिए। ठीक है, लेकिन यह अभी भी काफी अच्छा नहीं है। इन पृष्ठों में से एक जोड़े को बनाएं या अलग-अलग नामों को स्वीकार करने के लिए किसी पृष्ठ को पुनः रूट करें। और उसके बाद इन जाल पृष्ठों के नियमों को अपने robots.txt फ़ाइल में उन पृष्ठों के साथ रखें जिन्हें आप अनदेखा करना चाहते हैं।

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

  6. यदि आपने विशिष्ट टेक्स्ट स्ट्रिंग्स / वाक्य बनाए हैं तो अपने पसंदीदा खोज इंजन पर क्यों न जाएं और उन्हें खोजें, यह आपको दिखा सकता है कि आपकी सामग्री कहां समाप्त हो रही है।

वैसे भी, अगर आपको लगता है कि रचनात्मक और रचनात्मक रूप से यह एक अच्छा शुरुआती बिंदु हो सकता है। सबसे अच्छी बात यह जानने की होगी कि बॉट कैसे काम करता है।

मैं कुछ आईडी या पेज तत्व पर जिस तरह से विशेषताओं को प्रदर्शित करता हूं, उसके बारे में सोचता हूं:

<a class="someclass" href="../xyz/abc" rel="nofollow" title="sometitle"> 

हर बार कुछ बॉट्स को आपके पृष्ठों या लक्षित तत्वों में विशिष्ट पैटर्न की तलाश में सेट किया जा सकता है, इसलिए यह अपना रूप बदलता है।

<a title="sometitle" href="../xyz/abc" rel="nofollow" class="someclass"> 

id="p-12802" > id="p-00392"

1
आप सिर्फ उन पर प्रतिबंध नहीं लगाना चाहते हैं, आप उनके साथ पूरी तरह से पेंच चाहते हैं ... मैं इसे प्यार करता हूं!
Zoidberg

स्टील्थ बैनिंग ठीक वही है जो मैं सोच रहा था (उर्फ छायांकन, नरक प्रतिबंध)।
एरिक

1

आप सामान्य स्क्रीन स्क्रैपिंग को रोक नहीं सकते हैं। बेहतर या बदतर के लिए, यह वेब की प्रकृति है।

जब तक वे एक पंजीकृत उपयोगकर्ता के रूप में लॉग इन नहीं करते हैं, तब तक आप इसे बना सकते हैं। यह अपाचे में करना बहुत मुश्किल नहीं है । मुझे लगता है कि IIS में भी ऐसा करना मुश्किल नहीं होगा।


1

एक तरीका यह होगा कि XML एक्सटेंशन्स, URL एनकोडेड स्ट्रिंग्स, HTML एन्कोडेड JSON, या डेटा URIs के साथ प्रीफॉर्मेटेड टेक्स्ट के रूप में कंटेंट परोसें, फिर इसे क्लाइंट पर HTML में बदलें। यहाँ कुछ साइटें हैं जो ऐसा करती हैं:

  • स्केचर्स : एक्सएमएल

    <document 
     filename="" 
     height="" 
     width="" 
     title="SKECHERS" 
     linkType="" 
     linkUrl="" 
     imageMap="" 
     href=&quot;http://www.bobsfromskechers.com&quot; 
     alt=&quot;BOBS from Skechers&quot; 
     title=&quot;BOBS from Skechers&quot; 
    />
  • क्रोम वेब स्टोर : JSON

    <script type="text/javascript" src="https://apis.google.com/js/plusone.js">{"lang": "en", "parsetags": "explicit"}</script>
  • बिंग न्यूज : डेटा URL

    <script type="text/javascript">
      //<![CDATA[
      (function()
        {
        var x;x=_ge('emb7');
        if(x)
          {
          x.src='data:image/jpeg;base64,/*...*/';
          } 
        }() )
  • प्रोटॉपेज : URL एनकोडेड स्ट्रिंग्स

    unescape('Rolling%20Stone%20%3a%20Rock%20and%20Roll%20Daily')
  • TiddlyWiki : HTML इकाइयाँ + विकृत JSON

       <pre>
       {&quot;tiddlers&quot;: 
        {
        &quot;GettingStarted&quot;: 
          {
          &quot;title&quot;: &quot;GettingStarted&quot;,
          &quot;text&quot;: &quot;Welcome to TiddlyWiki,
          }
        }
       }
       </pre>
  • अमेज़ॅन : आलसी लोड हो रहा है

    amzn.copilot.jQuery=i;amzn.copilot.jQuery(document).ready(function(){d(b);f(c,function() {amzn.copilot.setup({serviceEndPoint:h.vipUrl,isContinuedSession:true})})})},f=function(i,h){var j=document.createElement("script");j.type="text/javascript";j.src=i;j.async=true;j.onload=h;a.appendChild(j)},d=function(h){var i=document.createElement("link");i.type="text/css";i.rel="stylesheet";i.href=h;a.appendChild(i)}})();
    amzn.copilot.checkCoPilotSession({jsUrl : 'http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-js/cs-copilot-customer-js-min-1875890922._V1_.js', cssUrl : 'http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-css/cs-copilot-customer-css-min-2367001420._V1_.css', vipUrl : 'https://copilot.amazon.com'
  • XMLCalabash : Namespaced XML + कस्टम MIME प्रकार + कस्टम फ़ाइल एक्सटेंशन

       <p:declare-step type="pxp:zip">
            <p:input port="source" sequence="true" primary="true"/>
            <p:input port="manifest"/>
            <p:output port="result"/>
            <p:option name="href" required="true" cx:type="xsd:anyURI"/>
            <p:option name="compression-method" cx:type="stored|deflated"/>
            <p:option name="compression-level" cx:type="smallest|fastest|default|huffman|none"/>
            <p:option name="command" select="'update'" cx:type="update|freshen|create|delete"/>
       </p:declare-step>

यदि आप उपरोक्त में से किसी पर स्रोत देखते हैं, तो आप देखते हैं कि स्क्रैपिंग बस मेटाडेटा और नेविगेशन वापस कर देगा।


इसलिए ... यह दृष्टिकोण और भी आसान बना देता है, क्योंकि सामग्री अब एक समान प्रारूप में है। वास्तव में, इसे अब स्क्रैपिंग नहीं कहा जाएगा : इसे पार्सिंग कहा जाता है , और इसके वास्तव में प्रोग्राम करने के लिए बहुत आसान है।
jpaugh

1

अधिकांश पहले से ही कहा गया है, लेकिन क्या आपने क्लाउडफ़ेयर सुरक्षा पर विचार किया है? मेरा मतलब यह है:

चित्र का वर्णन

अन्य कंपनियां शायद ऐसा करती हैं, CloudFlare केवल एक ही है जिसे मैं जानता हूं।

मुझे पूरा यकीन है कि उनका काम जटिल हो जाएगा। मुझे एक बार आईपी 4 महीने के लिए स्वचालित रूप से प्रतिबंधित कर दिया गया था, जब मैंने रेट लिमिट (मैं सरल AJAX अनुरोध लूप का उपयोग किया) के कारण CloudFlare द्वारा संरक्षित साइट के डेटा को स्क्रैप करने की कोशिश की थी।


1

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


0

कैप्चा के पीछे अपनी सामग्री डालने का मतलब होगा कि रोबोट को आपकी सामग्री तक पहुंचने में मुश्किल होगी। हालांकि, मानव को असुविधा होगी, इसलिए यह अवांछनीय हो सकता है।


0

यदि आप एक महान उदाहरण देखना चाहते हैं, तो http://www.bkstr.com/ देखें । वे कुकी सेट करने के लिए aj / s एल्गोरिथ्म का उपयोग करते हैं, फिर पृष्ठ को फिर से लोड करते हैं ताकि यह कुकी का उपयोग यह सत्यापित करने के लिए कर सके कि अनुरोध एक ब्राउज़र के भीतर चलाया जा रहा है। इससे बचने के लिए बनाया गया एक डेस्कटॉप ऐप निश्चित रूप से प्राप्त कर सकता है, लेकिन यह अधिकांश cURL प्रकार के स्क्रैपिंग को रोक देगा।


0

स्क्रीन स्क्रेपर्स HTML को प्रोसेस करके काम करते हैं। और अगर वे आपके डेटा को प्राप्त करने के लिए दृढ़ हैं तो बहुत कुछ नहीं है आप तकनीकी रूप से कर सकते हैं क्योंकि मानव नेत्रगोलक कुछ भी संसाधित करता है। कानूनी तौर पर यह पहले ही बताया जा चुका है कि आपके पास कुछ सहारा हो सकता है और यह मेरी सिफारिश होगी।

हालाँकि, आप गैर-एचटीएमएल-आधारित प्रस्तुति तर्क का उपयोग करके अपने डेटा के महत्वपूर्ण हिस्से को छिपा सकते हैं

  • प्रत्येक कलाकार / एल्बम, आदि के लिए एक फ़्लैश फ़ाइल बनाएँ।
  • प्रत्येक कलाकार सामग्री के लिए एक छवि बनाएं। हो सकता है कि कलाकार के नाम के लिए सिर्फ एक छवि, आदि पर्याप्त होगी। सर्वर पर JPEG / PNG फ़ाइल पर टेक्स्ट रेंडर करके और उस इमेज को लिंक करके ऐसा करें।

ध्यान रखें कि यह संभवतः आपकी खोज रैंकिंग को प्रभावित करेगा।


0

HTML, CSS और जावास्क्रिप्ट उत्पन्न करें। जनरेटर की तुलना में जनरेटर लिखना आसान है, इसलिए आप प्रत्येक सेवा किए गए पृष्ठ को अलग तरीके से उत्पन्न कर सकते हैं। आप अब कैश या स्थिर सामग्री का उपयोग नहीं कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.