रोबोट को स्वचालित रूप से फ़ॉर्म भरने से कैसे रोकें?


105

मैं स्वचालित रूप से उत्पन्न इनपुट को रोकने के लिए एक अच्छा पर्याप्त एंटी-स्पैमिंग तंत्र के साथ आने की कोशिश कर रहा हूं। मैंने पढ़ा है कि कैप्चा, 1 + 1 = जैसी तकनीकें? सामान अच्छी तरह से काम करता है, लेकिन वे आवेदन के मुफ्त त्वरित उपयोग को रोकने के लिए एक अतिरिक्त कदम भी पेश करते हैं (मैं ऐसा कुछ भी नहीं ढूंढ रहा हूं कृपया)।

मैंने अपने सभी रूपों में कुछ छिपे हुए फ़ील्ड सेट करने की कोशिश की है, display: none; हालाँकि, मुझे यकीन है कि एक स्क्रिप्ट को उस फॉर्म फ़ील्ड आईडी का पता लगाने के लिए कॉन्फ़िगर किया जा सकता है और बस इसे भरना है।

क्या आप एक अच्छी एंटी-स्वचालित-भरने-रोबोट विधि को लागू / जानते हैं? क्या ऐसा कुछ है जो HTML और / या सर्वर साइड प्रोसेसिंग के साथ मूल रूप से किया जा सकता है, और (लगभग) बुलेटप्रूफ हो सकता है? (जेएस के बिना के रूप में एक बस इसे निष्क्रिय कर सकता है)।

मैं इसके लिए सत्रों पर भरोसा नहीं करने की कोशिश कर रहा हूं (यानी ओवरलोड को रोकने के लिए बटन को कितनी बार क्लिक किया जाता है) की गिनती।


5
कैप्चा समाधान नहीं चाहने के लिए धन्यवाद! IMO, फ़ॉर्म स्पैम साइट स्वामियों के लिए एक समस्या है और इसे रोकना उपयोगकर्ता को सहन नहीं करना चाहिए। यहां तक ​​कि कई वैकल्पिक तरीके हैं जो हम साइट के अंत में स्पैम को संबोधित कर सकते हैं, जैसा कि यहां उत्तरों द्वारा दिया गया है। उपयोगकर्ता इंटरैक्शन की आवश्यकता वाले तरीकों का उपयोग केवल आलसी या नौसिखिए द्वारा किया जाना चाहिए।
माइक

जवाबों:


73

एंटी-स्पैम को हल करने का एक आसान-से-कार्यान्वयन लेकिन मूर्खतापूर्ण (विशेष रूप से "विशिष्ट" हमलों पर) फॉर्म-सबमिट और पेज-लोड के बीच के समय को ट्रैक नहीं कर रहा है।

बॉट पृष्ठ का अनुरोध करते हैं, पृष्ठ को पार्स करते हैं और फॉर्म जमा करते हैं। यह उपवास है।

एक URL में मनुष्य टाइप करते हैं, पृष्ठ को लोड करते हैं, पृष्ठ पूरी तरह से लोड होने से पहले प्रतीक्षा करते हैं, नीचे स्क्रॉल करते हैं, सामग्री पढ़ते हैं, टिप्पणी को भरने / फॉर्म भरने के लिए समय निर्धारित करते हैं, फॉर्म भरने के लिए समय की आवश्यकता होती है, और सबमिट करें।

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


9
यह देखें कि क्या आप अंतिम उपयोगकर्ताओं को स्वचालित फॉर्म फिलर्स जैसे कि addons.mozilla.org/en-US/firefox/addon/1882 का उपयोग करने की अनुमति देना चाहते हैं जो बहुत तेजी से प्रस्तुत करने की अनुमति दे सकते हैं। साथ ही कैप्चा किसी भी चीज़ को अंतिम उपयोगकर्ता को परेशान करना आम तौर पर अच्छा नहीं होता है, और विशेष रूप से जब किसी व्यक्ति को रोष में जाने से (बहुत) तेजी से रोका जाता है।
बर्फ

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

5
ध्यान दें कि SO ऐसा कुछ करता है। एक टिप्पणी को तेजी से या कई बार पंक्ति में संपादित करें और आपको "क्या आप एक इंसान हैं?" पृष्ठ।
जैकब बोर्ग

