अपनी वेबसाइट को स्लैम करने से स्क्रिप्टर्स को रोकना


489

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

परिस्थिति

यह woot.com पर bag o 'बकवास बिक्री के बारे में है। मैं वूट कार्यशाला का अध्यक्ष हूं, वूट की सहायक कंपनी जो डिजाइन करती है, उत्पाद विवरण, पॉडकास्ट, ब्लॉग पोस्ट लिखती है और मंचों को मॉडरेट करती है। मैं CSS / HTML के साथ काम करता हूं और केवल अन्य तकनीकों से बमुश्किल परिचित हूं। मैं डेवलपर्स के साथ मिलकर काम करता हूं और यहां सभी उत्तरों के माध्यम से बात की है (और कई अन्य विचार जो हमारे पास हैं)।

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

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

मूल्यांकन

lc : स्टैकओवरफ्लो और अन्य साइटों पर जो इस पद्धति का उपयोग करते हैं, वे लगभग हमेशा प्रमाणित (लॉग इन) उपयोगकर्ताओं के साथ काम कर रहे हैं, क्योंकि प्रयास किए जा रहे कार्य की आवश्यकता होती है।

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

इसलिए हम IPs के लिए स्कैनिंग करने के लिए वापस आ गए हैं, जो a) क्लाउड नेटवर्किंग के इस युग में काफी बेकार है और spambot लाश और b) बहुत से निर्दोष लोगों को पकड़ता है जो एक आईपी पते से आते हैं (मुद्दों का उल्लेख नहीं करने के लिए) गैर-स्थिर आईपी ISP और संभावित प्रदर्शन हिट को ट्रैक करने की कोशिश कर रहा है)।

ओह, और लोगों को हमें कॉल करना सबसे खराब संभव परिदृश्य होगा। क्या हम उन्हें आपके पास बुला सकते हैं?

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

 

lc फिर से : "जब तक, निश्चित रूप से, प्रचार आपकी मार्केटिंग योजना का हिस्सा है।" हाँ, यह निश्चित रूप से है। जब आइटम दिखाई देता है, तो आश्चर्य होता है, साथ ही साथ यदि आप एक को प्राप्त करने का प्रबंधन करते हैं, तो शायद यह उतना ही महत्वपूर्ण या अधिक महत्वपूर्ण है जितना कि आप वास्तव में प्राप्त होने वाले बकवास से। जो कुछ भी पहले-पहले / पहली-सेवा को समाप्त करता है, वह बकवास 'जीत' के रोमांच के लिए हानिकारक है।

 

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

बाकी प्रतिक्रियाएं आम तौर पर आईपी ट्रैकिंग पर निर्भर करती हैं, जो फिर से, दोनों (बॉटनेट / लाश / क्लाउड नेटवर्किंग के साथ) और हानिकारक (एक ही-आईपी गंतव्यों से आने वाले कई मासूमों को पकड़ते हुए) बेकार लगती हैं।

कोई अन्य दृष्टिकोण / विचार? मेरे डेवलपर्स यह कहते रहते हैं कि "चलो बस कैप्चा करते हैं" लेकिन मुझे उम्मीद है कि सभी वास्तविक मनुष्यों के लिए हमारी कुछ बकवास चाहने वाली पद्धतियाँ कम हैं।

मूल प्रश्न

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

आप स्क्रिप्टर्स और बॉट्स के साथ प्रोग्रामेटिकली [a] फिगर करने का प्रयास करते हैं, जब आप उक्त आइटम बेच रहे हैं, और [b] सुनिश्चित करें कि वे इसे खरीदने वाले पहले लोगों में से हैं। यह दो कारणों से बेकार है:

  1. आपकी साइट को गैर-मनुष्यों द्वारा पटक दिया जाता है, जिससे सभी के लिए सब कुछ धीमा हो जाता है।
  2. पटकथाकारों ने उत्पाद को 'जीत' दिया, जिससे नियमित लोग ठगा हुआ महसूस करते हैं।

एक स्पष्ट रूप से स्पष्ट समाधान यह है कि अपने उपयोगकर्ताओं को अपना ऑर्डर देने से पहले कूदने के लिए कुछ हुप्स बनाएं, लेकिन इसके साथ कम से कम तीन समस्याएं हैं:

  • उपयोगकर्ता अनुभव मनुष्यों के लिए बेकार है, क्योंकि उन्हें कैप्चा को समझना है, बिल्ली को निकालना है, या गणित की समस्या को हल करना है।
  • यदि कथित लाभ काफी अधिक है, और भीड़ काफी बड़ी है, तो कुछ समूह किसी भी मोड़ के आसपास अपना रास्ता ढूंढ लेंगे, जिससे हथियारों की दौड़ होगी। (यह विशेष रूप से सच है जितना आसान ट्वीक है, छिपा हुआ 'टिप्पणियां' फ़ॉर्म, फॉर्म तत्वों को फिर से व्यवस्थित करना, उन्हें गलत-लेबल करना, छिपे हुए 'गोचा' पाठ सभी एक बार काम करेंगे और फिर इस विशिष्ट रूप को लक्षित करने के लिए लड़ने के लिए बदलना होगा ।)
  • यहां तक ​​कि अगर स्क्रिप्टर्स आपके ट्वीक को 'हल' नहीं कर सकते हैं, तो यह उन्हें आपके फ्रंट पेज को स्लैम करने से नहीं रोकता है, और फिर ऑर्डर को मैन्युअल रूप से भरने के लिए ट्रॉटर के लिए अलार्म बज रहा है। यह देखते हुए कि उन्हें [a] हल करने से लाभ मिलता है, वे संभवतः अभी भी [b] जीतेंगे क्योंकि वे ऑर्डर पेज पर पहुंचने वाले पहले इंसान होंगे। इसके अतिरिक्त, 1. अभी भी होता है, जिससे सर्वर त्रुटियों और सभी के लिए एक कम प्रदर्शन होता है।

एक और उपाय यह है कि IPs को बहुत बार मारते हुए देखें, उन्हें फ़ायरवॉल से ब्लॉक करें, या अन्यथा उन्हें ऑर्डर करने से रोकें। यह 2 को हल कर सकता है और [ख] को रोक सकता है, लेकिन आईपी के लिए स्कैनिंग से मारा जाने वाला प्रदर्शन बड़े पैमाने पर है और संभवतः 1 जैसी अधिक समस्याओं का कारण होगा, क्योंकि स्क्रिप्टर्स अपने दम पर पैदा कर रहे थे। इसके अतिरिक्त, क्लाउड नेटवर्किंग और स्पैम्बोट लाश की संभावना आईपी चेकिंग को काफी बेकार बना देती है।

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

लक्ष्य

  1. गैर-स्क्रिप्टिंग मनुष्यों को आइटम बेचें।
  2. साइट को बॉट्स द्वारा धीमी गति से न चलाएं।
  3. किसी भी कार्य के साथ 'सामान्य' उपयोगकर्ताओं को परेशान न करें यह साबित करने के लिए कि वे मानव हैं।

1
मुझे लगता है कि आपने लक्ष्यों का खंडन किया है: अनुभव को बिल्कुल वैसा ही बनाए रखना, बल्कि बॉट्स से छुटकारा पाना। मुझे लगता है कि दूसरे के एक हिस्से का त्याग नहीं करते हुए आप एक प्राप्त नहीं कर सकते।
अधिकतम

यह एक सामुदायिक विकी है, इसलिए एक छुरा लेने के लिए स्वतंत्र महसूस करें, लेकिन मैं ज्यादातर हर बिंदु को स्पष्ट रूप से कवर करने की कोशिश कर रहा था क्योंकि मैं इस बात पर विचार कर सकता था कि कोशिश करने के लिए स्पष्ट चीजें हैं जो हमने पहले ही कोशिश की थी और छूट दी थी।
डेव रटलेज

क्यों न केवल बार-बार अपराधियों को कैश किया जाए, बस जो भी पेज वे बार-बार अनुरोध कर रहे हैं, उसे अपडेट न करें। IPv4 और MAC पते कुल मिलाकर 32 + 48 बिट्स हैं। 1 मिलियन उपयोगकर्ताओं के लिए यह 10MB है, समस्या नहीं होनी चाहिए। संयोजन IPv4 और MAC को आपको सभी प्रकार के उपयोगकर्ताओं को अधिक सटीक रूप से ट्रैक करने में मदद करनी चाहिए
John Leidegren

