如何判断使用JavaScript进行电子邮件混淆是否有效?

问题描述 投票:0回答:1

我正在使用JavaScript函数erot13。正如某些文章所建议的那样,此功能假设是对电子邮件进行混淆处理,因此电子邮件收集机器人无法从网站中提取它。

function erot13(s) {
  return (s ? s : this).split("").map(function (_) {
    if (!_.match(/[A-za-z]/)) return _;
    var c = Math.floor(_.charCodeAt(0) / 97);
    var k = (_.toLowerCase().charCodeAt(0) - 83) % 26 || 26;
    return String.fromCharCode(k + ((c == 0) ? 64 : 96));
  }).join("");
}

function erot13_onload(event) {
  var elements = window.document.querySelectorAll("a[data-erot13]");
  for (var j = 0; j < elements.length; j++) {
    var element = elements[j];
    var email = element.dataset.erot13;
    var overwrite = element.dataset.erot13Overwrite !== undefined;
    if (email !== undefined) {
      element.href = "mailto:" + erot13(email);
      if (overwrite) {
        element.innerHTML = erot13(email);
      }
    }
  }
}

window.addEventListener("load", erot13_onload);

逐步执行过程的过程如下:

  1. 我将此函数放置在单独的js文件中,并将脚本标记放置在index.html中:
<script src="erot13.js"></script>
  1. 我去这个网站获取我的电子邮件的加密版本:https://rot13.com/

  2. 最后,我将标签添加到具有data-erot13属性的index.html中,在其中放置加密的电子邮件:

<a data-erot13="[email protected]"><span class="email"></span>Email Me</a>

[所有内容都可以正常工作,但是如果我在浏览器中检查电子邮件,则会看到真实的电子邮件,但看不到它的加密版本。这是否意味着erot13函数不起作用?如何确定该僵尸程序是否真的加密了?

javascript email obfuscation
1个回答
2
投票

据我所知,您的方法rot13运行正常。但是,通过修改函数element.href中的element.innerHTMLerot13_onload变量,可以更改DOM。

因此,在您的页面上执行任何JavaScript之前,HTML元素将包含编码的电子邮件地址。当执行load时,您的erot13_onload功能将用真实的电子邮件地址替换编码的电子邮件地址。

除非机器人可以执行JavaScript或检测编码后的电子邮件,否则它将无法看到真实的电子邮件地址。然后它将看到与您相同的输出(已解码的电子邮件地址)。

© www.soinside.com 2019 - 2024. All rights reserved.