2
हैकर्स हमेशा फॉर्म का अनुरोध नहीं करेंगे। कभी-कभी, सावधानीपूर्वक तैयार किया गया URL (GET या POST का उपयोग करके) थोड़े से प्रयास के साथ कई बार फ़ॉर्म को पोस्ट करने के लिए पर्याप्त होगा।
crafter

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

75

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

http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx

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

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


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

1
यह वेबमास्टरों के लिए एक पुराना समाधान प्रतीत होता है, जिसमें गैर-प्रमुख कुंजी शब्दों के टन भी शामिल हैं ताकि उनके वेबक्रैकिंग को बढ़ावा दिया जा सके। मुझे लगता है कि Google ऐसे क्रॉलर बॉट खोज सकता है जो यह प्रदर्शित कर सकते हैं: कोई नहीं। अन्य बॉट ऐसा क्यों नहीं कर पाएंगे?
स्नोफ्लेक

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

25
यहां छोटा बिंदु: जेएस मुद्दे के चारों ओर पाने के लिए, पृष्ठ के ऊपर अपने हनीपॉट इनपुट को स्थिति में लाने के लिए बस सीएसएस का उपयोग करें - इस तरह से जेएस अक्षम होना ठीक होगा, और इसके चारों ओर बॉट को सीएसएस को पार्स करने में सक्षम होना होगा। पूर्ण स्थिति और एक सामान्य ज्ञान निर्णय लें कि यह एक हनीपॉट है या नहीं। इस तरह से थोड़ा और बुलेट प्रूफ :)
पूरी

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

22

क्या होगा अगर - बॉट कोई भी नहीं पाता है form?

3 उदाहरण:

  1. AJAX का उपयोग करके अपना फ़ॉर्म डालें
  • यदि आप उन उपयोगकर्ताओं के साथ ठीक हैं जिनके पास JS अक्षम है और कोई फ़ॉर्म देखने / सबमिट करने में सक्षम नहीं है, तो आप उन्हें सूचित कर सकते हैं और उन्हें जावास्क्रिप्ट स्टेटमेंट स्टेटमेंट का उपयोग करते हुए पहले जावास्क्रिप्ट सक्षम कर सकते हैं:
<noscript>
  <p class="error">
    ERROR: The form could not be loaded. Please enable JavaScript in your browser to fully enjoy our services.
  </p>
</noscript>
  • एक बनाएँ form.htmlऔर अपने तत्व के formअंदर रखें <div id="formContainer">

  • उस पृष्ठ के अंदर जहां आपको कॉल करने की आवश्यकता है उस फॉर्म का उपयोग करें एक खाली <div id="dynamicForm"></div>और यह jQuery:$("#dynamicForm").load("form.html #formContainer");

  1. पूरी तरह से JS का उपयोग करके अपने फॉर्म का निर्माण करें

// THE FORM
var $form = $("<form/>", {
  appendTo : $("#formContainer"),
  class    : "myForm",
  submit   : AJAXSubmitForm
});

// EMAIL INPUT
$("<input/>",{
  name        : "Email", // Needed for serialization
  placeholder : "Your Email",
  appendTo    : $form,
  on          : {        // Yes, the jQuery's on() Method 
    input : function() {
      console.log( this.value );
    }
  }
});

// MESSAGE TEXTAREA
$("<textarea/>",{
  name        : "Message", // Needed for serialization
  placeholder : "Your message",
  appendTo    : $form
});

// SUBMIT BUTTON
$("<input/>",{
  type        : "submit",
  value       : "Send",
  name        : "submit",
  appendTo    : $form
});

