बॉट से ईमेल पता छिपाएं - मेलआउट रखें:


81

tl; डॉ

स्क्रिप्ट का उपयोग किए बिना बॉट से ईमेल पता छुपाएं और mailto:कार्यक्षमता बनाए रखें । विधि को स्क्रीन-पाठकों का भी समर्थन करना चाहिए।


सारांश

  • स्क्रिप्ट या संपर्क प्रपत्रों का उपयोग किए बिना ईमेल ऑब्सफैक्शन

  • ईमेल पता पूरी तरह से मानव दर्शकों के लिए दृश्यमान होना चाहिए और कार्यक्षमता बनाए रखना चाहिएmailto:

  • ईमेल पता छवि रूप में नहीं होना चाहिए

  • ईमेल पता स्पैम-क्रॉलर और स्पैम-बॉट्स और किसी भी अन्य हारवेस्टर प्रकार से "पूरी तरह" छिपा होना चाहिए


इच्छित प्रभाव:

  • कोई स्क्रिप्ट नहीं , कृपया। परियोजना में कोई स्क्रिप्ट का उपयोग नहीं किया गया है और मैं इसे इसी तरह रखना चाहूंगा

  • ईमेल पता या तो पृष्ठ पर प्रदर्शित किया जाता है या किसी प्रकार की उपयोगकर्ता सहभागिता के बाद आसानी से प्रदर्शित किया जा सकता है, जैसे मोडल खोलना।

  • उपयोगकर्ता ईमेल पते पर पर क्लिक कर सकते हैं जो बदले में ट्रिगर करेगा mailto:कार्यक्षमता।

  • ईमेल पर क्लिक करने से उपयोगकर्ता का ईमेल एप्लिकेशन खुल जाएगा।

    दूसरे शब्दों में, mailto:कार्यक्षमता को काम करना चाहिए।

  • बॉट्स को ईमेल पते के रूप में दिखाई नहीं देता है या नहीं पहचाना जाता है (इसमें पृष्ठ स्रोत शामिल है)

  • मेरे पास एक इनबॉक्स नहीं है जो स्पैम से भरा हो


क्या करता है नहीं कार्य

  • ईमेल पते के बजाय एक संपर्क फ़ॉर्म - या कुछ भी समान जोड़ना

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

  • पते की छवि के साथ पते की जगह

    यह एक स्क्रीनराइडर का उपयोग करके किसी को एक बड़ा नुकसान पैदा करता है ( कृपया अपनी भविष्य की परियोजनाओं में दृष्टिबाधितों को याद रखें )

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


क्या काम कर सकते हैं:

  • के चतुर उपयोग pseudo-elementsमेंCSS

  • base64एन्कोडिंग का उपयोग करने वाले समाधान

  • ईमेल पते को तोड़ना और दस्तावेज़ में भागों को फैलाना और फिर उन्हें एक साथ एक मोडल में डालना जब उपयोगकर्ता एक बटन क्लिक करता है (इसमें संभवतः कई CSSकक्षाएं और उपयोग शामिल होंगे anchor tags)

  • के htmlमाध्यम से विशेषताओं को बदलनाCSS

    @MortezaAsadi ने नीचे टिप्पणी में संभावना को इनायत किया। यह पूर्ण का लिंक है - लेख 2012 से है:

    क्या होगा अगर हम CSS को Alter HTML Attributes में इस्तेमाल कर सकते हैं?

  • अन्य रचनात्मक समाधान जो मेरे ज्ञान के दायरे से परे हैं।


इसी तरह के सवाल / फिक्स

