Запутывание электронной почты с помощью JavaScript - PullRequest
3 голосов
/ 17 января 2020

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

$(document).ready(function() {
  setEmailAddress("abc@xyz.com");
});

function setEmailAddress(emailValue) {
  $("#spanTest").append($("<a>").attr("href", "javascript:location='mailto:" + obfuscateString(emailValue) + "';void 0").text(obfuscateString(emailValue)));
}

function obfuscateString(plaintext) {
  var obfuscated = "";

  for (var i = 0; i < plaintext.length; i++) {
    obfuscated += "\\u00" + plaintext.charCodeAt(i).toString(16);
  }

  return obfuscated;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<span id="spanTest"></span>

Вот вопросы:

  1. Если электронное письмо abc@xyz.com взято из базы данных и передано в метод setEmailAddress тогда, так как html, отсканированный ботом, в первую очередь не найдет письмо, мне все еще нужно замаскировать его на странице?

  2. Вы заметите, что текст ссылки привязки не запутан. Если мне тоже нужно запутать эту часть, можно ли этого достичь, не используя eval?

Примечание : у меня уже есть контактная форма на странице который использует reCaptcha , но этот запрос предназначен для того, когда я sh должен также видеть электронное письмо на странице.

РЕДАКТИРОВАТЬ: После прочтения комментариев, Я думаю, что мне нужно подчеркнуть вопрос нет. 2 выше. Пожалуйста, смотрите обновленный код выше.

Как вы видите, я пытаюсь скрыть / скрыть текст ссылки. Я понимаю, что мне нужно document.write полученный результат по методу obfuscateString, но использовать для этого eval не рекомендуется. Есть ли способ скрыть эту часть текста тоже?

1 Ответ

0 голосов
/ 18 января 2020

Итак, я использовал следующее:

$(document).ready(function() {
  setEmailAddress("abc@xyz.com");
});

function setEmailAddress(emailValue) {
  $("#spanTest").append($("<a>").attr("href", "javascript:location='mailto:" + obfuscateString(emailValue) + "';void 0").html("<img src='https://i.stack.imgur.com/CFrNW.png' />"));
}

function obfuscateString(plaintext) {
  var obfuscated = "";

  for (var i = 0; i < plaintext.length; i++) {
    obfuscated += "\\u00" + plaintext.charCodeAt(i).toString(16);
  }

  return obfuscated;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span id="spanTest"></span>

То есть я изменил часть в коде для текста ссылки. Отсюда:

.text(obfuscateString(emailValue))

по этому:

.html("<img src='https://i.stack.imgur.com/CFrNW.png' />")

Будет отображаться изображение (сообщения электронной почты) вместо текста. Ваши предложения все еще приветствуются.

...