function AJAXSubmitForm(event) {
  event.preventDefault(); // Prevent Default Form Submission
  // do AJAX instead:
  var serializedData = $(this).serialize();
  alert( serializedData );
  $.ajax({
    url: '/mail.php',
    type: "POST",
    data: serializedData,
    success: function (data) {
      // log the data sent back from PHP
      console.log( data );
    }
  });
}
.myForm input,
.myForm textarea{
  font: 14px/1 sans-serif;
  box-sizing: border-box;
  display:block;
  width:100%;
  padding: 8px;
  margin-bottom:12px;
}
.myForm textarea{
  resize: vertical;
  min-height: 120px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="formContainer"></div>

  1. बॉट-चारा इनपुट
  • बॉट्स लाइक ( वास्तव में पसंद) सौसी इनपुट एलिमेंट्स जैसे:
<input 
  type="text"
  name="email"
  id="email"
  placeholder="Your email"
  autocomplete="nope"
  tabindex="-1"
They wll be happy to enter some value such as
`dsaZusil@kddGDHsj.com`
  • उपरोक्त HTML का उपयोग करने के बाद आप इनपुट प्रदर्शित न करने के लिए CSS का भी उपयोग कर सकते हैं:
input[name=email]{ /* bait input */
  /* do not use display:none or visibility:hidden
     that will not fool the bot*/
  position:absolute;
  left:-2000px;
}
  • अब जब आपका इनपुट PHP में उपयोगकर्ता से अपेक्षा नहीं करता है कि आपका $_POST["email"] खाली होना चाहिए (बिना किसी मूल्य के)! अन्यथा फॉर्म जमा न करें।
  • अंत में, तुम सब करने की जरूरत है बनाने के है अन्य इनपुट की तरह <input name="sender" type="text" placeholder="Your email"> के बाद (!) "बॉट-चारा" वास्तविक उपयोगकर्ता ईमेल पते के लिए इनपुट।

स्वीकृतियाँ:

Developer.Mozilla - फॉर्म ऑटोकॉमप्लेटिशन स्टैकऑवरफ्लो को बंद करना
- टैबइंडेक्स को अनदेखा करना


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

मुझे संदेह autocomplete=nopeहै; on;-) MDN: इनपुट # attr-autocomplete
हैंडल करेगा

@ इसका कोई फर्क नहीं पड़ता, यह एक बॉट चारा इनपुट है। आप autocomplete="oh sunny day"उस बात के लिए लिख सकते हैं ।
रोको सी। बुल्जन

19

मैंने जो किया वह एक छिपे हुए क्षेत्र का उपयोग करना और उस पर टाइमस्टैम्प डालना और फिर इसकी तुलना PHP का उपयोग कर सर्वर पर टाइमस्टैम्प से करना है।

यदि यह 15 सेकंड से अधिक तेज़ था (यह निर्भर करता है कि आपके फॉर्म कितने बड़े या छोटे हैं) तो यह एक बॉट था।

उममीद है कि इससे मदद मिलेगी


1
अच्छा विचार है, हालांकि, मैंने तेज़ / बिजली उपयोगकर्ताओं को अनुमति देने के लिए लगभग 3 से 5 सेकंड की सीमा निर्धारित की है। मैं इसी दृष्टिकोण का उपयोग करता हूं, और मेरे प्रपत्रों पर सीमाएं 3 सेकंड में 99% बॉट को फ़िल्टर कर देता हूं।
कायला

@adnhack क्या आपका मतलब कुछ इस तरह है: 1) पृष्ठ लोड पर php के साथ सर्वर समय मिलता है और सत्र बनाते हैं। 2) उपयोगकर्ता या बॉट फॉर्म भरता है, $.postसब सबमिट करें, बाहरी php फ़ाइल को भेजें। 3) बाहरी php में फिर से सर्वर टाइम मिलता है और सेशन टाइम के साथ तुलना करते हैं?
एंड्रीस

16

वस्तुतः स्पैम को खत्म करने का एक बहुत प्रभावी तरीका एक टेक्स्ट फ़ील्ड है जिसमें टेक्स्ट है जैसे कि "फ़ॉर्म सबमिट करने के लिए इस टेक्स्ट को हटा दें!" और फॉर्म जमा करने के लिए उस पाठ को हटाया जाना चाहिए।

प्रपत्र सत्यापन पर, यदि पाठ फ़ील्ड में मूल पाठ, या उस मामले के लिए कोई यादृच्छिक पाठ शामिल है, तो फ़ॉर्म सबमिट न करें। बॉट फॉर्म नाम पढ़ सकते हैं और स्वचालित रूप से नाम और ईमेल फ़ील्ड भर सकते हैं, लेकिन यह नहीं जानते कि क्या उन्हें वास्तव में जमा करने के लिए एक निश्चित क्षेत्र से पाठ निकालना है।

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


