Насколько безопасно обфускация электронной почты javascript?

Чтобы разместить на своих сайтах адреса электронной почты, я использую этот Javascript:

function showEmailLink(user, domain, linkText) {
 if (linkText == "") {
  linkText = user + "@" + domain;
 }
 return document.write("<a href=" + "mail" + "to:" + user + "@" + domain
   + ">" + linkText + "<\/a>");
}

так что в моем HTML я могу написать следующее:

please send me an 
<script type="text/javascript">
  <!--
  showEmailLink("edward","tanguay.info","e-mail");
  //-->
</script>

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

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

Насколько безопасен этот метод обфускации электронной почты с помощью JavaScript?


person Edward Tanguay    schedule 06.09.2009    source источник


Ответы (7)


На самом деле это не вопрос «безопасности» - все, что видит обычный пользователь, небезопасно, потому что любой действительно решительный злонамеренный объект может действовать как обычный пользователь и фактически отображать / оценивать страницу.

Это больше вопрос сдерживания - насколько автоматизированные комбайны заботятся? У меня нет точных цифр, но я предполагаю, что большинство сборщиков не утруждают себя полным рендерингом или оценкой страниц, поскольку для них существует множество «более мягких» целей, и для полной оценки скриптов страницы требуется гораздо больше времени. что не очень подходит для быстрого массового распространения пауков.

Если вы действительно хотите отпугнуть комбайнов, вероятно, лучшее средство сдерживания, доступное в настоящее время, - это то, что включает в себя CAPTCHA для получения адреса, например Mailhide. Однако даже этому можно помешать, если харвестер настроен достаточно решительно (такими методами, как сознательный или даже неосознанный краудсорсинг взлома CAPTCHA и т. Д.).

person Amber    schedule 06.09.2009

Если кто-то хочет настроить таргетинг конкретно на ваш сайт, это безопасно на 0%. Если вы просто пытаетесь поднять планку против автоматических сценариев, возможно, все будет в порядке. Я не успевала за последними достижениями.

Однако я хотел бы указать, что вы не должны вставлять произвольные строки (такие как имя пользователя и имя домена) в свой HTML через document.write (), поскольку это брешь в безопасности. Вы должны создать узел A и использовать методы получения / установки.

person i_am_jorf    schedule 06.09.2009
comment
Что за дыра в безопасности? Думаю, мне что-то не хватает, но я вижу только один эффект - пользователь может изменять HTML на своем локальном компьютере. - person nfm; 07.09.2009

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

Однако известно, что некоторые современные парсеры используют обработанный исходный код для парсинга адресов, делая любые методы обфускации JavaScript бесполезными.

person Community    schedule 06.09.2009
comment
Одно из преимуществ reCAPTCHA (и созданного ими Mailhide) заключается в том, что он также предлагает версию, отличную от Javascript. - person Amber; 07.09.2009

Все зависит от того, компенсируется ли стоимость рендеринга страницы значением адреса электронной почты. Как сказал Дэв, профессиональные спамеры могут нанять целую армию дешевой рабочей силы для обработки таких страниц или расшифровки CAPTCHAS. В некоторых случаях это вполне оправданно, например, при создании новых учетных записей электронной почты в доверенных доменах.

Вы можете увеличить стоимость визуализации страницы, выполнив некоторые вычисления в showEmailLink ().

person nfm    schedule 06.09.2009

Хотя у меня нет веских доказательств, я считаю, что сборщики электронной почты уже несколько лет могут выполнять код javascript. Это основано только на использовании функции, очень похожей на вашу, для «защиты» адресов электронной почты на общедоступной странице, которые больше нигде не использовались. Конечно, со временем они начали получать спам.

По сути, все, что вы можете сделать, что не требует, чтобы человек интерпретировал и вводил адрес электронной почты, в конечном итоге будет извлечен сборщиками электронной почты. Если ваш браузер может выполнять javascript для его декодирования, они тоже могут. (Они, вероятно, используют для этого браузеры.)

person Greg Hewgill    schedule 06.09.2009

Мэтт Каттс просто упоминает в видео для веб-мастеров, что этот метод больше не является "безопасным" см. ссылку здесь http://www.youtube.com/watch?v=Ce6cLrrfS5E он говорит, что если вы поместите JavaScript в место, запрещенное robots.txt, тогда вам не придется беспокоиться о роботах, отображающих html, но Google становится лучше при синтаксическом анализе JavaScript, и ваш адрес может быть доступен для поиска в виде открытого текста, если вы используете этот метод

person Carter Cole    schedule 28.10.2009

Если вы похожи на меня и не против использования javascript, я нашел эту страницу: http://reliableanswers.com/js/mailme.asp В основном он использует этот фрагмент:

<script type="text/javascript">
function mailMe(sDom, sUser)
{
  return("mail"+"to:"+sUser+"@"+sDom.replace(/%23/g,"."));
}
</script>
<a href="/contact/" title="Contact Me!"
 onmouseover="javascript:this.href=mailMe('example%23com','me');"
 onfocus="javascript:this.href=mailMe('example%23com','me');">Contact
Me!</a>

Неплохая обфускация.

person Rocky Luck    schedule 23.09.2009
comment
Скорость его принятия делает это плохим. Если вы его нашли, то и комбайн найдет. :) - person bzlm; 01.09.2010