جعل عناوين البريد الإلكتروني الآمن من السير على صفحة الويب ؟

StackOverflow https://stackoverflow.com/questions/163628

  •  03-07-2019
  •  | 
  •  

سؤال

عند وضع عناوين البريد الإلكتروني على صفحة ويب لا مكان لهم كما نص مثل هذا:

joe.somebody@company.com

أو استخدام خدعة ذكية في محاولة خداع عنوان البريد الإلكتروني حصاده السير?على سبيل المثال:

HTML أحرف الهروب:

joe.somebody@company.com

جافا سكريبت ديكريبتر:

function XOR_Crypt(EmailAddress)
{
    Result = new String();
    for (var i = 0; i < EmailAddress.length; i++)
    {
        Result += String.fromCharCode(EmailAddress.charCodeAt(i) ^ 128);
    }
    document.write(Result);
}

XOR_Crypt("êïå®óïíåâïäùÀãïíðáîù®ãïí");

الإنسان فك:

joe.somebodyNOSPAM@company.com

joe.somebody AT company.com

ماذا كنت تستخدم أو لا حتى عناء ؟

هل كانت مفيدة؟

المحلول

أنا عموما لا تهتم.اعتدت أن أكون على قائمة البريدية التي حصلت عدة آلاف من مضرة كل يوم.فلتر الرسائل غير المرغوب فيها (spamassassin) السماح ربما 1 أو 2 يوميا من خلال.مع مرشحات هذا جيد, لماذا تجعل من الصعب على الناس المشروعة في الاتصال ؟

نصائح أخرى

يخترع الخاصة بك مجنون عنوان البريد الإلكتروني التشويش المخطط.لا يهم ما هو عليه حقا ، طالما انها ليست مشابهة جدا إلى أي من عادة الأساليب المعروفة.

المشكلة هي أن هناك في الحقيقة ليست حلا جيدا على هذا, أنهم جميعا إما بسيطة نسبيا لتجاوز, أو بالأحرى مزعجة للمستخدم.إذا في أي طريقة واحدة يصبح انتشارا ، سوف تجد طريقة للتغلب على ذلك.

لذا بدلا من أن تبحث عن واحد صحيح عنوان البريد الإلكتروني تقنية التشويش, الخروج مع الخاصة بك.الاعتماد على حقيقة أن هذه بوت الكتاب لا تهتم بما فيه الكفاية حول موقع الويب الخاص بك إلى الجلوس حول كتابة شيء لتجاوز الخاص بك قليلا مجنون تقديم النص-مع-css-و-العنصر-الحدود أو الأغرب بسهولة متصدع جافا سكريبت تشفير.لا يهم إذا كانت تافهة, لا أحد يكلف نفسه عناء محاولة تجاوز ذلك فقط حتى يتمكنوا من البريد المزعج.

لقد كتب التشفير (المصدر) يستخدم جميع أنواع تحليل الحيل التي يمكن أن أفكر (أنواع مختلفة من الكيانات HTML, ترميز URL, تعليقات, متعدد الصفات ، لينة الواصلات غير واضحة هيكل mailto:URL, الخ)

لا تتوقف جميع حاصدات, ولكن OTOH تماما متوافقة مع المعايير شفافة للمستخدمين.

آخر IMHO نهج جيد (والتي يمكنك استخدامها بالإضافة إلى صعبة ترميز) على طول خطوط:

<a href="mailto:userhatestogetspam@example.com" 
   onclick="this.href=this.href.replace(/hatestogetspam/,'')">

يمكنك حماية عنوان البريد الإلكتروني الخاص بك مع اختبار reCAPTCHA ، فهي تقدم خدمة مجانية لذلك يجب على الناس أن enter CAPTCHA (مؤتمتة بالكامل العامة لاختبار تورينج اقول أجهزة الكمبيوتر والإنسان) لمشاهدة البريد الإلكتروني الخاص بك: https://www.google.com/recaptcha/admin#mailhide