दिलचस्प है, क्या आप जानते हैं कि क्या यह अन्य उत्तरों की तुलना में अधिक प्रभावी है ... एक छिपे हुए टेक्स्टबॉक्स या फॉर्म को भरने में लगने वाले समय को ट्रैक करना?
ऑस्टिन हेनले

4
यह उन उपयोगकर्ताओं को भी पकड़ लेगा जो निर्देशों का पालन नहीं कर सकते हैं, जो वांछित नहीं हो सकते हैं।
wilbbe01

यह मुझे पंसद है! जब तक बॉट खाली और भरे हुए क्षेत्रों के विभिन्न संयोजनों का प्रयास करना शुरू नहीं करता है ... परीक्षण का सबसे अच्छा तरीका यह लागू है और इनमें से एक के साथ स्कैन करें: sectoolmarket.com/…
nmit026

अब तक प्रभावी रूप से बॉट का प्रबंधन करने वाले व्यक्ति को पता नहीं चलता है और कोड को घुमाता है।
तल्हा एवान

11

कैसे एक पाठ क्षेत्र इनपुट बॉक्स पृष्ठभूमि के रूप में एक ही रंग बनाने के बारे में जो रिक्त रहना चाहिए। यह बॉट रीडिंग डिस्प्ले की समस्या के आसपास मिलेगा: कोई नहीं


2
इसे टिप्पणी के रूप में जोड़ें जब आपको उत्तर के बजाय अधिक प्रतिष्ठा मिलती है;)
रोबऑक्ट

3
यह अभिगम्यता की समस्याएं प्रस्तुत करता है। हनीपोट इंडेक्स स्क्रीन पाठकों वाले उपयोगकर्ताओं से छिपाया नहीं जाएगा।
ओटेरफैन 17

5
मैं एक अंधा उपयोगकर्ता हूं, और मुझे एक बार इस तरह का एक फॉर्म फ़ील्ड मिला, और इसके ऊपर का लेबल पढ़ा गया: "यदि आप इसे देख सकते हैं, तो इस रिक्त स्थान को छोड़ दें।" बहुत प्रभावी IMO।
परम डौस्तदार

8

http://recaptcha.net/

reCAPTCHA एक मुफ्त एंटीबॉडी सेवा है जो पुस्तकों को डिजिटल बनाने में मदद करती है

यह Google द्वारा (2009 में):

और देखें


5
एक उपयोगकर्ता के रूप में मैं बार-बार पता लगाने के लिए कठिन होने के लिए पुनरावृत्ति पाता हूं। कुछ शब्दों को पढ़ना इतना कठिन है, कि आप अंत में 3 या 4 बार प्रयास करें। हालांकि यह निश्चित रूप से रोबोट समस्या के साथ मदद करेगा।
ब्रायन

ब्रायन ने क्या कहा और: yro.slashdot.org/story/10/03/02/013523238/…
एसएफ।

मैंने खुद को इस पेज पर पाया है क्योंकि कैप्चा / reCAPTCHA वर्तमान में बॉट फॉर्म जमा करना बंद नहीं करता है। यह 5 साल बाद है और जब यह जवाब दिया गया था तब की तुलना में यह एक नई तकनीक है
जॉनीफाल्डो

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

इन दिनों पुनरावृत्ति एक साधारण चेकबॉक्स के रूप में शुरू होती है, शायद यह उतना दर्दनाक नहीं है जितना पहले हुआ करता था? ...
रोज़गारपैक

6

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

यहाँ एक तुच्छ उदाहरण है ...

<script>
function checkForm()
{
    // When a user submits the form, the secretField's value is changed
    $('input[name=secretField]').val('goodValueEqualsGoodClient');

    return true;
}
</script>

<form id="cheese" onsubmit="checkForm">
<input type="text" name="burger">

<!-- Check that this value isn't the default value in your php script -->
<input type="hidden" name="secretField" value="badValueEqualsBadClient">

<input type="submit">
</form>

आपकी php स्क्रिप्ट में कहीं ...

<?php

if ($_REQUEST['secretField'] != 'goodValueEqualsGoodClient')
{
    die('you are a bad client, go away pls.');
}

?>

इसके अलावा, कैप्चा महान हैं, और वास्तव में स्पैम के खिलाफ सबसे अच्छा बचाव है।


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