4
मुझे वास्तव में समझ नहीं आ रहा है कि आपको गुमनाम उपयोगकर्ताओं को बकवास बिक्री की आवश्यकता क्यों है। न केवल लॉग-इन करने वाले उपयोगकर्ताओं को ही इसकी पेशकश क्यों करें? यदि आप ऐसा करते हैं, तो आपके पास अज्ञात उपयोगकर्ता पृष्ठ को बहुत बार नहीं मारेंगे और फिर खराब उपयोगकर्ताओं पर प्रतिबंध लगा सकते हैं।
रयान गिल

1
मुझे लगता है कि कुछ लोग यहां एक महत्वपूर्ण कारक को याद कर रहे हैं: इन बॉट्स को लॉग इन करने और खरीदने के लिए भी सेट किया गया है। वे जानते हैं कि एक वैध खाता है और इसमें लॉग इन किया जा सकता है। इसके अलावा, वास्तविक लोग जो वूट का उपयोग करते हैं, वह मिनट जिस पर एक आइटम आने वाला है और हर 2-5 सेकंड को पुनः लोड करने के लिए F5 को हिट करता है। यह मान्य सामान्य मानव उपयोग है।
कोडिंगविट्स्पाइक

जवाबों:


229

एसओ जैसे कुछ को लागू करने के बारे में कैप्चा के साथ क्या करता है?

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

यदि वे एक पंक्ति (जैसे, 2 या 3) में चेक x को विफल करते हैं, तो उस आईपी को एक टाइमआउट या अन्य ऐसे उपाय दें। फिर टाइमआउट के अंत में, उन्हें फिर से चेक में वापस डंप करें।


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

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

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


संपादित करें: एक अन्य विकल्प यह है कि अगर वे कई बार विफल होते हैं, और आप उत्पाद की मांग के बारे में आश्वस्त होते हैं, तो उन्हें ब्लॉक करने के लिए उन्हें व्यक्तिगत रूप से और कॉल करें।

कॉल करने वाले लोगों को असिन माप की तरह लगता है, लेकिन यह सुनिश्चित करता है कि कंप्यूटर के पीछे कहीं एक मानव है । कुंजी को केवल उस स्थिति के लिए ब्लॉक होना चाहिए जो तब तक लगभग कभी नहीं होनी चाहिए जब तक कि यह एक बॉट न हो (उदाहरण के लिए एक पंक्ति में कई बार विफल)। फिर यह मानव संपर्क को बढ़ावा देता है - फोन लेने के लिए।

उन्हें मुझे फोन करने की टिप्पणी के जवाब में, जाहिर है कि यहाँ व्यापार है। क्या आप यह सुनिश्चित करने के बारे में पर्याप्त चिंतित हैं कि आपके उपयोगकर्ता बिक्री पर जाने पर युगल फोन कॉल स्वीकार करने के लिए मानव हैं? यदि मैं किसी उत्पाद को मानव उपयोगकर्ताओं को प्राप्त करने के बारे में चिंतित था, तो मुझे यह निर्णय लेना होगा, शायद इस प्रक्रिया में अपने समय के एक (छोटे) बिट का त्याग कर रहा हूं।

चूंकि ऐसा लगता है कि आप बॉट को ऊपरी हाथ नहीं आने देने के लिए दृढ़ हैं / आपकी साइट को स्लैम करते हैं, मेरा मानना ​​है कि फोन एक अच्छा विकल्प हो सकता है। चूंकि मैं आपके उत्पाद से लाभ नहीं कमाता, इसलिए मुझे इन कॉलों को प्राप्त करने में कोई दिलचस्पी नहीं है। क्या आप उस लाभ में से कुछ को साझा करने के लिए थे, हालांकि, मुझे दिलचस्पी हो सकती है। जैसा कि यह आपका उत्पाद है, आपको यह तय करना होगा कि आप कितना ध्यान रखते हैं और तदनुसार लागू करते हैं।


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

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


13
Google इसी दृष्टिकोण का उपयोग करता है, और उनके पास जाने के लिए केवल IP पते होते हैं। Google पर खोज करने से पहले अक्सर काम पर मुझे कैप्चा मिल जाएगा क्योंकि वे एक ही आईपी पते से बॉट जैसा व्यवहार देखते हैं। मुझे लगता है कि यह दृष्टिकोण (बॉट-लाइक व्यवहार के बाद कैप्चा) आपको मिलने वाला सबसे अच्छा है।
रॉस

7
मैंने पहले भी एक कैप्चा के लिए मुझसे Google से पूछा था, लेकिन यह मेरी अपनी गलती थी - मैं कैलकुलेटर के रूप में उनका उपयोग कर रहा था, दर्जनों-समान समरूपता कर रहा था।
मार्कस 17

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

लोगों को बाहर करने और फोन कॉल का उपयोग करने के बजाय, आप cur92Siva@site.com की तरह एक अस्थायी ईमेल पता उत्पन्न कर सकते हैं, लेकिन एक छवि के साथ सामने का हिस्सा उत्पन्न कर सकते हैं।
सैम

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

193

आपको बॉट बनाने के लिए सामान खरीदने का एक तरीका जानने की जरूरत है जो बड़े पैमाने पर अधिक है: 12 मिमी विंगनट: $ 20। स्क्रिप्ट-लेखकों के निर्णय लेने से पहले देखें कि कितने बॉट्स स्नैप-अप करते हैं।

अधिक सर्वर खरीदने और बैंडविड्थ के लिए भुगतान करने के लिए मुनाफे का उपयोग करें।


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

13
उन्हें चार्ज न करें, लेकिन उन्हें विशेष रूप से आइटम खरीदने की कोशिश के लिए बॉट के रूप में चिह्नित करें। यदि कोई भी निकाय किसी फ़ॉनी आइटम को खरीदता है, तो उन्हें बॉट के रूप में चिह्नित करें, और उन्हें अस्वीकृत करें। आप शायद उन्हें कुछ घंटों के लिए बंद कर सकते हैं।
किब्बी

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

2
अगर स्क्रिप्ट किडी को गुस्सा आता है तो वे आपको टैग करने और कानून-प्रवर्तन के लिए उन्हें सौंपने के लिए खुद को पर्याप्त उजागर कर सकते हैं।
जैको

9
sqook: यह एक प्रौद्योगिकी समाधान नहीं है, बल्कि एक वास्तविक विश्व समाधान है। बैंकों में बंदूकों के साथ सुरक्षा गार्ड लगाना एक ही बात है। यह हार्ड-नोज़्ड लग सकता है, लेकिन बदमाश हैं, इसलिए हार्ड-नोज़ हो। उन्हें रोकें जहां यह दर्द होता है जब तक वे बंद नहीं करते।
क्रिस्टोफर महान

162

मेरा समाधान 'बॉट्स और स्क्रिप्ट्स के लिए लगभग 10 मिनट की देरी से स्क्रीन-स्क्रैपिंग को बेकार बनाना होगा।

यहाँ है कि मैं यह कैसे करूँगा:

  • लॉग करें और किसी भी दोहराने वाले की पहचान करें।

आपको हर हिट पर हर आईपी पते को लॉग इन करने की आवश्यकता नहीं है। केवल हर 20 हिट में से एक को ट्रैक करें। एक दोहराने वाला अपराधी अभी भी एक यादृच्छिक रूप से समसामयिक ट्रैकिंग में दिखाई देगा।

  • लगभग 10 मिनट पहले से अपने पृष्ठ का कैश रखें।

  • जब एक रिपीट-हिटर / बॉट आपकी साइट को हिट करता है, तो उन्हें 10 मिनट पुराना कैश्ड पृष्ठ दें।

वे तुरंत नहीं जान पाएंगे कि उन्हें एक पुरानी साइट मिल रही है। वे इसे और हर चीज को कुरेदने में सक्षम होंगे, लेकिन वे अब कोई दौड़ नहीं जीतेंगे, क्योंकि "वास्तविक लोगों" के पास 10 मिनट का हेड-स्टार्ट होगा।

लाभ:

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

कमियां

  • कुछ आईपी पते पर नज़र रखने की आवश्यकता है
  • पुराने पृष्ठों के कैश को बनाए रखने और बनाए रखने की आवश्यकता होती है।

तुम क्या सोचते हो?


