Хороший неинтрузивный антиобщественный почтовый обфускатор?

Я пытаюсь придумать JavaScript-обфускатор, чтобы уменьшить вероятность спама в электронных письмах, перечисленных на веб-сайте. Сейчас у меня есть обфускатор, основанный на JavaScript, который использует комбинацию HTML-кодирования и JavaScript для прозрачного преобразования обфускации в обычный почтовый ящик.

Что я делаю:

Отформатируйте "mailto:" часть href в ссылках, кодируемых как HTML:

mailto:

Я также кодирую электронное письмо, заменяя знак @ знаком (a), так что письмо читает что-то вроде:

stackoverflow(a)example.com

Затем я использую JavaScript для расшифровки всех ссылок mailto, которые имеют этот знак (a) в письме и конвертируют их в @ при загрузке страницы.

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

Мне было интересно, было ли лучше (менее навязчивый (или, в лучшем случае, не очень навязчивый), но более устойчивый к спамеру) способ обфускации писем на веб-странице.

Как и при любом типе обфускации, если человек или компьютер могут легко обезвредить его, тогда спамер может легко сделать то же самое. Из-за этого я не ожидаю безупречной обфускации, однако мне было любопытно посмотреть, какие другие предложения были там. Поиск Google не показал никаких решений, которые я считаю лучшими, чем мое текущее решение. Мне было интересно, есть ли другие хорошие альтернативы.

Ответ 1

Я использовал HiveLogic Enkoder в прошлом с довольно хорошим успехом. Если что-нибудь, что вы, возможно, захотите взглянуть на то, как работает кодирование Dan, поскольку оно может дать вам некоторые идеи, чтобы сделать еще более надежный obfuscator.

Ответ 2

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

<script type="text/javascript">
//<![CDATA[
     scrambler('[email protected]||mo');
//]]>
</script>
<noscript>
    <img src="[email protected]||mo" alt="Emailadresse" />
</noscript>

scramble - очень простая функция JavaScript, я думаю, вы легко можете понять, что она делает. (Это приведет к: <a href="mailto:[email protected]">[email protected]</a>) scrambler.php - то же самое, за исключением php и gd-сервера для генерации изображений.

Нарисуйте что-то, что не связано с некоторыми кодировками или заменой чего-то другим.

EDIT: Вот мой алгоритм:

function scrambler (text) {
  parts = text.split("||");
  var reverse = function (s) {
    var ret ='';
    for (var i=s.length-1;i>=0;i--)
      ret+=s.charAt(i);
    return ret;
  }
  text = reverse(parts[0])+reverse(parts[1]);
  document.write(text);
}

Ответ 3

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

Как заявил Стив Гилхам, не так сложно получить электронное письмо с OCR. И текстовые браузеры не поддерживают их. Таким образом, решение Скотта, вероятно, является лучшим решением.

Ответ 4

Я использовал этот генератор http://www.wbwip.com/wbw/emailencoder.html для обслуживания, и он отлично работает. Обычно я использую части закодированного адреса и части, которые не являются.

Например...

[email protected] == &#117;&#115;&#101;&#114;&#064;&#112;&#111;&#046;&#099;&#111;&#109;

Я могу изменить...

[email protected] == u&#115;&#101;&#114;&#064;&#112;&#111;&#046;&#099;&#111;m