मैं गलत हो सकता हूं, लेकिन यह जेएस-अक्षम उपयोगकर्ता को यह नहीं बताएगा कि आप एक बुरे ग्राहक हैं, pls दूर जाएं। '
गाल

गैल, इसका एक तुच्छ उदाहरण है, केवल यह दिखाते हुए कि क्लाइंट-साइड जेएस द्वारा निर्धारित अनुरोध संस्करण के खिलाफ कैसे मान्य किया जाए।
जॉन हिममेलमैन

@ जॉन हिमोत्कर्ष कैप्चा सॉल्व हैं और जरूरी नहीं कि स्पैम के खिलाफ सबसे अच्छा बचाव हो। एंटी- captcha.com जैसी पे-फॉर-सर्विसेज हैं जो कम शुल्क पर फॉर्म कैप्चा को हल करेगी।

इस दृष्टिकोण के साथ समस्या यह है कि मैंने PhantomJS का उपयोग करते हुए बहुत सारे बॉट देखे हैं। यह उनके माध्यम से प्राप्त करने की अनुमति देगा।
परम डौस्तदार

4

मुझे आश्चर्य है कि किसी ने भी इस विधि का उल्लेख नहीं किया है:

  • अपने पृष्ठ पर, एक छोटी, छिपी हुई छवि शामिल करें।
  • इस छवि की सेवा करते समय एक कुकी रखें।
  • फॉर्म जमा करते समय, कुकी की जांच करें।


पेशेवरों:

  • उपयोगकर्ता और डेवलपर के लिए सुविधाजनक है
  • विश्वसनीय लगता है
  • कोई जावास्क्रिप्ट नहीं

विपक्ष:

  • एक HTTP अनुरोध जोड़ता है
  • क्लाइंट पर कुकीज़ को सक्षम करने की आवश्यकता होती है


उदाहरण के लिए, इस विधि का उपयोग टिप्पणियाँ के लिए वर्डप्रेस प्लगइन कुकीज़ द्वारा किया जाता है ।


क्या फैंटमज जैसे सामान का उपयोग करने वाले बॉट आसानी से इसके आसपास नहीं पहुंचेंगे?
परम डौस्तदार

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

किसी भी कारण से यह एक सीएसआरएफ टोकन से बेहतर होगा?
xenoterracide

1
एक CSRF टोकन एक बॉट को बिल्कुल भी नहीं रोकेगा। 1 अनुरोध, फॉर्म प्राप्त करें, जिसमें टोकन शामिल है। दूसरा अनुरोध, टोकन सहित फॉर्म पोस्ट करें।
ग्रास डबल

4

हेडलेस ब्राउजर्स (जैसे फैंटमज) के उद्भव के साथ, जो कुछ भी अनुकरण कर सकते हैं , आप ऐसा नहीं मान सकते :

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

अगर यह सच हुआ करता था, तो यह अब सच नहीं है।

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

 <input type="submit" name="ignore" value="I am a spammer!" />
 <input type="image" name="accept" value="submit.png" alt="I am not a spammer" />

बेशक आप दो छवि input[type=image]बटन के साथ खेल सकते हैं , प्रत्येक लोड के बाद क्रम को बदल सकते हैं , पाठ विकल्प, छवियों की सामग्री (और उनके आकार) या nameबटनों की; जो कुछ सर्वर काम की आवश्यकता होगी।

 <input type="image" name="random125454548" value="random125454548.png"
      alt="I perfectly understand that clicking on this link will send the
      e-mail to the expected person" />
 <input type="image" name="random125452548" value="random125452548.png"
      alt="I really want to cancel the submission of this form" />

एक्सेसिबिलिटी कारणों के लिए, आपको एक सही पाठ्य विकल्प रखना होगा, लेकिन मुझे लगता है कि स्क्रीन्रेडर्स उपयोगकर्ताओं के लिए एक लंबा वाक्य बॉट माना जाता है।

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


यह मुझे लगता है कि आपको वैकल्पिक पाठ को रखने के लिए बहुत तथ्य का अर्थ है कि आपकी दो छवि समाधान अन्य विकल्पों के रूप में स्क्रिप्टिंग के लिए अतिसंवेदनशील है। और "मैं एक स्पैमर नहीं हूँ" बटन के लिए: क्या वह भी स्क्रिप्टेड नहीं हो सकता है?
हॉकआई

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

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