1
लानत है। मैंने लूट के लिए अपनी खुद की पांच-वेक्टर योजना लिखने में केवल एक घंटा और आधा खर्च किया, और अपनी पांचवीं प्रतिवाद (एक बोटनेट थ्रोटल) पर लंबे और कठिन सोचने के बाद, मुझे हार स्वीकार करना पड़ा। यह काम नहीं करता है। और मेरे घंटे भर के समाधान का बाकी है - ठीक है, यह एक। abelenky, मैं अपनी टोपी आपको देता हूं
जेन्स रोलैंड 20

7
इसके शीर्ष पर निर्माण करने के लिए: IP को एक इन-मेमोरी LRU काउंटिंग हैश (वेतन वृद्धि और पुश हर बार जब कोई IP वापस आता है) में डालें। रिवर्स आईपी जानकारी, गतिविधि, छवि / जेएस / कुकी डाउनलोड के आधार पर हेयूरिस्टिक्स जोड़ें। हमला कितना बुरा है, अपनी प्रतिक्रिया दें, गलत नकारात्मक परिणामों को कम करना।
13

1
(जारी रखा :) और मेरी तकनीक किसी को शट-आउट / प्रतिबंधित नहीं करती है। यह सिर्फ उन्हें देरी से जानकारी देता है। कार्यालय में कोई भी पुरस्कार नहीं जीत सकता है, लेकिन यह ग्राहक-सेवा / पहुंच के दृष्टिकोण से बहुत अधिक समस्या नहीं है।
अबेलेंकी

18
@bruceatk: यदि आप उन्हें एक विशेष बॉट-ओनली पेज देते हैं, तो वे अंततः इसका पता लगाना सीखेंगे, और एक नियमित ग्राहक को और अधिक सटीक रूप से स्पूफ करना सीखेंगे। पुराना पेज देने से, उनके पास कोई आईडिया नहीं होगा कि वे पुराने डेटा प्राप्त कर रहे हैं। पुराना डेटा वैध है! प्रतियोगिता / दौड़ के उद्देश्यों के लिए यह बेकार है।
अबेलेंकी 3

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

54

इस लेख पर एक नजर डालते हैं ned Batchelder द्वारा यहाँ । उनका लेख स्पैम्बोट्स को रोकने के बारे में है, लेकिन वही तकनीक आपकी साइट पर आसानी से लागू हो सकती है।

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

यह तकनीक है कि मैं इस साइट पर स्पैम्बोट्स को कैसे रोकता हूं। यह काम करता हैं। यहाँ वर्णित विधि सामग्री को बिल्कुल नहीं देखती है।

कुछ अन्य विचार:

  • एक आधिकारिक ऑटो-अधिसूचित तंत्र (आरएसएस फ़ीड? ट्विटर?) बनाएं जो आपके उत्पाद की बिक्री पर जाने पर लोग सदस्यता ले सकते हैं। इससे लोगों को स्क्रिप्ट बनाने की आवश्यकता कम हो जाती है ।
  • किसी नए आइटम की बिक्री से पहले अपनी ऑबफेकशन तकनीक को बदलें । इसलिए भले ही स्क्रिप्टर्स हथियारों की दौड़ को बढ़ा सकें, लेकिन वे हमेशा एक दिन पीछे रह जाते हैं।

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

नेड की रणनीतियों की प्रभावशीलता के बारे में आपकी टिप्पणी के संबंध में: हां, वह हनीपोट्स पर चर्चा करता है, लेकिन मुझे नहीं लगता कि यह उसकी सबसे मजबूत रणनीति है। SPINNER की उनकी चर्चा का मूल कारण है कि मैंने उनके लेख का उल्लेख किया है। क्षमा करें, मैंने अपनी मूल पोस्ट में वह स्पष्ट नहीं किया है:

स्पिनर कुछ चीजों के लिए उपयोग किया जाने वाला एक छुपा हुआ क्षेत्र है: यह कई मूल्यों को एक साथ धोता है जो छेड़छाड़ और रिप्ले को रोकता है और इसका उपयोग फ़ील्ड नामों को अस्पष्ट करने के लिए किया जाता है। स्पिनर MD5 हैश का है:

  • टाइमस्टैम्प,
  • ग्राहक का IP पता,
  • ब्लॉग प्रविष्टि की प्रविष्टि आईडी पर टिप्पणी की जा रही है, और
  • एक रहस्य।

यहाँ आप WOOT.com पर इसे कैसे लागू कर सकते हैं:

"गुप्त" मान को बदलें जो हैश के हिस्से के रूप में उपयोग किया जाता है जब भी कोई नया आइटम बिक्री पर जाता है। इसका मतलब है कि यदि कोई व्यक्ति ऑटो-खरीद आइटम के लिए बीओटी डिजाइन करने जा रहा है, तो यह केवल तब तक काम करेगा जब तक कि अगला आइटम बिक्री पर न आ जाए !!

यहां तक ​​कि अगर कोई अपने बॉट को जल्दी से बनाने में सक्षम है, तो अन्य सभी वास्तविक उपयोगकर्ताओं ने पहले ही एक बीओसी खरीदा होगा, और आपकी समस्या हल हो जाएगी!

अन्य रणनीति वह चर्चा करता है बदलने के समय-समय पर (फिर से, इसे बदल जब कोई नया आइटम बिक्री पर चला जाता है) करने के लिए शहद रखने का बर्तन तकनीक:

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

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

कौन सा, एक दो बार / महीना है?

यदि आप इस उत्तर को स्वीकार करते हैं, तो क्या आप मुझे एक सिर-अप देंगे जब अगले एक होने वाला है? :)


आरएसएस के लिए +1। ऐसा करें कि वैध उपयोगकर्ताओं को पुरस्कृत किया जाए।
मार्कस

RSS एक अच्छे समाधान की तरह लगता है, लेकिन क्या इस विज्ञापन से मुझे लगने वाले राजस्व पर चोट लग सकती है?
टीएम।

1
मैं "स्पिनर" अवधारणा को काफी नहीं समझता। क्या यह केवल एक अतिरिक्त डेटा है जिसे html के अंदर रखा गया है <form>और सबमिट करने पर भेजा गया है? क्योंकि एक बॉट आसानी से कि भी परिमार्जन कर सकता है।
पोंकाडूडल

44

प्रश्न: आप अपनी साइट को दूसरी बार सैकड़ों बार पटकने से स्क्रिप्टर्स को कैसे रोकेंगे?
A: आप नहीं। बाहरी एजेंटों द्वारा इस व्यवहार को रोकने का कोई तरीका नहीं है ।

आप आने वाले अनुरोधों का विश्लेषण करने के लिए प्रौद्योगिकी का एक विशाल सरणी नियोजित कर सकते हैं और यह निर्धारित करने का प्रयास कर सकते हैं कि कौन है और मानव नहीं है ... लेकिन यह विफल हो जाएगा। आखिरकार, अगर तुरंत नहीं।

एकमात्र व्यवहार्य दीर्घकालिक समाधान खेल को बदलना है ताकि साइट बॉट-फ्रेंडली न हो, या स्क्रिप्टर्स के लिए कम आकर्षक न हो।

आप उसे कैसे करते हैं? खैर, यह एक अलग सवाल है! ;-)

...

ठीक है, ऊपर कुछ विकल्प दिए गए हैं (और अस्वीकृत)। मैं आपकी साइट से पूरी तरह से परिचित नहीं हूं, केवल एक बार इसे देखा है, लेकिन चूंकि लोग छवियों में पाठ पढ़ सकते हैं और बॉट आसानी से ऐसा नहीं कर सकते हैं, इसलिए एक छवि होने की घोषणा को बदल दें। कैप्चा नहीं , सिर्फ एक छवि -

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

इस पर प्रतिक्रिया करने वाले वास्तविक लोगों के समय-परीक्षण को चलाएं, और इस बार के आधे हिस्से की तुलना में (उफ़, पुन: प्रयास करें! ' इस घटना को भी डेवलपर्स के लिए अलर्ट ट्रिगर करना चाहिए कि कम से कम एक बॉट ने कोड / गेम का पता लगा लिया है, इसलिए कोड / गेम को बदलने का समय आ गया है।

खेल को समय-समय पर वैसे भी बदलना जारी रखें, भले ही कोई बॉट इसे ट्रिगर न करे, बस स्क्रिप्टर्स का समय बर्बाद करने के लिए। आखिरकार स्क्रिप्टर्स को खेल से थक जाना चाहिए और कहीं और जाना चाहिए ... हमें उम्मीद है ;-)