(जो मल्लर द्वारा सुझाया गया यह एक महान फिक्स है, यह अच्छी तरह से काम करता है लेकिन यह स्क्रिप्ट पर आधारित है । यहां यह कैसा दिखता है;

<SCRIPT TYPE="text/javascript">

  emailE = 'emailserver.com'

  emailE = ('yourname' + '@' + emailE)

  document.write('<A href="mailto:' + emailE + '">' + emailE + '</a>')

</script>



<NOSCRIPT>

  Email address protected by JavaScript

</NOSCRIPT>

  • एक php केवल ईमेल पते obfuscator फ़ंक्शन की तलाश है

    (ए चालाक समाधान दोनों का उपयोग कर PHPऔर CSSपहले करने के लिए रिवर्स का उपयोग कर ईमेल पीएचपी तो यह रिवर्स वापस सीएसएस) के साथ एक बहुत ही वादा कर समाधान है कि अच्छा काम करता है! लेकिन इसे हल करना बहुत आसान है

  • क्या यह इन दिनों वेब पर ईमेल पते को बाधित करने के लायक है?

    (जावास्क्रिप्ट फिक्स)

  • वेबसाइट पर ई-मेल पते को बाधित करने का सबसे अच्छा तरीका?

    चयनित उत्तर काम करता है । यह वास्तव में वास्तव में अच्छी तरह से काम करता है। इसमें ईमेल को इनकोडिंग के रूप में शामिल किया गया है html entities। क्या इसे सुधारा जा सकता है?

    यहाँ यह कैसा दिखता है;

    <A HREF="mailto:
    
    &#121;&#111;&#117;&#114;&#110;&#097;&#109;&#101;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#099;&#111;&#109;">
    
    &#121;&#111;&#117;&#114;&#110;&#097;&#109;&#101;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#099;&#111;&#109;
    
    </A>

  • क्या ई-मेल एड्रेस ऑब्सफिकेशन वास्तव में काम करता है?

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

    ऐसा लगता है कि ईमेल पते में हेरफेर CSSकरने से यह rtlकाम करता है। यह वही विधि है जिसका उपयोग मैंने इस खंड में जुड़े पहले प्रश्न में किया था।

    मैं अनिश्चित हूं कि परिणामों में mailto:कार्यक्षमता को जोड़ने वाले प्रभावों का परिणामों पर क्या प्रभाव पड़ेगा।

  • SO पर कई अन्य प्रश्न भी हैं जिनके सभी उत्तर समान हैं। मुझे ऐसा कुछ भी नहीं मिला है जो मेरे वांछित प्रभाव पर फिट बैठता हो


प्रश्न:

क्या दो या दो से अधिक फ़िक्सेस (या यहां तक ​​कि नई फ़िक्सेस जोड़कर) जोड़कर उपरोक्त ईमेल विधियाँ विधियों की दक्षता (अर्थात जितना संभव हो उतना कम स्पैम) बढ़ाना संभव होगा :

ए- mailto:कार्यक्षमता बनाए रखना ; तथा

बी- स्क्रीनिंग पाठकों का समर्थन करना


संपादित करें:

नीचे दिए गए कई उत्तर और टिप्पणियां किसी प्रकार के बिना ऐसा करने की असंभवता को इंगित करते हुए एक बहुत अच्छा प्रश्न हैंjs

प्रश्न जो पूछा गया है / निहित है:

उपयोग क्यों नहीं js?

जवाब है कि मुझे इससे एलर्जी है js

हालांकि एक तरफ मजाक करना,

मैंने यह प्रश्न पूछे जाने के तीन मुख्य कारण हैं:

  • संपर्क पते एक ईमेल पते प्रदान करने के प्रतिस्थापन के रूप में अधिक से अधिक स्वीकार किए जाते हैं - जो उन्हें नहीं करना चाहिए।

  • यदि यह बिना स्क्रिप्टिंग के किया जा सकता है तो इसे बिना स्क्रिप्टिंग के किया जाना चाहिए

  • जिज्ञासा: (जैसा कि मैं वास्तव में jsवर्तमान में एक सुधार का उपयोग कर रहा हूं) मैं यह देखना चाहता था कि क्या इस मामले पर चर्चा करने से यह बेहतर तरीके से हो सकेगा।


21
मुझे लगता है कि यदि आप mailto:कार्यक्षमता बनाए रखना चाहते हैं और आप जावास्क्रिप्ट का उपयोग करने के लिए तैयार नहीं हैं, तो यह संभव नहीं है।
xrisk

क्या आप CSS को Alter HTML Attributes में Use करना चाहते हैं?
मोर्तेज़ा असदी

@ रिशव मैं आपसे सहमत हूं कि जेएस का उपयोग किए बिना वांछित प्रभाव प्राप्त करने के लिए यह काफी मुश्किल हो सकता है; हालाँकि, मैं कहूँगा कि विधियों का अस्तित्व जहाँ मैंने प्रकाश डाला था जहाँ आप ईमेल को एनकोड करते हैं क्योंकि html संस्थाओं की असंभावना को नकारा जा सकता है।

@MortezaAsadi क्या आप एक उदाहरण के रूप में पोस्ट कर सकते हैं जिसे आपने उत्तर के रूप में संदर्भित किया है?

: @ i-प्यार-सीएसएस यह आलेख एक बार देख ले andydavies.me/blog/2012/08/13/...
मोर्टेज़ा असादी

जवाबों:


35

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

इसके अलावा, mailtoविशेषता का बिंदु यह है कि वेब पर ईमेल पते कैसे किए जाएं। यह पूछना कि क्या दूसरा तरीका है, यह पूछना है कि क्या दूसरा मानक है।

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

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

<a href="mailto:no-one@no-where.com?subject=Something to filter on">Email me</a>

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


8
यह रोबोटों से लड़ता है, लेकिन एक दिन हम युद्ध जीतेंगे ... या विलुप्त हो
जाएंगे

क्षमा करें, लेकिन जब रोबोट काम करते हैं, तो यह सभी तार के साथ मिल जाता है @, और अगला इस पाठ को विभाजित करता है ?और जांचता है कि क्या पहला भाग regex के साथ मेल खा रहा है। अंत में 2 संस्करण बचाएं
एड्रियन बोब्रोस्की

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

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

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

29

ईमेल बॉट्स को हराना एक कठिन है। आप विकिपीडिया पर ईमेल एड्रेस हार्वेस्टिंग काउंटरमेशर्स सेक्शन की जाँच कर सकते हैं ।

मेरी बैक-स्टोरी यह है कि मैंने एक सर्च बॉट लिखा है। कई साल पहले यह शुरुआती दौर में 105,000+ यूआरएल क्रॉल करता था। मैं क्या कर रही से सीखा है से है कि वेब रेंगने बॉट सचमुच देखते सब कुछ पाठ है, इसमें वे एक वेब पेज पर दिखाई देता है। बॉट छवियों के अलावा सब कुछ पढ़ते हैं।

स्पैम को इन कारणों से कोड के माध्यम से आसानी से रोका नहीं जा सकता है:

  1. मेल का उपयोग करते समय सीएसएस और जेएस अप्रासंगिक हैं: टैग। बॉट विशेष रूप से उस "mailto:" कीवर्ड के लिए HTML पृष्ठों को देखते हैं। उस बृहदान्त्र से अगले एकल उद्धरण या दोहरे उद्धरण (जो भी पहले आता है) के लिए सब कुछ एक ईमेल पते के रूप में देखा जाता है। HTML इकाई ईमेल पते - ऊपर दिए गए उदाहरण की तरह - रिवर्स ASCII विधि / फ़ंक्शन का उपयोग करके जल्दी से अनुवाद किया जा सकता है। ऊपर दिए गए जावास्क्रिप्ट कोड स्निपेट को चलाने से, जल्दी से स्ट्रिंग शुरू हो जाती है जो इसके साथ शुरू होती है: & # 121; & # 111; & # 117; & # 114; ... में ... "yourname@domain.com"। (मेरे खोज बॉट ने मेल के साथ hrefs दूर फेंक दिया: ईमेल पते, जैसा कि मुझे वेब पेजों के लिए URL चाहिए था और ईमेल पते नहीं थे।)

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

  3. बीओटी लेखक बॉट लिख सकते हैं, जो ईमेल पते के सभी ज्ञात भिन्नताएं उत्पन्न करते हैं ... बिना रेंगने वाले पृष्ठ और कभी भी किसी स्टार्टर ईमेल पते का उपयोग नहीं करते हैं। हालांकि ऐसा करना संभव नहीं है, लेकिन यह आज के हाई-कोर काउंट सीपीयू (जो हाइपर-थ्रेडेड और रन 4+ गीगाहर्ट्ज पर हैं) के साथ समझ से बाहर नहीं है, साथ ही वितरित क्लाउड-आधारित कंप्यूटिंग और यहां तक ​​कि सुपर कंप्यूटर का उपयोग करने की उपलब्धता भी है। यह अनुमान योग्य है कि अब कोई भी किसी के ईमेल पते को जाने बिना, सभी को स्पैम करने के लिए एक बॉट-फ़ार्म बना सकता है। 20 साल पहले, यह समझ से बाहर था।

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

  5. Mailto: कीवर्ड इस IETF RFC का हिस्सा है , जहाँ ब्राउज़र डिफ़ॉल्ट ईमेल क्लाइंट को स्वचालित रूप से लॉन्च करने के लिए बनाए जाते हैं, उनमें उस कीवर्ड के लिंक से। जब यह होता है, तो उस एप्लिकेशन लॉन्चिंग प्रक्रिया को बाधित करने के लिए जावास्क्रिप्ट का उपयोग किया जाता है।

मुझे नहीं लगता कि ईमेल सर्वर पर फिल्टर का उपयोग किए बिना और संभवतः छवियों का उपयोग करते हुए, पारंपरिक ईमेल सर्वरों का उपयोग करते हुए 100% स्पैम को रोकना संभव है।

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

यदि आप कड़ाई से पारंपरिक ईमेल के साथ छड़ी करने की योजना बना रहे हैं, तो आपका सबसे अच्छा दांव किसी कंपनी के ईमेल सर्वर पर अपाचे के स्पामसैसिन जैसा कुछ चलाना हो सकता है ।

आप अपने वेब पेज से ईमेल पतों को चमकाने के लिए ईमेल हार्वेस्टर के लिए कठिन बनाने के लिए, ऊपर बताई गई कई रणनीतियों को संयोजित करने का प्रयास कर सकते हैं। वे 100% स्पैम, 100% समय को नहीं रोकेंगे ... जबकि 100% स्क्रीन पाठकों को अंधे आगंतुकों के लिए काम करने की अनुमति देगा।

आपने पारंपरिक ईमेल में क्या गलत है, इस बारे में अच्छी शुरुआत की है! उसके लिए आप के लिए यश!

एक अच्छा स्क्रीन रीडर स्वतंत्रता वैज्ञानिक से JAWS है । मैंने इसका उपयोग करने से पहले यह देखा है कि मेरे वेबपेजों को नेत्रहीन उपयोगकर्ताओं द्वारा कैसे पढ़ा जाता है। (यदि आप दोनों क्रियाओं को पढ़ते हुए पुरुष आवाज सुनते हैं [जैसे लिंक पर क्लिक करना] और पाठ, महिला के लिए 1 आवाज बदलने का प्रयास करें ताकि 1 आवाज क्रिया पढ़े और दूसरा पाठ पढ़े। इससे वेब पेज कैसे पढ़ा जाता है यह सुनना आसान हो जाता है। नेत्रहीन

आपके ईमेल पते के साथ शुभकामनाएँ !


2
बहुत गहन उत्तर के लिए आपका बहुत-बहुत धन्यवाद। आपने जानकारी का खजाना साझा किया है। जानकारी इस मुद्दे पर आगे और बेहतर करने में मदद करती है और अंततः इसे ठीक करने का एक तरीका निकाल सकती है।

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

26

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

<a
  href="#"
  data-contact="bGUtZW1haWxAdGhlLWRvbWFpbi5jb20="
  data-subj="QW4gQW1hemluZyBTdWJqZWN0"
  onfocus="this.href = 'mailto:' + atob(this.dataset.contact) + '?subject=' + atob(this.dataset.subj || '')"
  >
  Send an email
</a>

data-contactबेस 64 इनकोडेड ईमेल एड्रेस है। और, data-subjएक वैकल्पिक आधार 64 एनकोडेड विषय है।

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

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

  • HTML संस्थाओं को केवल परिवर्तित करने की आवश्यकता है (और यह पता लगाना सरल है)
  • दस्तावेज़ iframe द्वारा संदर्भित बस का पालन किया जा सकता है
  • सर्वर पुनर्निर्देशित बस का पालन किया जा सकता है, साथ ही

ऊपर उल्लिखित दृष्टिकोण के साथ, एक data-contactविशेषता में एक बेस 64 एन्कोडेड ईमेल पते का उपयोग बहुत "एक-बंद" है - जब तक कि स्क्रैपर को विशेष रूप से आपकी साइट के लिए डिज़ाइन नहीं किया गया है, तब तक यह काम करना चाहिए।


मुझे यह पसंद है। यदि उनके पास js सक्षम नहीं है तो वे किसी और को मेल कर सकते हैं।
माइकल रोजर्स

15

उपकरण के बिना @ + संपादन का सरल + बहुत

<a href="mailto:user@domain@@com"
   onmouseover="this.href=this.href.replace('@@','.')">
   Send email
</a>


मुझे यह पसंद है, साफ सुथरा छोटा टुकड़ा!
मार्लोन क्रिएटिव

2
इस छोटी सी चीज़ से प्यार करें, @AndyHolmes मैंने onclick = "..." का उपयोग किया, इसके लिए मोबाइल पर काम करता है (Android / mobile chrome पर परीक्षण किया गया है), dunno अगर यह अधिक बेकार हो जाता है तो, क्योंकि बॉट शायद ऑनक्लिक के लिए अधिक जाँच करते हैं एक onmouseover की तुलना में।
गुलेल

2
@ ओगलन ऑनक्लिक मोबाइल पर काम करेगा, ऑनमाउवरओवर नहीं होगा क्योंकि मोबाइल में एक मंडराना स्थिति नहीं है
एंडी होम्स

7

क्या आपने Google के पुनरावृत्ति मेलहाइड का उपयोग करने पर विचार किया है? https://www.google.com/recaptcha/admin#mailhide

विचार यह है कि जब कोई उपयोगकर्ता चेकबॉक्स पर क्लिक करता है ( नीचे nocaptcha देखें ), तो पूर्ण ई-मेल पता प्रदर्शित होता है।

जबकि पुनरावृत्ति पारंपरिक रूप से न केवल स्क्रीन पाठकों के लिए, बल्कि मनुष्यों के लिए भी कठिन है, Google के nocaptcha recaptcha की भूमिका के साथ, जिसे आप यहां पढ़ सकते हैं क्योंकि वे पहुंच परीक्षणों से संबंधित हैं। यह स्क्रीन पाठकों के संबंध में वादा दिखाता है क्योंकि यह उनके दृष्टिकोण से एक पारंपरिक चेकबॉक्स के रूप में प्रस्तुत करता है। Nocaptcha reCAPTCHA

उदाहरण # 1 - सुरक्षित नहीं है लेकिन विचार के आसान चित्रण के लिए

यहां मेलहेड का उपयोग किए बिना एक उदाहरण के रूप में कुछ कोड दिया गया है, लेकिन खुद को पुनः उपयोग करके कुछ लागू करना है: https://jsfiddle.net/43fad8pf/36/

<div class="container">
    <div id="recaptcha"></div>
</div>
<div id="email">
    Verify captcha to get e-mail
</div>

function createRecaptcha() {
    grecaptcha.render("recaptcha", {sitekey: "6LcgSAMTAAAAACc2C7rc6HB9ZmEX4SyB0bbAJvTG", theme: "light", callback: showEmail});
}
 createRecaptcha();

function showEmail() {
    // ideally you would do server side verification of the captcha and then the server would return the e-mail
  document.getElementById("email").innerHTML = "email@something.com";
}

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

उदाहरण # 2 - सर्वर साइड सत्यापन और ई-मेल की वापसी

यदि हम इस तरह से एक उदाहरण का उपयोग करते हैं, तो हमें अतिरिक्त सुरक्षा मिलती है: https://designocracy.com/recaptcha-use-ajax-php-and-jquery/

function showEmail() {
    /* Check if the captcha is complete */
    if ($("#g-recaptcha-response").val()) {
        $.ajax({
            type: ‘POST’,
            url: "verify.php", // The file we’re making the request to
            dataType: ‘html’,
            async: true,
            data: {
                captchaResponse: $("#g-recaptcha-response").val() // The generated response from the widget sent as a POST parameter
        },
        success: function (data) {
            alert("everything looks ok. Here is where we would take 'data' which contains the e-mail and put it somewhere in the document");
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("You’re a bot");
        }
    });
} else {
    alert("Please fill the captcha!");
}
});

जहाँ सत्यापित है।

$captcha = filter_input(INPUT_POST, ‘captchaResponse’); // get the captchaResponse parameter sent from our ajax

/* Check if captcha is filled */
if (!$captcha) {
    http_response_code(401); // Return error code if there is no captcha
}
$response =     file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR-SECRET-KEY-HERE&amp;amp;response=" . $captcha);
if ($response . success == false) {
echo ‘SPAM’;
http_response_code(401); // It’s SPAM! RETURN SOME KIND OF ERROR
} else {
// Everything is ok, should output this in json or something better, but this is an example
    echo 'email@something.com'; 
}

4

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

यदि आप सोचते हैं कि अन्य प्रकार के संसाधन क्या हैं, तो बाहरी दस्तावेज़ भी हैं (यानी iframes का उपयोग करके HTML दस्तावेज़)। लगभग कोई भी स्क्रैपर्स iframes की सामग्री को डाउनलोड करने में परेशान नहीं करेगा। इसलिए, आप बस कर सकते हैं:

index.html:

<iframe src="frame.html" style="height: 1em; width: 100%; border: 0;"></iframe>

Frame.html:

My email is <a href="mailto:me@example.com" target="_top">me@example.com</a>

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


3
मैं आपके 1 पैराग्राफ पर आपसे सहमत हूं, लेकिन आप iframe कंटेंट के बारे में 2nd पैराग्राफ गलत हैं। बॉट्स ज्यादा से ज्यादा HTML कंटेंट चाहते हैं। वे iframes की सामग्री को डाउनलोड करेंगे, क्योंकि वे लिंक, टेक्स्ट आदि की तलाश कर रहे हैं .... बॉट्स को इस बात की परवाह नहीं है कि यह आइफ्रेम टैग है या नहीं। वे बस पृष्ठों को क्रॉल करेंगे। यदि URL एक iframe या जावास्क्रिप्ट टैग के src अनुभाग में है, तो इसे क्रॉल किया जाएगा।
क्लॉम्ब डेस

3

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

एक सर्वर-साइड समाधान <a>एक नए टैब के लिए एक लिंक बना सकता है , जो बस वांछित को पुनर्निर्देशित करता है mailto:

अब के लिए मेरे सभी विचार हैं। आशा है कि इससे सहायता मिलेगी।


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

यह सच है। अच्छी सोच
पाब्लो क्वित्का

2

अपनी सभी आवश्यकताओं को पूरा करने के लिए संक्षिप्त उत्तर यह है कि यह असंभव है

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


वे ईमेल पर कुछ प्रकार के एन्क्रिप्शन का उपयोग कर सकते हैं, और इसे गतिशील रूप से जावास्क्रिप्ट में डिक्रिप्ट कर सकते हैं। यहां तक ​​कि एक साधारण +1 साइबर ट्रिक भी करेगा। TheoryicLly ब्रेक करने योग्य है लेकिन कोई बॉट इसे नहीं तोड़ता है।
जॉन ktejik

0

PHP समाधान

function printEmail($email){
    $email = '<a href="mailto:'.$email.'">'.$email.'</a>';
    $a = str_split($email);
    return "<script>document.write('".implode("'+'",$a)."');</script>";
}

उपयोग

echo printEmail('test@gmail.com');

परिणाम

<script>document.write('<'+'a'+' '+'h'+'r'+'e'+'f'+'='+'"'+'m'+'a'+'i'+'l'+'t'+'o'+':'+'t'+'e'+'s'+'t'+'@'+'g'+'m'+'a'+'i'+'l'+'.'+'c'+'o'+'m'+'"'+'>'+'t'+'e'+'s'+'t'+'@'+'g'+'m'+'a'+'i'+'l'+'.'+'c'+'o'+'m'+'<'+'/'+'a'+'>');</script>

पुनश्च आवश्यकता: उपयोगकर्ता में जावास्क्रिप्ट सक्षम होना चाहिए


-3

एक विधि जो मुझे प्रभावी लगी, वह नीचे जैसे सीएसएस के साथ प्रयोग कर रही है:

<a href="mailto:myemail@ignore-domain.com">myemail@<span style="display:none;">ignore-</span>domain.com

और फिर रेगेक्स के साथ विशेषता ignoreme-से शब्द को हटाने के लिए एक जावास्क्रिप्ट लिखें href="mailto:..."। यह बॉट से ईमेल छिपाएगा क्योंकि यह ignore-वास्तविक डोमेन से पहले शब्द को जोड़ देगा और यह स्क्रीन रीडर पर काम करेगा और जब उपयोगकर्ता लिंक पर क्लिक करेगा तो js फ़ंक्शन विशेषता ignore-से शब्द को हटा देगा hrefताकि यह वास्तविक ईमेल खोल देगा।

यह विधि आज तक मेरे लिए बहुत प्रभावी रूप से काम कर रही है। आप इस पर और अधिक पढ़ सकते हैं - http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/


क्षमा करें, लेकिन यह तरीका एक अच्छा नहीं है, क्योंकि यदि सभी अच्छे बॉट लंगर पाठ और ए के भीतर नहीं दिखते हैं a href। का उपयोग display:noneकर कटौती करने के लिए नहीं जा रहा है।
साइमन हेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.