3

एक बहुत ही सरल तरीका है कि कुछ फ़ील्ड प्रदान करें <textarea style="display:none;" name="input"></textarea>और उन सभी उत्तरों को छोड़ दें जिनमें यह भरा हुआ है।

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

वैसे भी, आप ताइवान या भारत से लाइव "बॉट्स" के खिलाफ ज्यादा कुछ नहीं करेंगे, जिन्हें प्रति पोस्ट किए गए लिंक के लिए $ 0.03 का भुगतान किया जाता है, और उनके जीवन को इस तरह से बनाते हैं।


2
मुझे पता है कि यह उत्तर लगभग 7 साल पुराना है लेकिन मुझे ऐसा लगता है कि यह टिप्पणी करने योग्य है। इस प्रकार की सुरक्षा से बचने के लिए कई बॉट को एक शैली = "प्रदर्शन: कोई नहीं" के साथ फ़ील्ड्स को अनदेखा करने के लिए प्रोग्राम किया जा सकता है।
केनी जॉनसन

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

2

मेरे पास स्पैमर को रोकने का एक सरल तरीका है जो 100% प्रभावी है, कम से कम मेरे अनुभव में, और reCAPTCHA और इसी तरह के दृष्टिकोण के उपयोग से बचा जाता है। जब मैं इस दृष्टिकोण को लागू करता हूं, तो मैं पिछले 5 वर्षों के लिए अपनी साइटों के HTML रूपों में से लगभग 100 स्पैम प्रति दिन तक चला जाता हूं।

यह एक ग्राफिक सबमिशन "कोड" के साथ सबसे एचटीएमएल फॉर्म हैंडलिंग स्क्रिप्ट्स (I FormMail.pl का उपयोग करता है) के ई-मेल ALIAS क्षमताओं का लाभ उठाकर काम करता है, जो कि ग्राफिक्स प्रोग्राम के सबसे सरल में आसानी से बनाया जाता है। इस तरह के एक ग्राफिक में कोड M19P17nH और प्रॉम्प्ट "बाईं ओर कोड दर्ज करें" शामिल है।

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

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

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


1

मैं यहाँ कई चीजों के बारे में सोच रहा हूँ:

  1. जेएस (हालाँकि आप इसे नहीं चाहते हैं) का उपयोग करके माउस मूव, की प्रेस, माउस क्लिक को ट्रैक कर सकते हैं
  2. रेफरल url प्राप्त करना (जो इस मामले में एक ही डोमेन से होना चाहिए) ... सामान्य उपयोगकर्ता को संपर्क फ़ॉर्म तक पहुंचने से पहले वेबसाइट के माध्यम से नेविगेट करना होगा: PHP: रेफरल यूआरएल कैसे प्राप्त करें?
  3. IP प्राप्त करने के लिए $ _SESSION चर का उपयोग करके और IP की उस सूची के विरुद्ध फ़ॉर्म सबमिट की जाँच करें
  4. कुछ डमी टेक्स्ट के साथ एक टेक्स्ट फ़ील्ड भरें जिसे आप सर्वर साइड पर चेक कर सकते हैं यदि यह ओवरराइट किया गया था
  5. ब्राउज़र संस्करण की जाँच करें: http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php.html ... यह स्पष्ट है कि बॉट एक ब्राउज़र का उपयोग नहीं करेगा, लेकिन सिर्फ एक स्क्रिप्ट ।
  6. खेतों को एक-एक करके भेजने और सबमिशन के बीच के समय में अंतर की जांच करने के लिए AJAX का उपयोग करें
  7. फॉर्म से पहले / बाद में एक नकली पेज का उपयोग करें, बस एक और इनपुट भेजने के लिए

क्या आप इन चरणों में से कुछ पर विस्तार से बता सकते हैं क्या वे अभी भी 2020 में मान्य हैं? धन्यवाद।
माइकल मोरियार्टी

0

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

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


अच्छा विचार। मैं रंग को मापदंड के रूप में उपयोग नहीं करूंगा, क्योंकि यह colourblind उपयोगकर्ताओं को बाहर कर सकता है
Aitken

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