لا تهتم-هو مكافحة البريد المزعج الحرب على المستوى الخاطئ.لا سيما مواقع ويب الشركة وأعتقد أنه يجعل الأمور تبدو غير مهني جدا إذا كان لديك أي شيء آخر غير مستقيم النص على الصفحة مع ميلتو الارتباط التشعبي.

هناك الكثير من البريد المزعج تحلق حولها التي تحتاج تصفية جيدة على أي حال و أي بوت سوف ينتهي فهم كل الحيل الشائعة على أي حال.

HTML:

<a href="#" class="--mailto--john--domain--com-- other classes goes here" />

جافا سكريبت باستخدام مسج:

// match all a-elements with "--mailto--" somehere in the class property
$("a[class*='--mailto--']").each(function ()
{
    /*
    for each of those elements use a regular expression to pull
    out the data you need to construct a valid e-mail adress
    */
    var validEmailAdress = this.className.match();

    $(this).click(function ()
    {
        window.location = validEmailAdress;
    });
});

لا تهتم.عليك فقط لإزعاج المستخدمين متطورة و تخلط ساذج المستخدمين.كما قال آخرون ، Gmail يوفر فعالة جدا مرشحات البريد المزعج شخصي/صغير مجال الأعمال التجارية, والشركات الفلاتر عموما هي أيضا جيدة جدا.

A رد لي على سؤال مماثل:

يمكنني استخدام بسيط جدا مزيج من CSS و jQuery الذي يعرض عنوان البريد الإلكتروني بشكل صحيح للمستخدم ويعمل أيضا عندما المرساة النقر:

HTML:

<a href="mailto:me@example.spam" id="lnkMail">moc.elpmaxe@em</a>

CSS:

#lnkMail {
  unicode-bidi: bidi-override;
  direction: rtl;
}

مسج:

$('#lnkMail').hover(function(){
  // here you can use whatever replace you want
  var newHref = $(this).attr('href').replace('spam', 'com');
  $(this).attr('href', newHref);
});

هنا هو العمل على سبيل المثال.

الوحيد الأسلم هو بالطبع عدم وضع عنوان البريد الإلكتروني على صفحة ويب في المقام الأول.

استخدام نموذج الاتصال بدلا من ذلك.وضع كل من عناوين البريد الإلكتروني الخاص بك إلى قاعدة البيانات و إنشاء نموذج HTML (الموضوع ، الجسم،...) التي تقدم محتويات البريد الإلكتروني الذي يقوم المستخدم بتعبئة النموذج (جنبا إلى جنب مع هوية أو اسم المستخدم الى البحث عن عنوان البريد الإلكتروني لهذا الشخص في قاعدة البيانات الخاصة بك) إلى البرنامج النصي من جانب الخادم ذلك ثم يرسل بريد إلكتروني إلى الشخص المحدد.في أي وقت من الأوقات هو عنوان البريد الإلكتروني المكشوفة.ربما كنت سوف ترغب في تنفيذ بعض شكل CAPTCHA لردع المتطفلين كذلك.

محاولة البريد الإلكتروني رمز مولد.http://services.nexodyne.com/email/

بالطبع لا تزال هناك بعض OCR السير التي قد تحصل هذا..

لقد جعل لي whateverDOC@whatever.com ثم بجانب ذلك أكتب "إزالة حروف"

جوجل وهو مجاني رهيبة فلتر البريد المزعج.

إذا كنت لا ترغب في استخدام Gmail مباشرة يمكنك إرسال البريد الإلكتروني إلى gmail و استخدام جوجل إعادة توجيه إلى إرساله مرة أخرى بعد أن ذهب من خلال فلتر البريد المزعج.

في الوضع أكثر تعقيدا ، عندما كنت في حاجة لإظهار @business.com العنوان الذي يمكن أن تظهر public@business.com و كل هذا توجيه البريد إلى حساب gmail من ثم إلى الأمام مرة أخرى إلى real@business.com

اعتقد انها ليست مباشرة حل السؤال ولكن قد تساعد.Gmail مجانا وجود مثل هذه جيدة فلتر البريد المزعج يجعل استخدامه حكيم جدا IMHO.

أنا تتلقى حوالي 100 المزعج يوميا في حساب gmail ولكن لا أستطيع أن أتذكر آخر مرة حصلت على واحد منهم إلى البريد الوارد.

والحاصل استخدام فلتر البريد المزعج سواء جوجل أو آخر.وجود المستخدم إعادة كتابة أو تعديل عنوان البريد الإلكتروني الذي يظهر مثل باستخدام إدارة الحقوق الرقمية من حماية ضد القرصنة.وضع العبء على "جيد" الرجل لا يجب أن يكون وسيلة للذهاب عن القيام بأي شيء.:)

على عنوان البريد الإلكتروني الخاص بك أنصح لا يدعو للقلق بشأن ذلك كثيرا.إذا كان لديك حاجة إلى عنوان البريد الإلكتروني الخاص بك متاحة الآلاف من المستخدمين ثم أود أن أوصي إما باستخدام عنوان gmail (الفانيليا أو عبر تطبيقات google) أو باستخدام عالية الجودة تصفية البريد المزعج.

ومع ذلك ، عند عرض المستخدمين الآخرين عناوين البريد الإلكتروني على موقع الويب الخاص بك أعتقد أن بعض مستوى من العناية الواجبة المطلوبة.لحسن الحظ, مدون اسمه سيلفان Mühlemann له فعلت كل العمل الصعب بالنسبة لك.انه اختبار من أساليب مختلفة من التشويش على مدى فترة من 1.5 سنة و تحديد أفضل منها ، ومعظمهم من إشراك css أو جافا سكريبت الحيل التي تسمح عنوان عرضها بشكل صحيح في متصفح ولكن سوف تخلط الآلي والمهمل.

أخرى وربما فريدة من نوعها ، تقنية قد يكون استخدام صور متعددة و عدد قليل من النص العادي رسائل إلى عرض عنوان.التي قد تخلط بين السير.

السيناريو الذي يحفظ عناوين البريد الإلكتروني إلى ملفات png سيكون حلا آمنا ( إذا كان لديك مساحة كافية و يسمح لك تضمين الصور في الصفحة الخاصة بك )

هذا هو ما نستخدمه (VB.NET):

Dim rxEmailLink As New Regex("<a\b[^>]*mailto:\b[^>]*>(.*?)</a>")
Dim m As Match = rxEmailLink.Match(Html)
While m.Success
    Dim strEntireLinkOrig As String = m.Value
    Dim strEntireLink As String = strEntireLinkOrig
    strEntireLink = strEntireLink.Replace("'", """") ' replace any single quotes with double quotes to make sure the javascript is well formed
    Dim rxLink As New Regex("(<a\b[^>]*mailto:)([\w.\-_^@]*@[\w.\-_^@]*)(\b[^>]*?)>(.*?)</a>")
    Dim rxLinkMatch As Match = rxLink.Match(strEntireLink)
    Dim strReplace As String = String.Format("<script language=""JavaScript"">document.write('{0}{1}{2}>{3}</a>');</script>", _
                RandomlyChopStringJS(rxLinkMatch.Groups(1).ToString), _
                ConvertToAsciiHex(rxLinkMatch.Groups(2).ToString), _
                rxLinkMatch.Groups(3), _
                ConvertToHtmlEntites(rxLinkMatch.Groups(4).ToString))
    Result = Result.Replace(strEntireLinkOrig, strReplace)
    m = m.NextMatch()
End While

و

    Public Function RandomlyChopStringJS(ByVal s As String) As String
        Dim intChop As Integer = Int(6 * Rnd()) + 1
        Dim intCount As Integer = 0
        RandomlyChopStringJS = ""
        If Not s Is Nothing AndAlso Len(s) > 0 Then
            For Each c As Char In s.ToCharArray()
                If intCount = intChop Then
                    RandomlyChopStringJS &= "'+'"
                    intChop = Int(6 * Rnd()) + 1
                    intCount = 0
                End If
                RandomlyChopStringJS &= c
                intCount += 1
            Next
        End If
    End Function

لقد تجاوز تجعل وتشغيل الصادرة HTML من خلال هذا قبل أن يخرج من الباب.وهذا يجعل عناوين البريد الإلكتروني التي تجعل عادة إلى المتصفح ، ولكن تبدو مثل هذا في المصدر:

<script language="JavaScript">document.write('<a '+'clas'+'s='+'"Mail'+'Link'+'" hr'+'ef'+'="ma'+'ilto:%69%6E%66%6F%40%62%69%63%75%73%61%2E%6F%72%67">&#105;&#110;&#102;&#111;&#64;&#98;&#105;&#99;&#117;&#115;&#97;&#46;&#111;&#114;&#103;</a>');</script>

ومن الواضح أن ليس مضمونا ، ولكن نأمل أن التخفيضات على كمية معينة من الحصاد دون جعل الأمور صعبة بالنسبة للزائر.

ذلك يعتمد على بالضبط ما هي احتياجاتك.معظم المواقع التي أعمل, لقد وجدت أنه أكثر بكثير من المفيد وضعها في "الاتصال بي/بنا" النموذج الذي يرسل البريد الإلكتروني من النظام لمن يحتاج إلى الاتصال.وأنا أعلم أن هذا ليس الحل الذي كنت تسعى ولكنها لا تحمي تماما ضد الحصاد و حتى الآن أنا لم أر الرسائل غير المرغوب فيها من خلال شكل مثل هذا.سوف يحدث ولكن من النادر جدا وأنت لم تحصد.

هذا يتيح لك أيضا فرصة تسجيل الرسائل قبل إرسالها مما يتيح لك مستوى إضافي من الحماية ضد فقدان الاتصال إذا كنت ترغب في ذلك.

المتطفلين الخاصة بك جافا سكريبت و CSS محركات مرور الوقت, لذلك أعتقد أنه لا يجب أن ننظر في هذا الاتجاه.

الخيار 1 :تقسيم عنوان البريد الإلكتروني إلى عدة أجزاء و إنشاء صفيف في جافا سكريبت من هذه الأجزاء.التالي الانضمام إلى هذه الأجزاء بالترتيب الصحيح و استخدام .innerHTML الملكية لإضافة عنوان بريد إلكتروني إلى صفحة ويب.

 <span id="email">  </span>   // blank tag

 <script>
 var parts = ["info", "XXXXabc", "com", "&#46;", "&#64;"];
 var email = parts[0] + parts[4] + parts[1] + parts[3] + parts[2];
 document.getElementById("email").innerHTML=email; 
 </script>

الخيار 2 :استخدام الصورة بدلا من النص البريد الإلكتروني

صورة الخالق الموقع من النص : http://www.chxo.com/labelgen/

الخيار 3 :يمكننا استخدامها في بدلا من "@" و " دوت "بدلا من" ."

أنا.هـ :

 info(AT)XXXabc(DOT)com 

أنا فقط الأكواد التالية.لا أعرف إذا كان جيدا ولكن من الأفضل فقط ثم كتابة البريد الإلكتروني في نص عادي.العديد من الروبوتات سوف ينخدع ولكن ليس كل منهم.

<script type="text/javascript">
    $(function () {
        setTimeout(function () {
            var m = ['com', '.', 'domain', '@', 'info', ':', 'mailto'].reverse().join('');

            /* Set the contact email url for each "contact us" links.*/
            $('.contactUsLink').prop("href", m);
        }, 200);
    });
</script>

إذا كان الروبوت حل هذا ثم ليس هناك حاجة لإضافة المزيد من "المنطق البسيط" رمز مثل "if (1 == 1 ?'@' :")" أو إضافة عناصر مجموعة في أمر آخر منذ الروبوت فقط التقييمات رمز على أي حال.

الخط ممتاز يعمل!

<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">

<p>myemail<i class="fa fa-at" aria-hidden="true"></i>mydomain.com</p>

http://fontawesome.io/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top