我知道这个问题已经被问过很多次了,普遍的共识是垃圾邮件机器人最终总会找到一种方法来收集电子邮件,所以这是一个失败的原因。但我希望新创建的电子邮件在我创建的页面上可见,并且我希望至少有一些东西能够保护它免受垃圾邮件机器人的侵害。这是我希望使用的简单 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>
问题如下:
如果从数据库中获取电子邮件
abc@xyz.com
并将其传递给方法setEmailAddress
,那么由于机器人在第一名找不到电子邮件,我还需要在页面上对其进行混淆吗?您会注意到 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/