छवियाँ हमेशा एक बुरा विचार होती हैं ... पाठ को मुश्किल से पढ़ा जा सकता है, मैंने अन्य वेबसाइटों के साथ इस मुद्दे का सामना किया
Valicu2000

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

0

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

अन्यथा मुझे लगता है कि आपको "मानवता" के ग्राहक प्रमाण के रूप का उपयोग करने के लिए मजबूर किया जाएगा


4
स्मार्ट रोबोट जावास्क्रिप्ट निष्पादित कर सकते हैं । एक जावास्क्रिप्ट सॉल्यूशन करके आप 99% रोबोट को रोक रहे हैं
बेन शेहिरमैन 15

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

यदि आप जावास्क्रिप्ट अक्षम लोगों के बारे में चिंतित हैं, तो पृष्ठ के ऊपर टेक्स्ट फ़ील्ड को रखने के लिए सीएसएस का उपयोग करें।
चोकी द कॉर्की

0

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

एक फ़ील्ड को इन जैसे जोड़ने का प्रयास करें:

  • "हैलो" को एक तरफ बॉक्स में कॉपी करें
  • 1 + 1 =?
  • बॉक्स में वेबसाइट का नाम कॉपी करें

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

संपादित करें

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


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

@Miki स्पैम साइट के मालिक का समय बर्बाद करता है। समय पैसा है, जो मैं बेचता हूं वह आपके लिए अधिक महंगा होगा। आपके तर्क को आसानी से यह कहने के लिए इस्तेमाल किया जा सकता है कि "मुझे परवाह नहीं है कि आपको किराए का भुगतान करना है, मैं उत्पादन + 1 $ की लागत का भुगतान करना चाहता हूं। आप मेरी समस्या का किराया कैसे दे रहे हैं"। जब आप कुछ खरीदते हैं जो आप होस्टिंग, परिवहन, समय आदि के लिए भुगतान करते हैं
मिहाई पी।

@ माइक - यह आपकी समस्या है क्योंकि आप काम करना चाहते हैं (जाहिर है, जब से आप इसका उपयोग कर रहे हैं)। मशीनें यहां तक ​​कि सबसे अस्पष्ट साइटें ढूंढती हैं और एक दिन में हजारों सबमिशन को स्पैम कर देंगी, जिससे वे फॉर्म बेकार हो जाएंगे। तो अगली बार जब आप उनकी वेबसाइट पर एक फॉर्म का उपयोग करके एक छोटे व्यवसाय के लिए एक प्रश्न प्रस्तुत करते हैं और आपको इसे करने के लिए 9 + 3 को जोड़ना होगा ... और खुद से पूछें "मुझे ऐसा क्यों करना है?" आपका उत्तर "हो सकता है क्योंकि मैं वास्तव में अपने प्रश्न का उत्तर चाहता हूं"।
जिम्बो जॉनी

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

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

0

एक ट्यूटोरियल हैJQuery साइट पर इस बारे । हालांकि यह JQuery का विचार स्वतंत्र है।

यदि जावास्क्रिप्ट उपलब्ध नहीं है, तो आपको कैप्चा प्रकार के दृष्टिकोण पर वापस आने की आवश्यकता हो सकती है।


0

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


0

यह सिर्फ एक विचार है, आईडी का उपयोग मेरे आवेदन में और अच्छी तरह से काम करता है

आप जावास्क्रिप्ट या jquery के साथ माउस आंदोलन पर एक कुकी बना सकते हैं और अगर सर्वर में कुकी मौजूद हैं, तो केवल इसलिए कि मनुष्य के पास माउस है, कुकी केवल उनके द्वारा बनाई जा सकती है, कुकी एक टाइमस्टैम्प या टोकन हो सकती है जो मान्य हो सकती है


दिलचस्प विचार! क्या आपने वास्तविक दुनिया में इसका इस्तेमाल किया है?
आकाशवाणी

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

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

0

1 का उपयोग करें) टोकन 2 के साथ फॉर्म) आईपी पते के साथ देरी के लिए फार्म की जांच करें 3) ब्लॉक आईपी (वैकल्पिक)


0

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