एक अंतिम सुझाव: जब आपके मुख्य पृष्ठ के लिए एक अनुरोध आता है, तो इसे एक कतार में रखें और एक अलग प्रक्रिया में अनुरोधों का जवाब दें (ऐसा करने के लिए आपको वेब सर्वर को हैक / विस्तारित करना पड़ सकता है, लेकिन यह संभवतः होगा सार्थक)। यदि समान IP / एजेंट से कोई अन्य अनुरोध आता है, जबकि पहला अनुरोध कतार में है, तो इसे अनदेखा करें। यह स्वचालित रूप से बॉट्स से लोड शेड होना चाहिए।

संपादित करें: छवियों के उपयोग से अलग एक अन्य विकल्प, खरीद / बिना खरीद के पाठ में भरने के लिए जावास्क्रिप्ट का उपयोग करना है; बॉट्स शायद ही कभी जावास्क्रिप्ट की व्याख्या करते हैं, इसलिए वे इसे नहीं देखेंगे


1
मैं यह सुनिश्चित करूंगा कि "डिफ़ॉल्ट पाठ" भी बदल जाए। यह स्क्रैपिंग ऐप को छवि को पिछली छवि से तुलना करने और महत्वपूर्ण परिवर्तन की प्रतीक्षा करने से रोकेगा। +1। महान विचार।
फ्रैंक क्रुएगर

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

@ [फ्रैंक क्रुएगर]: मैंने सोचा कि मैंने इसे निहित किया है, लेकिन फिर से पढ़ने पर मुझे लगता है कि मैंने ऐसा नहीं किया - इसे इंगित करने के लिए धन्यवाद! यह भी उपयोगी हो सकता है कि डिफॉल्ट-टेक्स्ट इमेज बदलने के लिए तुलना करने के साथ गड़बड़ करने के लिए बस कुछ पिक्सेल हों, और / या बॉट्स के साथ गड़बड़ करने के लिए लगभग अदृश्य वॉटरमार्क-स्टाइल टेक्स्ट उत्पन्न करें
स्टीवन ए लोवे

@ [डेव शेरोमैन]: आप कर सकते हैं, लेकिन इसके कारण कतार मंथन हो सकता है; यह बेहतर हो सकता है कि लोड को तुरंत हटाने के लिए नए अनुरोधों को छोड़ दें - परीक्षण / रूपरेखा कुछ के लिए बताएगी जो बेहतर है, लेकिन एक अच्छे सुझाव के लिए धन्यवाद!
स्टीवन ए लोव

यह बर्दाश्त नहीं कर सकता कि आपने उसे मूल रूप से देने के लिए कहा था, मुझे पता है कि आप इसे असंभव समझते हैं, लेकिन मैं असहमत हूं। यदि कोई इच्छा है, तो निश्चित रूप से एक रास्ता है। इतनी आसानी से हार की जीत वास्तव में उदासीन और दुखद है, अगर मूल पोस्टर पढ़ रहा है, तो यह करना संभव है, लेकिन समाधान को ट्रैफ़िक लॉग के विश्लेषण के बाद कस्टम डिज़ाइन करने की आवश्यकता होगी, आप वर्तमान तरीकों को रोक सकते हैं और भविष्य के सबूत को अभी तक रोक सकते हैं। अप्रयुक्त तरीके। जावास्क्रिप्ट भी, वेबब्रोसर नियंत्रण वास्तविक समय में जावास्क्रिप्ट चलाता है, किसी अन्य इंजन की आवश्यकता नहीं है - वे डोम के साथ गड़बड़ कर सकते हैं और अपना स्वयं का जावास्क्रिप्ट चला सकते हैं! ओह
Erx_VB.NExT.Coder

30

मुझे नहीं पता कि यह कितना संभव है: ... आपत्तिजनक है।

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

एक अन्य विचार बैग ओ बकवास बिक्री अवधि के दौरान यादृच्छिक मूल्य ड्रॉप को लागू करना है। जब आप केवल $ 20 का मूल्य रखते हैं, तो आप $ 150 के लिए एक यादृच्छिक बैग ओ बकवास कौन खरीदेंगे? कोई नहीं बल्कि अति उत्साही बॉट। लेकिन फिर 9 मिनट बाद यह $ 35 डॉलर है ... फिर 17 मिनट बाद यह $ 9 है। जो कुछ भी।

ज़रूर, ज़ोंबी राजा प्रतिक्रिया करने में सक्षम होंगे। मुद्दा यह है कि उनकी गलतियों को उनके लिए बहुत महंगा हो जाता है (और उन्हें लड़ने के लिए आपको भुगतान करने के लिए)।

यह सब आप कुछ बॉट लॉर्ड्स को पेशाब करना चाहते हैं, जो 100% उचित नहीं हो सकता है।


मत सोचो कि बॉट लॉर्ड्स से पेशाब करना वांछनीय है, लेकिन आपके पास यहां एक दिलचस्प विचार है।
शॉन मिलर 17

7
मैं सहमत हूं, और मैं बोगस खरीदारी करने में बॉट को बेवकूफ बनाने के इस दोहराए विचार को पसंद कर रहा हूं। यह पेबैक है, और चूंकि वे पहले से ही टीओएस को तोड़ रहे हैं, वे शायद ही शिकायत कर सकते हैं।
निकोलस फ्लायंट

22

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

चूंकि ऐसा लगता है कि बॉट के मालिक लाभ कमा रहे हैं (या संभावित रूप से लाभ कमा रहे हैं), चाल उनके लिए यह लाभहीन है कि वे उन्हें बकवास खरीदने के लिए प्रोत्साहित करें।

सबसे पहले, हमेशा "बैग 'ओ बकवास" की पेशकश करें।

दूसरा, सुनिश्चित करें कि बकवास आमतौर पर बकवास है।

तीसरा, बकवास को अक्सर घुमाएं।

सरल, नहीं?

आपको एक स्थायी आवश्यकता होगी "हमारी बकवास कभी-कभी बकवास क्यों है?" मनुष्यों को समझाने के लिए प्रस्ताव के आगे लिंक क्या चल रहा है।

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

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

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

अद्यतन: मुझे उम्मीद है कि आपको शिकायत करने वाले लोगों के साथ कुछ कॉल मिल सकते हैं। मुझे नहीं लगता कि आप इसे पूरी तरह से रोक सकते हैं। हालाँकि, यदि यह बॉट्स को मारता है, तो आप इसे हमेशा रोक सकते हैं और बाद में इसे पुनः आरंभ कर सकते हैं।


15
  1. गैर-स्क्रिप्टिंग मनुष्यों को आइटम बेचें।

  2. साइट को बॉट्स द्वारा धीमी गति से न चलाएं।

  3. किसी भी कार्य के साथ 'सामान्य' उपयोगकर्ताओं को परेशान न करें यह साबित करने के लिए कि वे मानव हैं।

आप शायद यह नहीं सुनना चाहते, लेकिन # 1 और # 3 परस्पर अनन्य हैं।

इंटरनेट पर, कोई नहीं जानता कि आप एक कुत्ते हैं

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

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


+1 के लिए यदि वे इसे चाहते हैं, तो एक कैप्चा उन्हें बंद करने के लिए नहीं जा रहा है ... और कार्टून के लिए।
मार्टिन

13

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

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

यह अभी भी बहुत तेज़ी से बिकता है, लेकिन मुझे लगता है कि समाधान अच्छा है - समस्या का पुनर्मूल्यांकन करना और मापदंडों को बदलने से एक सफल रणनीति का नेतृत्व किया जहां सख्ती से तकनीकी समाधान बस मौजूद नहीं थे।


आपका पूरा व्यवसाय मॉडल "पहले आओ, पहले पाओ" पर आधारित है। आप वह नहीं कर सकते जो रेडियो स्टेशनों ने किया (वे अब पहले कॉलर को विजेता नहीं बनाते, वे 5 वें या 20 वें या 13 वें कॉलर को विजेता बनाते हैं) - यह आपकी प्राथमिक विशेषता से मेल नहीं खाता।

नहीं, वास्तविक उपयोगकर्ताओं के लिए ऑर्डरिंग अनुभव को बदलने के बिना ऐसा करने का कोई तरीका नहीं है।

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

आपके पास दो चरण हैं:

  1. फ्रंट पेज देख रहे हैं
  2. आदेश

आप एक कैप्चा को अवरुद्ध नहीं कर सकते हैं # 1 - जो वास्तविक ग्राहकों को खोने जा रहा है ("क्या? मुझे हर बार एक कैप्चा को हल करना होगा जो मैं नवीनतम वूट देखना चाहता हूं?"?))।

