javascript - 使用 JavaScript 混淆电子邮件

标签 javascript jquery obfuscation

我知道这个问题已经被问过很多次了,普遍的共识是垃圾邮件机器人最终总会找到一种方法来收集电子邮件,所以这是一个失败的原因。但我希望新创建的电子邮件在我创建的页面上可见,并且我希望至少有一些东西能够保护它免受垃圾邮件机器人的侵害。这是我希望使用的简单 JavaScript 技术:

$(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,那么由于机器人在第一名找不到电子邮件,我还需要在页面上对其进行混淆吗?

  2. 您会注意到 anchor 的链接文本没有被混淆。如果我也需要混淆该部分,是否可以在不使用 eval 的情况下实现这一目标?

注意:我的页面上已经有一个使用 reCaptcha 的联系表单,但此查询适用于我希望在页面上也显示电子邮件的情况。

编辑: 看完评论后,我想我有必要强调一下问题。 2 上面。请参阅上面更新的代码。

如您所见,我也试图隐藏/混淆链接文本。我知道我需要通过 obfuscateString 方法来 document.write 生成的结果,但不建议使用 eval 来实现。有没有办法混淆这部分文本?

最佳答案

所以我最终使用了以下内容:

$(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='/image/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='/image/CFrNW.png' />")

它将呈现(电子邮件的)图像来代替文本。仍然欢迎您提出建议。

关于javascript - 使用 JavaScript 混淆电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59782543/

相关文章:

javascript - 单击特定的 div 元素时移除文本的透明度。

javascript insidehtml 不会将变量发送到链接

javascript - 如何保护 HTML5+PhoneGap 移动应用程序中的数据?

javascript - 一页中的许多切换幻灯片元素

javascript - JSDoc - 函数参数应该是对象的属性

javascript - Ember.js: View 绑定(bind)不起作用

javascript - 旋转文本容器自动高度

c# - .NET 中字符串的简单混淆?

javascript - 我怎样才能消除这段 Javascript 代码的混淆……你够猛吗?

javascript - 如何导入webpack中非模块的库