Эффективный способ скрыть электронную почту от спам-ботов - PullRequest
176 голосов
/ 27 января 2009

На своей домашней странице я использую этот метод, чтобы скрыть свою электронную почту от спам-ботов:

<a href="admin [at] example.com"
   rel="nofollow"
   onclick="this.href='mailto:' + 'admin' + '@' + 'example.com'">Contact me</a>

Что вы думаете об этом? Это эффективно? Какие еще методы вы знаете или используете?

Ответы [ 32 ]

1 голос
/ 06 марта 2014

Вариант 1. Разделите адрес электронной почты на несколько частей и создайте массив в JavaScript из этих частей. Затем соедините эти части в правильном порядке и используйте свойство .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. Мы можем использовать AT вместо "@" и DOT вместо "."

т.е.:

 info(AT)XXXabc(DOT)com 
1 голос
/ 14 октября 2013

И моя функция. Я создал его, глядя на ответы, размещенные в этой теме.

 function antiboteEmail($email)
 {
        $html = '';

        $email = strrev($email);
        $randId = rand(1, 500);

        $html .= '<span id="addr-'.$randId.'" class="addr">[turn javascript on to see the e-mail]</span>';
        $html .= <<<EOD
                <script>
                $(document).ready(function(){

                    var addr = "$email";
                    addr = addr.split("").reverse().join("");
                    $("#addr-$randId").html("<a href=\"mailto:" + addr + "\">" + addr + " </a>");
                });
                </script>
EOD;

        return $html;
    }

Он использует два метода: справа налево dir и размещение javascript.

1 голос
/ 27 января 2009

Работает ли это, если я щелкну правой кнопкой мыши по ссылке и выберу «скопировать URL»? Если нет, то это очень не идеальная ситуация (я очень редко нажимаю на ссылку mailto, предпочитая копировать адрес электронной почты и вставлять его в мое почтовое приложение или в любое другое место, где он мне нужен в определенный момент времени).

Раньше я довольно параноидально защищал свой почтовый адрес в сети (UseNet, web и т. П.), Но в наши дни я подозреваю, что на самом деле генерируется больше «возможных целей для спама», соответствующих программно локальным частям и доменам. Я основываю это на том, что иногда просматриваю логи моего почтового сервера. Как правило, существует довольно много попыток доставки по несуществующим адресам (включая усеченные версии спам-приманки, которые я вешал на UseNet еще в конце 90-х, когда было очень распространено извлечение адресов).

1 голос
/ 30 апреля 2013

как насчет HTML_CHARACTER?:

joe&#064;mail.com

выходы

joe@mail.com
1 голос
/ 21 февраля 2013

Существует PHP-скрипт с открытой лицензией, который выводит javascript, который кодирует почту: http://www.maurits.vdschee.nl/php_hide_email/. Затем можно легко вызвать функцию php, указав конкретную почту в качестве аргумента.

1 голос
/ 08 ноября 2012

после использования стольких техник, которые я нашел простым и очень дружелюбным, боты ищут @ Símbolo, и недавно они ищут [в] и его вариации, поэтому я использую 2 техники

  1. Я пишу свою электронную почту на изображении, как использование Domaintolls, и это работает отлично или
  2. для замены символа (@) изображением типа

@ replace и изображение alt будет alt = "@", поэтому бот найдет изображение, и любой человек увидит его как обычный адрес, поэтому, если он скопирует его, он скопирует электронное письмо, и задание будет выполнено. поэтому код будет

<p>myname<img src="http://www.traidnt.net/vb/images/mail2.gif" width="11" height="9" alt="@" />domain.com</p>
1 голос
/ 27 января 2009

Сначала я должен убедиться, что адрес электронной почты отображается только тогда, когда у вас включен JavaScript. Таким образом, нет простого текста, который можно прочитать без JavaScript.

Во-вторых, одним из способов реализации безопасной функции является отказ от тега <button>. Этот тег требует вставки текста между тегами, что делает его читаемым на компьютере. Вместо этого попробуйте <input type="button"> с обработчиком JavaScript для onClick. Затем используйте все методы, упомянутые другими, чтобы реализовать безопасную запись электронной почты.

Еще одним вариантом является кнопка «Нажмите, чтобы увидеть адрес электронной почты». После нажатия это превращается в закодированное письмо (символы в кодах HTML). При другом щелчке это перенаправляет на функцию «mailto: email»

Некодированная версия последней идеи с выбираемыми и не выбираемыми адресами электронной почты:

<html>
<body>
<script type="text/javascript">
      e1="@domain";
      e2="me";
      e3=".extension";
email_link="mailto:"+e2+e1+e3;
</script>
<input type="text" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="text" onClick="this.value=email;" value="Click for mail-address"/>
<input type="button" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="button" onClick="this.value=email;" value="Click for mail-address"/>
</body></html>

Посмотрите, хотите ли вы этого, и объедините это с идеями других. Вы никогда не можете быть слишком уверены.

1 голос
/ 25 декабря 2017

Еще один вариант, я переферирую шрифт, классные иконки

Реализация Fa:

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

Почтовый адрес:

<a href="mailto:info@uploadimage.club"><span class="label">info<i class="fa fa-at"></i>uploadimage.club</span></a>
0 голосов
/ 31 декабря 2012

Мне больше всего нравится ответ ofaurax, но я бы изменил его для более скрытого письма:

onclick="p1='admin'; p2='domain.com'; this.href='mailto:' + p1 + '& #x40;' + p2"
0 голосов
/ 25 августа 2013

Я просто должен дать другой ответ. Я только что придумал, с чем поиграть.

Я обнаружил, что во многих таблицах общих символов буквы @ и a-z появляются несколько раз. Вы можете сопоставить оригинальных персонажей с новыми сопоставлениями и усложнить для спам-ботов, чтобы выяснить, что такое электронная почта.

Если вы перебираете строку и получаете символьный код буквы, затем добавляете к ней 65248 и строите html-сущность на основе числа, вы получаете читаемый человеком адрес электронной почты.

var str = 'john.doe@email.com';
str = str.toLowerCase().replace(/[\.@a-z]/gi, function(match, position, str){
    var num = str.charCodeAt(position);
    return ('&#' + (num + 65248) + ';');
});

Вот рабочая скрипка: http://jsfiddle.net/EhtSC/8/

Вы можете улучшить этот подход, создав более полный набор сопоставлений между персонажами, которые выглядят одинаково. Но, например, если вы скопируете / вставите электронное письмо в блокнот, вы получите много ящиков.

Чтобы преодолеть некоторые проблемы с пользовательским интерфейсом, я создал электронное письмо как ссылку. Когда вы щелкаете по нему, он переводит символы обратно в их оригиналы.

Чтобы улучшить это, вы можете создавать более сложные сопоставления символов, если хотите. Если вы можете найти несколько символов, которые можно использовать, например, вместо «а», почему бы не назначить их случайным образом.

Вероятно, не самый безопасный подход, но мне действительно было весело играть с ним: D

...