इसलिए मेरा छोटा समूह देखता है, एक साथ समय पर तो हम प्रति सेकंड लगभग 20 चेक प्राप्त करते हैं, और जो कोई भी परिवर्तन देखता है वह अन्य सभी (स्वचालित रूप से) को अलर्ट करता है, जो एक बार फिर फ्रंट पेज को लोड करेगा, ऑर्डर लिंक का पालन करेगा, और लेनदेन करेगा ( जो स्वचालित रूप से भी हो सकता है, जब तक कि आप कैप्चा को लागू नहीं करते हैं और इसे हर वूटऑफ / बोको में बदल देते हैं)।

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

लेकिन कैप्चा के साथ मेरा 100 का छोटा बैंड अभी भी एक महत्वपूर्ण पहला प्रस्तावक लाभ होगा - और ऐसा कोई तरीका नहीं है जिससे आप बता सकें कि हम इंसान नहीं हैं। यदि आप हमारी पहुंच शुरू करना चाहते हैं, तो हम बस कुछ घबराना जोड़ देंगे। हम बेतरतीब ढंग से चयन कर सकते हैं कि कौन सा कंप्यूटर ताज़ा करना था ताकि एक्सेस का क्रम लगातार बदलता रहे - लेकिन फिर भी एक मानव की तरह पर्याप्त दिखता है।

सबसे पहले, साधारण बॉट्स से छुटकारा पाएं

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

यह आपके ट्रैफ़िक को महत्वपूर्ण रूप से छोड़ देना चाहिए और बॉट उपयोगकर्ताओं द्वारा नियोजित रणनीति को बदलना चाहिए।

दूसरा, सर्वर को धधकते हुए तेज करें।

आप वास्तव में यह नहीं सुनना चाहते ... लेकिन ...

मुझे लगता है कि आपको जो चाहिए वह नीचे से ऊपर की ओर पूरी तरह से कस्टम समाधान है।

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

Apache, lighthttpd, आदि सभी लचीले होने के लिए बहुत अच्छे हैं, लेकिन आप एक ही उद्देश्य की वेबसाइट चलाते हैं, और आपको वास्तव में दोनों को सक्षम करने की आवश्यकता है, जो वर्तमान सर्वरों की तुलना में अधिक करने में सक्षम हैं (दोनों ट्रैफ़िक को संभालने में, और उचित रूप से कंघी बॉट्स में) )।

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

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

निष्कर्ष

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

आप साधारण बॉट्स के लिए ब्लॉक जोड़ सकते हैं, जो बार और कम लोगों को परेशान करेगा। इतना काफी हो सकता है।

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

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

हर बार जब मैं एक "अच्छी तरह से सोचता हूं, तो यह क्या करना है ..." मैं इसे हमेशा उपयुक्त बॉट रणनीति के साथ मुकाबला कर सकता हूं।

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

सर्वर को तेज़ बनाएं, एक reCaptcha में डालें (केवल एक ही मैंने पाया है जिसे आसानी से बेवकूफ नहीं बनाया जा सकता है, लेकिन ऑर्डर करने वाले पृष्ठ पर यह संभवत: आपके एप्लिकेशन के लिए बहुत धीमा है), और मॉडल को थोड़ा बदलने के तरीकों के बारे में सोचें नियमित उपयोगकर्ताओं के पास बॉट उपयोगकर्ताओं के रूप में अच्छा मौका है।

-Adam


"हर बार जब मैं एक" अच्छी तरह से सोचता हूं, तो यह करने के बारे में क्या ... "मैं इसे हमेशा एक उपयुक्त बॉट रणनीति के साथ मुकाबला कर सकता हूं" मैं अपने प्रमाणीकरण प्रणाली को डिजाइन करते समय उसी निष्कर्ष पर आया था, लेकिन - यहां एक अंतर है कि मुझे उस तर्क पर संदेह है: झूठी सकारात्मकता एक बड़ी समस्या नहीं है
जेन्स रोलैंड

(जारी) जैसे अगर कुछ वास्तविक उपयोगकर्ता यहां और विशेष ऑफ़र प्राप्त करने में असमर्थ हैं, तो यह वास्तव में एक बड़ा डीलब्रेकर नहीं है (जब तक वे नहीं जानते कि वे क्या याद कर रहे हैं)। एक प्रमाणन प्रणाली में, यह है एक dealbreaker - आप उन में प्रवेश से रोका जा रहा नहीं करना चाहते
जेन्स रोलाण्ड

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

(हालांकि, अब जब मैंने इसे कुछ और सोचा है, तो मैं इस तरह से काम करने के तरीके के बारे में नहीं सोच सकता, जो डिस्ट्रीब्यूट / बॉटनेट 'हमलों' को भी विफल कर देगा)
जेन्स रोलैंड

11

अस्वीकरण: यह उत्तर पूरी तरह से गैर-प्रोग्रामिंग-संबंधित है। हालाँकि, यह लिपियों के कारण पर पहली बार हमला करने की कोशिश करता है।

एक और विचार यह है कि अगर आपके पास बेचने के लिए सही मात्रा में मात्रा है, तो आप इसे पहले आओ-पहले पाओ की पद्धति से क्यों नहीं बदलते? जब तक, ज़ाहिर है, प्रचार आपकी मार्केटिंग योजना का हिस्सा है।

कई अन्य विकल्प हैं, और मुझे यकीन है कि अन्य कुछ अलग सोच सकते हैं:

  • एक ऑर्डरिंग कतार (प्री-ऑर्डर सिस्टम) - कुछ स्क्रिप्ट अभी भी कतार के सामने समाप्त हो सकती हैं, लेकिन यह संभवतः मैन्युअल रूप से जानकारी दर्ज करने के लिए तेज़ है।

  • रफ़ल सिस्टम (हर कोई जो ऑर्डर करने की कोशिश करता है, उसे सिस्टम में दर्ज किया जाता है) - इस तरह से स्क्रिप्ट वाले लोगों के पास बस उतने ही मौके होते हैं जितने कि बिना किसी के।

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

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


1
धन्यवाद। देखिये, मुझे पता था कि अन्य लोग भी थे।
एलसी।

किसी भी भाग्य प्रणाली को केवल बॉट के पक्ष में संभावना बढ़ाने के लिए अतिभारित किया जाएगा
एंडी डेंट

यदि आप इसे प्रति व्यक्ति / घरेलू / (भौतिक) पते पर सीमित करते हैं तो यह नहीं होगा
lc।

11

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

मुझे लगता है कि एक अलग मानसिकता की आवश्यकता है

  • अपनी साइट का उपयोग करने से बॉट को रोकने की कोशिश न करें
  • एक फिक्स के लिए मत जाओ जो तुरंत काम करता है, लंबा गेम खेलें

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

जब आप किसी ऑफ़र को प्रकाशित करते हैं, और उस खाते को खरीदने के समय का रिकॉर्ड करते हैं।

यह आपको एक रिकॉर्ड देता है कि ग्राहक कितनी जल्दी सामान खरीद रहा है।

आपके द्वारा ऑफ़र किए जाने वाले दिन का समय भिन्न होता है।

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

समय के साथ एक तस्वीर सामने आएगी।

01: आप देख सकते हैं कि कौन से खाते नियमित रूप से उत्पादों को लाइव होने के कुछ सेकंड के भीतर खरीद रहे हैं। सुझाव है कि वे बॉट हो सकते हैं।

02: आप ऑफ़र के लिए उपयोग किए जाने वाले समय की खिड़की को भी देख सकते हैं, अगर खिड़की 1 घंटे की है तो कुछ शुरुआती खरीदार मनुष्य होंगे। एक मानव शायद ही कभी 4 घंटे के लिए ताज़ा करेगा। अगर बीता हुआ समय खिड़की की अवधि की परवाह किए बिना प्रकाशित / खरीद के बीच काफी सुसंगत है, तो यह एक बॉट है। यदि छोटी खिड़कियों के लिए प्रकाशन / खरीद का समय कम है और बड़ी खिड़कियों के लिए अधिक समय मिलता है, तो यह एक उपदेश है!

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

