我知道这个问题已经被问过很多次了,并且普遍的共识是,垃圾邮件机器人总是会最终找到一种收集电子邮件的方法,因此这是一个失败的原因。但是,我希望在创建的页面上可以看到新创建的电子邮件,并且希望至少是某些东西保护它免受垃圾邮件机器人的攻击。这是我想使用的一种简单的JavaScript
技术:
$(document).ready(function() {
setEmailAddress("[email protected]");
});
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>
这里是问题:
如果从数据库中提取电子邮件[email protected]
并传递给方法setEmailAddress
,则由于机器人首先爬网的html找不到电子邮件,我是否仍需要对其进行混淆这页纸?
您会注意到锚点的链接文本没有被混淆。如果我也需要混淆该部分,是否可以不使用eval
而实现?
Note
编辑:阅读评论后,我认为我需要强调第一个问题。 2以上。请参阅上面的更新代码。
如您所见,我也试图隐藏/模糊链接文本。我知道我需要通过方法document.write
来obfuscateString
产生的结果,但是不建议为此使用eval
。有没有办法混淆这部分文字?
我知道这个问题已经被问过很多次了,并且普遍的共识是,垃圾邮件机器人总是会最终找到一种收集电子邮件的方法,因此这是一个失败的原因。但是我想要一个...
所以我最终使用了以下内容: