2010-01-14 9 views
23

मैं PHP और MySQL का उपयोग करके एक साइट सेट अप कर रहा हूं जो अनिवार्य रूप से केवल मौजूदा डेटाबेस के लिए एक वेब फ्रंट-एंड है। समझा जा सकता है कि मेरा ग्राहक डाटाबेस में डेटा की प्रतिलिपि बनाने में सक्षम होने से रोकने के लिए बहुत उत्सुक है, फिर भी एक ही समय में सार्वजनिक रूप से उपलब्ध सब कुछ चाहता है और डीबी में प्रत्येक रिकॉर्ड को प्रदर्शित करने के लिए "सभी देखें" लिंक भी चाहता है।किसी वेबसाइट डेटाबेस से 'डेटा स्क्रैपिंग' से बचने के लिए शीर्ष तकनीक

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

क्या किसी के पास इसे रोकने या रोकने के लिए कोई अच्छी रणनीति है जो वे साझा कर सकते हैं।

+11

@ एडसी अभी तक, यह एक बेवकूफ सवाल है। "मैं चाहता हूं कि पूरा डेटाबेस सार्वजनिक रूप से दिखाई दे, लेकिन मैं नहीं चाहता कि लोग इसे पढ़ सकें"। – meagar

+1

आप सामग्री – Marcel

उत्तर

29

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

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

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

+6

हाँ, यह मेरा भी लेना था। लेकिन स्पष्ट रूप से क्लाइंट के पास उस साइट पर एक और 'विशेषज्ञ' नजर आया है जिसने अब मेरे क्लाइंट को इस बारे में कुछ घबराहट में पाया है।ऐसा लगता है कि इसे और अधिक कठिन बनाने के किसी भी प्रयास की तरह या तो उबरने के लिए तुच्छ होगा (उदाहरण के लिए लॉगिन की आवश्यकता है, अत्यधिक या अजीब HTML टैग में डेटा दफनाना) या गंभीर पहुंच/एसईओ प्रभाव (उदाहरण के लिए PHP पक्ष पर डेटा को मैश करना और जावास्क्रिप्ट के साथ इसे फिर से 'अनमाशिंग' करना, यह जांचना कि क्या विज़िटर 'उचित' वेब ब्राउज़र इत्यादि का उपयोग कर रहा है) आपकी मदद के लिए सभी को धन्यवाद। – Addsy

2

मुझे नहीं पता कि आप इसे क्यों रोकेंगे। ग्राहक डेटा की पेशकश कर रहा है।

संभावित रूप से वे कुछ अद्वितीय तरीके से मूल्य बनाते हैं जो डेटा में मामूली रूप से प्रतिबिंबित नहीं होता है।

वैसे भी।

आप ब्राउज़र, स्क्रीन रिज़ॉल्यूशन और आईपी पते की जांच कर सकते हैं यह देखने के लिए कि क्या यह किसी प्रकार का स्वचालित स्क्रैपर है।

अधिकांश चीजें जैसे कर्ल और wget - ध्यान से कॉन्फ़िगर किए जाने तक - स्पष्ट रूप से ब्राउज़र नहीं हैं।

45

सार्वजनिक रूप से उपलब्ध सामग्री को स्क्रैप से एक निर्धारित व्यक्ति रोकने के लिए कुछ नहीं है, तब तक आप ग्राहक की चिंताओं को कम करने के लिए कुछ बुनियादी बातें कर सकते हैं:

  • रेट की सीमा उपयोगकर्ता खाते, आईपी पता, प्रयोक्ता एजेंट को, इत्यादि ... - इसका मतलब है कि आप एक निश्चित उपयोगकर्ता समूह को एक निश्चित अवधि में डाउनलोड कर सकते हैं। यदि आप स्थानांतरित होने वाली बड़ी मात्रा में डेटा का पता लगाते हैं, तो आप खाता या आईपी पता बंद कर देते हैं।

  • JavaScript की आवश्यकता - ग्राहक एक इंटरैक्टिव ब्राउज़र के बजाय एक barebones मकड़ी के कुछ समानता है सुनिश्चित करने के लिए ...

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

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

  • robots.txt - ज्ञात रोबोट उपयोगकर्ता एजेंटों को स्पष्ट वेब मकड़ियों से इनकार करने के लिए।

    उपयोगकर्ता एजेंट: *

    अस्वीकार करें:/

  • उपयोग रोबोट मेटाटैग। यह मकड़ियों को अनुरूप बनाना बंद कर देगा।इस उदाहरण के लिए आप का अनुक्रमण करने से रोकना होगा:

    < मेटा नाम = "रोबोट" सामग्री = "नोइंडेक्स, का पालन करें, ग़ैर-संग्रह" >

निवारण के विभिन्न स्तरों रहे हैं और पहले विकल्प शायद है कम से कम घुसपैठिए।

+1

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

5

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

अंगूठे का नियम: यदि आप अपने आप को कुछ रखना चाहते हैं, तो इसे इंटरनेट से दूर रखें।

-3

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

जो लोग आमतौर पर स्क्रैप करते हैं वे मूल साइट के लिंक को शामिल करने का विरोध नहीं करते हैं क्योंकि यह मूल लेखक के साथ एक प्रकार का तालमेल बनाता है।

तो मेरी सलाह है कि आप अपने मालिक से पूछें कि क्या यह वास्तव में वेबसाइट के स्वास्थ्य के लिए सबसे अच्छी बात हो सकती है।

+3

आपको लगता है कि स्क्रीन स्क्रैपिंग अवैध क्यों है? – DaveE

1

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

मैं आपके ग्राहक को यह बताने का सुझाव दूंगा कि यह एक अविश्वसनीय कार्य है और आपके काम के महत्वपूर्ण हिस्सों के साथ मिल रहा है।

7

अपने फ्रंटएंड के लिए फ्लैश या सिल्वरलाइट का उपयोग करने का प्रयास करें।

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

+6

फ़्लैश ऐप्स किसी भी व्यक्ति के लिए HTML साइट्स की तुलना में 'स्क्रैप' (यानी, डेटा को अवरुद्ध और पुन: व्याख्या करने) के लिए और भी आसान है, जो जानता है कि, अगर वे पृष्ठ पर एएमएफ ऑब्जेक्ट्स के रूप में जानकारी भेजते हैं। – JAL

11

कुछ तरीके हैं जो आप कर सकते हैं, हालांकि कोई भी आदर्श नहीं है।

  1. डेटा को HTML के बजाय छवि के रूप में प्रस्तुत करें। इसके लिए सर्वर की ओर अतिरिक्त प्रसंस्करण की आवश्यकता है, लेकिन PHP में ग्राफिक्स libs के साथ मुश्किल नहीं होगा। वैकल्पिक रूप से, आप इसे केवल एक निश्चित आकार (यानी सभी) के अनुरोध के लिए कर सकते हैं।

  2. एक पृष्ठ खोल लोड करें, फिर डेटा को एक AJAX कॉल के माध्यम से पुनर्प्राप्त करें और इसे DOM में डालें। एक हैश सेट करने के लिए सत्र का उपयोग करें जिसे सत्यापन के रूप में AJAX कॉल के साथ वापस पास किया जाना चाहिए। हैश केवल एक निश्चित अवधि (यानी 10 सेकंड) के लिए मान्य होगा। यह वास्तव में सिर्फ एक अतिरिक्त कदम जोड़ रहा है जिसे किसी को डेटा प्राप्त करने के लिए कूदना होगा, लेकिन सरल पृष्ठ स्क्रैपिंग को रोक देगा।

2

एडोब फ्लेक्स - फ्लैश एप्लिकेशन फ्रंट एंड जैसे कुछ का उपयोग करना - इसे ठीक करेगा।

इसके अलावा, यदि आप उपयोगकर्ताओं के उपयोग के लिए आसान होना चाहते हैं, तो उपयोगकर्ताओं की प्रतिलिपि बनाना आसान है।

0

बुलेटिन बोर्ड के ट्रोल सुरक्षा के समान कुछ बनाने के बारे में क्या ... यदि एक स्क्रैप का पता चला है (शायद एक आईपी से प्रति मिनट तक पहुंच की एक निश्चित मात्रा, या एक साइटमैप क्रॉल की तरह एक निर्देशित क्रॉल), तो आप कर सकते हैं फिर कचरा डेटा पेश करना शुरू करें, जैसे फ़ोन नंबर के कुछ अंक बदलना या नाम फ़ील्ड में मूर्ख नाम जोड़ना।

इसे Google आईपी के लिए बंद करें!

3

कीबोर्ड से अपने हाथों को दूर करें और अपने ग्राहक से कारण क्यों वह डेटा दिखाना चाहता है लेकिन स्क्रैप करने में सक्षम नहीं है?

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

ऐसा हो सकता है कि वह वास्तव में इसे सार्वजनिक रूप से सुलभ नहीं चाहता है और आपको प्रमाणीकरण/प्रमाणीकरण जोड़ने की आवश्यकता है। या वह तय कर सकता है कि वास्तव में एक एपीआई खोलने में मूल्य है। लेकिन जब तक आप पूछें तब तक आपको पता नहीं चलेगा।

0

आम तौर पर एक सभ्य राशि को स्क्रीन-स्क्रैप करने के लिए आपको अपने सर्वर पर सैकड़ों, हजारों (और अधिक) अनुरोध करना पड़ता है। मेरा सुझाव है कि आप इस से संबंधित स्टैक ओवरफ़्लो प्रश्न पढ़ें:

How do you stop scripters from slamming your website hundreds of times a second?

4

बल द्वारा reCAPTCHA प्रत्येक अद्वितीय आईपी के लिए हर 10 पृष्ठ लोड

0

उपयोग तथ्य यह है कि स्क्रेपर्स के लिए जल्दी उत्तराधिकार में कई पृष्ठों को लोड करते हैं स्क्रैपिंग व्यवहार का पता लगाएं। X सेकंड पर प्रत्येक एन पृष्ठ लोड के लिए एक कैप्चा प्रदर्शित करें, और/या प्रत्येक पृष्ठ लोड के लिए एक तेजी से बढ़ती देरी शामिल करें जो कहता है कि प्रत्येक मिनट में पृष्ठों के दसियों को लोड किया जा रहा है।

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

संबंधित मुद्दे