मुझे लगता है कि बॉट खातों पर प्रतिबंध लगाना निरर्थक होगा, यह हिटलर की फ़िंकिंग और "आपकी यू-बोट्स की स्थिति के लिए धन्यवाद!" किसी भी तरह से आपको जानकारी का उपयोग करने की आवश्यकता होती है, जो खाता मालिकों को महसूस नहीं होगा। चलो देखते हैं कि क्या मैं कुछ भी सपना देख सकता हूँ .....

एक कतार में प्रक्रिया के आदेश:

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

  1. आपका आदेश रखा गया है और एक कतार में है।
  2. आपका ऑर्डर प्रोसेस कर दिया गया है।
  3. आपका ऑर्डर भेज दिया गया है।

उपयोगकर्ताओं को लगता है कि वे एक उचित कतार में हैं। अपनी कतार को हर 1 घंटे में संसाधित करें ताकि सामान्य उपयोगकर्ताओं को भी एक कतार का अनुभव हो, ताकि संदेह पैदा न हो। केवल "औसत मानव ऑर्डरिंग समय + x घंटे" के लिए कतार में रहने के बाद केवल बॉट और हर्मिट खातों से आदेश की प्रक्रिया करें। प्रभावी रूप से मनुष्यों को बॉट्स कम करना।


इसका क्या मतलब है? :-)
पीटर मॉरिस

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

10

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

आप ऑर्डर देने के लिए भी ऐसा कर सकते हैं। जब तक आप वांछित प्रभाव प्राप्त नहीं कर लेते, आप एपीआई कार्यक्षमता / प्रदर्शन में छोटे बदलावों के साथ प्रयोग कर सकते हैं।

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


8

हम वर्तमान में ऐसा करने के लिए F5 से BigIP लोड बैलेंसरों की नवीनतम पीढ़ी का उपयोग कर रहे हैं। बिगआईपी में उन्नत ट्रैफ़िक प्रबंधन सुविधाएँ हैं जो एकल आईपी के पीछे के स्रोतों के बीच से भी स्क्रैपर्स बॉट्स की आवृत्ति और उपयोग के पैटर्न के आधार पर पहचान कर सकती हैं। यह तब इन को कुचलना कर सकता है, उन्हें वैकल्पिक सामग्री परोस सकता है या उन्हें हेडर या कुकीज़ के साथ टैग कर सकता है ताकि आप उन्हें अपने एप्लिकेशन कोड में पहचान सकें।


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

7

सबसे पहले, मुझे यह याद दिलाना है कि हमें यहाँ क्या करना है। मुझे लगता है कि मैं मूल प्रश्न पर चर्चा कर रहा हूं, लेकिन यह महत्वपूर्ण है कि हम इसे 100% सीधे प्राप्त करें, क्योंकि बहुत सारे शानदार सुझाव हैं जो 4 में से 2 या 3 सही मिलते हैं, लेकिन जैसा कि मैं प्रदर्शित करूंगा, आपको एक की आवश्यकता होगी आवश्यकताओं के सभी को कवर करने के लिए बहुआयामी दृष्टिकोण।

आवश्यकता 1: 'बॉट स्लैमिंग' से छुटकारा पाना:

आपके सामने पृष्ठ की रैपिड-फायर 'स्लैमिंग' आपकी साइट के प्रदर्शन को नुकसान पहुंचा रही है और समस्या के मूल में है। 'स्लैमिंग' सिंगल-आईपी बॉट्स और - बॉटनेट्स से भी माना जाता है। हम दोनों से छुटकारा पाना चाहते हैं।

आवश्यकता 2: उपयोगकर्ता अनुभव के साथ खिलवाड़ न करें:

हम एक मानव ऑपरेटर को फोन करने, कैप्चा के एक गुच्छा को हल करने, या इसी तरह की तरह एक बुरा सत्यापन प्रक्रिया को लागू करने से बॉट स्थिति को बहुत प्रभावी ढंग से ठीक कर सकते हैं, लेकिन यह हर मासूम हवाई जहाज के यात्री को स्लिम मौका के लिए पागल सुरक्षा घेरा के माध्यम से कूदने के लिए मजबूर करने जैसा होगा। आतंकवादियों की बहुत बड़ी मूर्खता को पकड़ने के लिए। ओह रुको - हम वास्तव में ऐसा करते हैं। लेकिन देखते हैं कि क्या हम woot.com पर ऐसा नहीं कर सकते हैं

आवश्यकता 3: 'हथियारों की दौड़' से बचना:

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

आवश्यकता 4: 'अलार्म' बॉट्स को विफल करना:

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


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

  1. हुप्स के माध्यम से कूदने के लिए बहुत कम उपयोगकर्ताओं की आवश्यकता होगी
  2. कम संख्या में उपयोगकर्ता विशेष ऑफ़र प्राप्त करने में असमर्थ होंगे

मुझे लगता है कि ये कष्टप्रद हैं, लेकिन अगर हम 'छोटे' नंबर को छोटा कर सकते हैं , तो मुझे उम्मीद है कि आप सकारात्मकता को नकार देंगे।

पहला उपाय: उपयोगकर्ता-आधारित थ्रॉटलिंग:

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

दूसरा उपाय: आईपी थ्रॉटलिंग का कुछ रूप, जैसा कि लगभग सभी ने सुझाया है:

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

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

तीसरा उपाय: कैश्ड प्रतिक्रियाओं के साथ थ्रॉटल को क्लोकिंग करना:

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

धीमे सिंगल-आईपी बॉट्स को तुरंत रेंडर करने के लिए, बस अबेलेंकी द्वारा सुझाई गई रणनीति का उपयोग करें: सभी आईपी को 10 मिनट पुराने कैश्ड पेज परोसें जो पिछले 24 घंटों (या तो) में स्पॉट किए गए हैं। इस तरह, प्रत्येक IP को प्रति दिन / घंटा / सप्ताह (आपके द्वारा चुनी गई अवधि के आधार पर) एक 'मौका' मिलता है, और वास्तविक उपयोगकर्ताओं को कोई भी परेशान झुंझलाहट नहीं होगी जो केवल 'पुनः लोड' कर रहे हैं, सिवाय इसके कि वे नहीं जीतते प्रस्ताव।

इस उपाय की सुंदरता है कि है भी thwarts 'अलार्म बॉट', जब तक कि वे एक botnet से ही शुरू नहीं है।

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

चौथा उपाय: reCAPTCHA:

आप सही हैं कि CAPTCHAs उपयोगकर्ता अनुभव को चोट पहुँचाते हैं और इसे टाला जाना चाहिए। हालांकि, _one_ स्थिति में वे आपके सबसे अच्छे दोस्त हो सकते हैं: यदि आपने बॉट्स को विफल करने के लिए एक बहुत ही प्रतिबंधक प्रणाली तैयार की है, तो - क्योंकि इसकी प्रतिबंधात्मकता - कई झूठी सकारात्मकता भी पकड़ती है; फिर एक कैप्चा को अंतिम उपाय के रूप में परोसा जाता है जो उन वास्तविक उपयोगकर्ताओं को अनुमति देगा जो आपके थ्रॉटलिंग द्वारा फिसलने के लिए पकड़े जाते हैं (इस प्रकार कष्टप्रद DoS स्थितियों से बचते हैं)।

मधुर धब्बे, ज़ाहिर है, जब सभी बॉट्स आपके जाल में फंस जाते हैं, जबकि बहुत कम वास्तविक उपयोगकर्ता कैप्चा द्वारा परेशान होते हैं।

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

पाँचवाँ उपाय: डिकॉय बकवास:

क्रिस्टोफर महान को एक विचार था जो मुझे पसंद था, लेकिन मैं उस पर एक अलग स्पिन डालूंगा। हर बार जब आप एक नया प्रस्ताव तैयार कर रहे होते हैं, तो दो अन्य 'ऑफ़र' भी तैयार करते हैं, जो कि कोई भी मानव नहीं करेगा, जैसे $ 20 के लिए 12 मिमी का एक पंख। जब प्रस्ताव सामने पृष्ठ पर दिखाई देता है, तो सभी तीन 'ऑफ़र' को एक ही चित्र में रखें, जिसमें प्रत्येक ऑफ़र के समान संख्याएं होती हैं। जब उपयोगकर्ता / बॉट वास्तव में आइटम को ऑर्डर करने के लिए जाता है, तो उन्हें (एक रेडियो बटन) चुनना होगा जो वे चाहते हैं, और चूंकि अधिकांश बॉट केवल अनुमान लगा रहे होंगे, तीन में से दो मामलों में, बॉट बेकार खरीद रहे होंगे कबाड़।

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

छठा उपाय: बोटनेट थ्रॉटलिंग:

[हटाया गया]

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

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


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

3 का अर्थ यह नहीं है कि आप AOL के IP पूल से आने वाले कुछ बॉट्स को मानते हुए AOL के पुराने पेजों की सेवा कर रहे हैं?
एंडी डेंट

@Andy: केवल अगर सभी AOL उपयोगकर्ता समान IP पते साझा करते हैं जो स्पैम करते समय बॉट्स का उपयोग करते हैं।
जेन्स रोलैंड

6

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

सर्वर पर आप उस बीज का उपयोग करके खेल यांत्रिकी का अनुकरण करते हैं यह देखने के लिए कि क्या वास्तव में क्लिकों ने गेंदों को फोड़ दिया होगा। यदि उन्होंने किया, तो न केवल वे मानव थे, बल्कि उन्हें स्वयं को मान्य करने में 30 सेकंड लगे। उन्हें एक सेशन आईडी दें।

आप उस सत्र आईडी को वही करते हैं जो उसे पसंद है, लेकिन यदि बहुत अधिक अनुरोध करता है, तो वे फिर से खेले बिना जारी नहीं रख सकते।


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

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

मनोरंजक (और nigh-foolproof) विचार, लेकिन मुझे चिढ़ होगी (विशेष रूप से कैनरी उन्माद के एक थैले के दौरान), और चेकिंग करने के लिए उनके सर्वर पर बड़े पैमाने पर अधिक प्रसंस्करण की आवश्यकता होगी (जो समस्या का एक बड़ा हिस्सा है)। इसके अलावा, बोट बुलबुले फोड़ सकते हैं। आपको बार-बार नियम बदलने होंगे।
ग्रोक्स 23

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

इसके अलावा, आइए, यह मत भूलो कि यातायात को सीमित करना है। पेज कह सकता है "हम बहुत व्यस्त हैं, यदि आप जल्दी में हैं, तो 30 सेकंड के लिए इस गेम को खेलें, या कुछ मिनटों में फिर से कोशिश करें ...
पॉल डिक्सन

5

कुछ अन्य / बेहतर समाधान पहले से ही पोस्ट किए गए हैं, लेकिन पूर्णता के लिए, मुझे लगा कि मैं इसका उल्लेख करूंगा:

यदि आपकी मुख्य चिंता प्रदर्शन में गिरावट है, और आप सही हथौड़ा देख रहे हैं , तो आप वास्तव में एक DoS हमले से निपट रहे हैं, और आपको संभवतः उसी के अनुसार इसे संभालने की कोशिश करनी चाहिए। एक सामान्य दृष्टिकोण प्रति सेकंड / मिनट / आदि के कई कनेक्शन के बाद फ़ायरवॉल में एक आईपी से पैकेट को छोड़ देना है। उदाहरण के लिए, मानक लिनक्स फ़ायरवॉल, iptables, में एक मानक ऑपरेशन मिलान फ़ंक्शन 'हैशलीम' है, जिसका उपयोग कनेक्शन यूनिट अनुरोधों को आईपी-पते पर प्रति टाइम सहसंबंधित करने के लिए किया जा सकता है।

हालांकि, यह सवाल शायद अगले SO-पॉडकास्ट के लिए अंतिम SO-पॉडकास्ट पर उल्लिखित अधिक उपयुक्त होगा, यह अभी तक लॉन्च नहीं हुआ है, इसलिए मुझे लगता है कि इसका जवाब देना ठीक है :)

संपादित करें:
जैसा कि नौसिखिए द्वारा बताया गया है, अभी भी आईएसपी वास्तव में अपने ग्राहकों को आईपी आवंटित नहीं कर रहे हैं, इसलिए प्रभावी रूप से, इस तरह के एक आईएसपी का एक स्क्रिप्ट-ग्राहक उस आईएसपी से सभी ग्राहकों को निष्क्रिय कर देगा।


दुर्भाग्य से कुछ आईएसपी ने निकास आईपी पते साझा किए हैं। उदाहरण के लिए, एओएल के पास आईपी का एक सीमित संग्रह है जो सदस्यों के अंतर्गत आता है: webmaster.info.aol.com/proxyinfo.html आपका समाधान कई आईएसपी के लिए उपयोगकर्ताओं की संख्या पर एक कठिन सीमा लागू करेगा।
रॉबर्ट वेनबल्स

वाह, मैं अजीब हूँ। इस तरह से सामान अभी भी चल रहा है?
फालस्ट्रो

पवित्र गाय। मुझे लगता है कि AOL तब मेरी साइट तक नहीं पहुंचेगा।
कार्ल

5

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

बेशक, कई लोग एक ही आईपी पते से आ सकते हैं यदि वे NAT'd नेटवर्क कनेक्शन पर हैं, लेकिन यह संभावना नहीं है कि एक मानव आपके प्रतिक्रिया समय 2mS से 4mS (या यहां तक ​​कि 400mS) के लिए जा रहा है, जबकि एक बॉट में बाधा आएगी बढ़ती देरी से बहुत जल्दी।


4
  1. RSS फ़ीड प्रदान करें ताकि वे आपके बैंडविड्थ को न खाएं।
  2. खरीदते समय, हर किसी को 45 सेकंड या कुछ समय के लिए यादृच्छिक मात्रा में प्रतीक्षा करें , इस बात पर निर्भर करता है कि आप वास्तव में क्या देख रहे हैं। वास्तव में आपके समय की कमी क्या है?
  3. ड्राइंग के लिए अपना नाम रखने के लिए सभी को 1 मिनट का समय दें और फिर बेतरतीब ढंग से लोगों का चयन करें। मुझे लगता है कि यह सबसे उचित तरीका है।
  4. खातों की निगरानी करें (सत्र में कुछ समय शामिल करें और इसे संग्रहीत करें?) और खातों में विलंब जोड़ें जो ऐसा लगता है कि वे मानव गति सीमा से नीचे हैं। कम से कम बॉट्स को धीमा करने और मनुष्यों के साथ प्रतिस्पर्धा करने के लिए प्रोग्राम किया जाएगा।

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

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

4

सबसे पहले, परिभाषा के अनुसार, स्टेटलेस, यानी सही मायने में गुमनाम, लेन-देन का समर्थन करना असंभव है, जबकि वैध उपयोगकर्ताओं से बॉट्स को अलग करने में भी सक्षम है।

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

मान लीजिए कि एक कार डीलरशिप है जो प्रत्येक दिन एक अलग नई कार प्रदान करती है, और कुछ दिनों में, आप $ 5 प्रत्येक के लिए एक विदेशी स्पोर्ट्स कार खरीद सकते हैं (सीमा 3), साथ ही $ 5 गंतव्य शुल्क।

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

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

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

अब, बिना लाइसेंस के बॉब वापस - उसे बस एक बार DMV की यात्रा को सहना होगा। उसके बाद, वह डीलरशिप पर जा सकता है और कभी भी अपनी पसंद के अनुसार कार खरीद सकता है, जब तक कि वह गलती से अपने बटुए को घर पर नहीं छोड़ता है, या उसका लाइसेंस नष्ट या निरस्त कर दिया जाता है।

इस दुनिया में ड्राइवर का लाइसेंस बनाना लगभग असंभव है।

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

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

दिलचस्प बात यह है कि कार्यालय चाहे कितना भी भरा या खाली क्यों न हो, प्रत्येक उत्तराधिकारी की खिड़की पर समान समय लगता है। यहां तक ​​कि जब आप लाइन में एकमात्र व्यक्ति होते हैं, तो ऐसा लगता है कि कार्मिक आपको पूरी तरह से बोलने से पहले पीली लाइन के पीछे एक मिनट इंतजार करना पसंद करते हैं, "अगला!"

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

थोड़ा और तकनीकी विवरण:

जैसा कि मैंने बहुत ऊपर कहा, क्लाइंट-सर्वर रिलेशनशिप के बारे में कुछ स्टेटफुलनेस होना जरूरी हो जाता है जो आपको इंसानों को बॉट्स से अलग करने की अनुमति देता है। आप इसे इस तरह से करना चाहते हैं जो गुमनाम (गैर-प्रमाणित) मानव आगंतुक को अत्यधिक दंडित न करे।

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

मान लीजिए, चर्चा के लिए, टोकन (उर्फ "ड्राइवर का लाइसेंस) में 20 चंक्स होते हैं। क्रमिक रूप से प्रत्येक को प्राप्त करने के लिए, क्लाइंट-साइड कोड को सर्वर को एक वैध अनुरोध प्रस्तुत करना होगा। सर्वर एक जानबूझकर देरी को शामिल करता है (चलो कहते हैं) 200 मिलीसेकंड), अगला चंक भेजने के पहले 'स्टांप' के साथ अगले चंक अनुरोध करने की आवश्यकता होती है (यानी, एक डीएमवी विंडो से दूसरे पर जाने के लिए आवश्यक टिकट)। सभी ने बताया, खत्म होने के लिए लगभग 4 सेकंड बीतने चाहिए। chunk-Challenge-response-chunk-Challenge-response -...- ठग-चुनौती-प्रतिक्रिया-पूर्ण प्रक्रिया।

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

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

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

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


4

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

यहां बॉट्स लिखना कठिन बनाने के लिए कुछ विचार दिए गए हैं:

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

  • फार्म में टाइप करते समय कीस्ट्रोक्स का समय (फिर जावास्क्रिप्ट के माध्यम से)। यदि यह मानव-जैसा नहीं है तो इसे अस्वीकार कर दें। यह एक बॉट में मानव टाइपिंग की नकल करने के लिए एक दर्द है।

  • नए यादृच्छिक मान के साथ अपनी फ़ील्ड आईडी के दैनिक अद्यतन के लिए अपना कोड लिखें। यह उन्हें अपने बॉट को रोजाना अपडेट करने के लिए मजबूर करेगा जो एक दर्द है।

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

  • आप आगे भी जा सकते हैं और फ़्लैश सामग्री का उपयोग कर सकते हैं। फ्लैश पूरी तरह से एक बॉट के खिलाफ लिखने के लिए दर्द है।

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


मनुष्य कभी-कभी गैर-मानव टाइपिंग में संलग्न होते हैं, हालांकि - फॉर्म फिलर।
लोरेन Pechtel

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

4

अपंजीकृत उपयोगकर्ताओं के लिए सभी उत्पाद घोषणाओं पर 5 मिनट की देरी छड़ी। आकस्मिक उपयोगकर्ता वास्तव में इस पर ध्यान नहीं देंगे और गैर-उपयोगकर्ता उपयोगकर्ताओं को किसी भी तरह पंजीकृत किया जाएगा।


3

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

यह क्लाइंट एक वेब होस्टिंग सेवा चलाता है और इस एप्लिकेशन को तीन सर्वरों पर चला रहा है जो कुल 800-900 डोमेन संभालते हैं। पीक गतिविधि हजार-हिट-प्रति-सेकंड श्रेणी में है और कभी भी प्रदर्शन का मुद्दा नहीं रहा है - ब्लैकलिस्ट किए गए पते से पैकेट छोड़ने में फायरवॉल बहुत कुशल हैं।

और, हां, डीडीओएस तकनीक निश्चित रूप से मौजूद है जो इस योजना को हरा देगी, लेकिन वह वास्तविक दुनिया में ऐसा नहीं देख रही है। इसके विपरीत, वह कहते हैं कि यह उनके सर्वर पर लोड को काफी कम कर देता है।


3

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

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


3

अधिकांश विशुद्ध रूप से तकनीकी समाधान पहले ही पेश किए जा चुके हैं। इसलिए मैं समस्या का एक और दृष्टिकोण सुझाऊंगा।

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

  1. अन्य लोग, जो बॉट का संचालन नहीं करते हैं, उन्हें खरीदने का मौका मिलता है, और आप सीमित मात्रा में बैग दे रहे हैं।
  2. आप अपनी साइट पर मनुष्यों को आकर्षित करना चाहते हैं और सिर्फ बैग बेचते हैं।

बॉट्स से बचने की कोशिश करने के बजाय, आप संभावित बैग-खरीदारों को एक ईमेल, या यहां तक ​​कि एसएमएस अपडेट की सदस्यता लेने के लिए सक्षम कर सकते हैं, जब एक बिक्री होगी। यहां तक ​​कि आप उन्हें एक मिनट या दो हेड स्टार्ट (एक विशेष URL जहां सेल शुरू होता है, बेतरतीब ढंग से उत्पन्न, और मेल / एसएमएस के साथ भेजा जाता है) भी दे सकते हैं।

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

बॉट रनर्स अभी भी तेजी से खरीदारी खत्म करने के लिए आपकी सूचना पर बॉट चला सकते हैं। उस पर कुछ समाधान एक क्लिक खरीदने की पेशकश की जा सकती है।

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

संक्षेप में, मैं जो सुझाव दे रहा हूं, वह एक तकनीकी के बजाय एक सामाजिक समस्या के रूप में देखने की कोशिश है।

आसफ


2

समय-ब्लॉक उपयोगकर्ता एजेंट जो प्रति मिनट इतने सारे अनुरोध करते हैं। उदाहरण के लिए, यदि आपने किसी को 10 मिनट के लिए हर 5 सेकंड में एक पेज देने का अनुरोध किया है, तो वे संभवतः उपयोगकर्ता नहीं हैं ... लेकिन यह अधिकार प्राप्त करने के लिए मुश्किल हो सकता है।

यदि वे एक चेतावनी को ट्रिगर करते हैं, तो एक स्थिर पृष्ठ पर हर अनुरोध को कम से कम DB-IO के साथ एक संदेश के साथ संभव के रूप में रीडायरेक्ट करें जिससे उन्हें पता चलता है कि उन्हें X मिनट में वापस अनुमति दी जाएगी।

यह जोड़ना महत्वपूर्ण है कि आपको केवल पृष्ठों के अनुरोधों पर इसे लागू करना चाहिए और मीडिया (js, चित्र, आदि) के सभी अनुरोधों को अनदेखा करना चाहिए।


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

यदि आप स्वयं आईपी जाँच कर रहे हैं (यानी अपने डेटाबेस में, अपने PHP स्क्रिप्ट से या जो भी), तो यह काफी महंगा होगा। अपने लिए इसे करने के लिए फ़ायरवॉल प्राप्त करें और यह बहुत अधिक संभव हो जाता है।
rmeador

rmeador: यह भी लगता है कि यह निर्धारित करना बहुत कठिन होगा कि अनुरोध HTML या अन्य मीडिया के लिए था या नहीं। यदि आपको अपने पृष्ठ पर 20 बाहरी चीजें मिली हैं, तो आप 1-2 सेकंड में एक नए उपयोगकर्ता के लिए न्यूनतम 21 अनुरोध देख रहे हैं।
ओली

2

DoS को रोकना, @ davebug के उन लक्ष्यों में से # 2 को हरा देगा जिन्हें उसने ऊपर उल्लिखित किया है, "साइट को बॉट द्वारा धीमा न करें" लेकिन जरूरी # 1 हल न करें, "आइटम को गैर-स्क्रिप्टिंग मनुष्यों को बेचें"

मुझे यकीन है कि एक स्किटर अत्यधिक सीमा के तहत स्केट करने के लिए कुछ लिख सकता है जो अभी भी एक आदमी की तुलना में तेजी से हो सकता है जो ऑर्डरिंग रूपों के माध्यम से जा सकता है।


2

सभी सही हैं इसलिए स्पैमर नियमित लोगों को "बकवास के दलदल" को जीतने के लिए प्रतिस्पर्धा कर रहे हैं? अगली नीलामी को "बकवास का बैग" क्यों नहीं बनाया जाए? स्पैमर को डॉगी डू से भरे बैग के लिए अच्छे पैसे देने पड़ते हैं और हम सभी उन पर हंसते हैं।


2

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

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

इससे भी बेहतर अगर ऑफर को किसी तरह से अस्वीकार किया जा सकता है। फिर आप अभी भी फ़ॉक्स सर्वर पर ऑफ़र कर सकते हैं लेकिन जब बॉट भरता है तो फॉर्म को कहें "सॉरी, आप जल्दी नहीं थे" :) फिर वे निश्चित रूप से सोचेंगे कि वे अभी भी खेल में हैं।


2

आपको कैसे पता चलेगा कि स्क्रिप्टर्स ऑर्डर दे रहे हैं?

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

यदि आपके पास इस प्रश्न का उत्तर देने का एक तरीका है, तो आपके पास उन विशेषताओं का एक सेट है, जिनका उपयोग आप स्क्रिप्टर्स को फ़िल्टर करने के लिए कर सकते हैं।


2

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

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

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

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