Btw मैं इसके लिए सत्रों पर भरोसा नहीं करने की कोशिश कर रहा हूं (जैसे, गिनती करना कि ओवरलोड को रोकने के लिए बटन को कितनी बार क्लिक किया जाता है)।

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

इसके अलावा यह मेरे लिए अच्छा होगा कि विज्ञापन सेवाएँ कुछ प्रकार के एपी (शायद पहले से मौजूद हैं) यह देखने के लिए कि उपयोगकर्ता "विज्ञापन को देखा", यह संभावना है कि विज्ञापन देखने वाले उपयोगकर्ता वास्तविक उपयोगकर्ता हैं, लेकिन यदि वे नहीं हैं असली अच्छी तरह से कम से कम आपको 1 दृश्य मिलता है, इसलिए कुछ भी नुकसान नहीं है। (और मुझ पर विश्वास करें, विज्ञापन नियंत्रण आपके द्वारा अकेले किए जा सकने वाले कुछ चीज़ों से अधिक परिष्कृत हैं)


0

वास्तव में प्रदर्शन के साथ जाल : कोई भी एक आकर्षण की तरह काम करता है। यह सीएसएस घोषणा को किसी भी वैश्विक शैली की शीट वाली फ़ाइल में स्थानांतरित करने में मदद करता है, जो स्पैम बॉट को लोड करने के लिए मजबूर करेगा (साथ ही एक प्रत्यक्ष शैली = "प्रदर्शन: कोई नहीं;" घोषणा की संभावना हो सकती है एक स्पैम बॉट द्वारा व्याख्या की जा सकती है, जैसा कि एक बॉट कर सकता है; दस्तावेज़ के भीतर स्थानीय शैली की घोषणा)।

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

मैं जो प्रयोग कर रहा हूँ वह नकली फॉर्म फ़ील्ड्स का संयोजन है (ब्राउज़र के उपयोग में अवैध फ़ील्ड के रूप में वर्णित है जो सामान्य रूप से CSS को प्रदर्शित नहीं करता है या प्रदर्शित नहीं करता है : विशेष रूप से कोई नहीं ), पवित्रता जांच (यानी इनपुट का प्रारूप है) वैध?), टाइम स्टैम्पिंग (बहुत तेज़ और बहुत धीमी गति से सबमिशन), MySQL (ई-मेल और आईपी पते के साथ-साथ फ्लड फ़िल्टर के आधार पर ब्लैकलिस्ट लागू करने के लिए), DNSBLs (जैसे Spamhaus से SBL + XBL), पाठ विश्लेषण ( उदाहरण के लिए शब्द जो स्पैम के लिए एक मजबूत संकेत हैं) और सत्यापन ई-मेल (यह निर्धारित करने के लिए कि प्रदान किया गया ईमेल पता मान्य है या नहीं)।

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


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

  2. ईमेल सत्यापन जोड़ें। उपयोगकर्ता को एक ईमेल मिलता है और उसे एक लिंक पर क्लिक करना होगा। अन्यथा कुछ समय में पद त्याग दें।


0

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

function formCheck(){
var timeStart; 
var timediff;

$("input").bind('click keyup', function () {
    timeStart = new Date().getTime();          
}); 
 timediff= Math.round((new Date().getTime() - timeStart)/1000);

  if(timediff < 3) { 
    //throw a warning or don't submit the form 
  } 
  else submit(); // some submit function

}

0

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


जिज्ञासा से बाहर, reCAPTCHA पर आपकी भावना क्या है? आप पहले अन्य भुगतान सेवाओं का उल्लेख कर रहे हैं, लेकिन उन लोगों की तुलना reCAPTCHA से कैसे की जाती है, और / या आप उन सभी को मुफ्त सेवा की सिफारिश क्यों करेंगे?
हॉकआई

0

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

एचटीएमएल

<form id="form01" action="false-action.php">
    //your inputs
    <button>SUBMIT</button>
</form>

JAVASCRIPT

$('#form01 button').click(function(){

   //your Validations and if everything is ok: 

    $('#form01').attr('action', 'correct-action.php').on("load",function(){
        document.getElementById('form01').submit()
    });
})

फिर मैं त्रुटियों को रोकने के लिए .attr () के बाद एक "कॉलबैक" जोड़ता हूं।


-1

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

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

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