记一次浏览器开发者工具提示Javascript写入失败的经历
偶然一次在调试自己的网站的时候打开Chrome自带的开发者工具,发现居然提示一个来自51.la的统计代码尝试在我的网站上写入文本但是被浏览器拒绝。我的第一反应是被吓了一跳,因为我从来没有使用各种访问统计工具的习惯。自己的网站怎么会被别人挂了51.la的代码?
首先我尝试在HTML代码中寻找到一丝踪迹,但是居然搜索不到任何关于这个JS的代码。心里想加这段代码的人也是隐藏的够深的,我找了半天都没有发现一点蛛丝马迹。随后我找到了这个JS的URL,并且尝试追踪到这段51.la统计代码的所有者。但是因为对方设置了查看密码,所以没有成功。
之后我便意识到问题的严重性了,藏得这么隐蔽,难道真的被人恶意挂代码了?我下载了全站数据,在本地全文搜索,依然找不到任何关于51.la的代码。事情变得更加匪夷所思了。如果是某个插件添加的代码,为什么没有明确告知用户,而且还把代码藏得这么隐蔽?至于有的同学想到的是否是主题(模板)的问题,我认为是不太可能的。因为我所使用的主题是在外国网站上购买,然后自行修改的。一个外国设计师根本不可能知道51.la是什么,又何况自己冒着被投诉的风险往作品里加入这种代码?就算他加入了51.la的代码,在我修改主题的过程中应该早就发现了。
焦头烂额之际,我躺在床上休息了一会儿,然后突然从床上跳起:会不会是浏览器的问题?
我关闭了所有Chrome扩展程序,果然这段代码消失了。
事情到此,一切都已清晰明了。经过测试,我发现这段统计代码是由一个叫做广告杀手的网页广告过滤软件添加的,不过该扩展程序已经从Chrome应用商店下架,而且官网已经出现DNS错误无法打开。看来原作者的意图是希望添加一段代码以统计一共帮用户过滤了多少个页面的广告,然而却因为浏览器的安全限制导致写入失败。(或者用比较阴谋论的观点:他想检测每一个用户的上网踪迹。因为51.la的统计代码很强大,可以获取用户的很多敏感信息,这一点用过的都知道,在这里就不细说了)
既然问题发现了解决也十分简单:停止使用该插件。然而这个扩展程序还是挺好用的,以后我想办法把这个扩展程序修改一下,去掉这一段代码就完美了。
写在最后
解决这个问题前前后后竟然花了我几个星期的时间,具体的过程在这篇文章中略去了很多细节。主要还是希望给大家提供一个解决类似问题的思路:有的时候你的网站看起来有问题并不一定真的是你的网站被人挂马了,而可能是你电脑或者浏览器的问题。