php网站,代码有一段不知道什么意思,求大神帮忙(代码如下)
2015-09-20
网友采纳的那个回答是个毛线啊?就给你把这段js做了一下格式化。我来给你解释一下吧:
这个代码是前端的JS代码,PHP是后端语言,这个代码跟PHP没有卵关系;
这个代码不是病毒木马代码,检测工具检测出来红色大概是因为这个是放在了注释CDATA块里。注释CDATA块其实是因以前的低端浏览器不识别JS代码而生的,现在完全没必要再注释掉了;
你还是不放心的话,那我告诉你,这个代码是给你隐藏你的真实邮箱的。因为很多发送垃圾邮件的人甚至搜索引擎,都会用爬虫扫描各个网站的邮箱(因为邮箱格式特征很明显),扫到之后就给你发垃圾邮件。所以这个代码是由PHP简单的加密之后写到页面上一串16进制数字,然后用JS解密出来,爬虫就扫不到你邮箱了,就这么简单。
也许采纳的那位哥们不服,说这么一段代码看不出什么来。那好,我说说每一行的意思。
首先是个闭包,懂前端的人都知道。
然后try一下,是为了谨慎,免得IE弹出页面脚本有错误。
然后获取document.currentScript标签。如果没有这个属性的话,就用原始的方法来做,这里又是一个自执行函数(闭包)。
拿到当前的script标签,那前一个恰好就是加密标签了,邮箱就在这个标签的data-cfemail属性中,将这个标签保存成变量为c。
然后就是解密了。
解密算法很简单,就是一串16进制串,两两读取。
前两个读出来作为密钥
从后面每两个读出来,和密钥做异或,之后的值用ASCII读出字母
这些字母拼出来的就是你的邮箱
解密之后创建一个文本节点替换掉原来的加密标签,就完成了
try {
var t = "currentScript" in document ? document.currentScript : function() {
for (var t = document.getElementsByTagName("script"), e = t.length; e--;)
if (t[e].getAttribute("cf-hash")) return t[e]
}();
if (t && t.previousSibling) {
var e, r, n, i, c = t.previousSibling,
a = c.getAttribute("data-cfemail");
if (a) {
for (e = "", r = parseInt(a.substr(0, 2), 16), n = 2; a.length - n; n += 2) i = parseInt(a.substr(n, 2), 16) ^ r, e += String.fromCharCode(i);
e = document.createTextNode(e), c.parentNode.replaceChild(e, c)
}
}
} catch (u) {}
}(); /* ]]> */
单从代码上很难看出什么意思,要结合上下文才可以,但是如果你把这段代码删除了,看看,页面上有没有影响就知道了,