我最近在我的网站上做了一种“公共服务公告”,告诉人们网站上只有一个广告,并且它被整齐地放置在网站的设计中。
我这样做是因为有人报告该网站“无法正常工作”,当被要求提供问题的屏幕截图时,我向我提供了以下信息:
充满广告的屏幕截图http://ezimba.com/work/140308C/ezimba19743774066600.png http://ezimba.com/work/140308C/ezimba19743774066600.png
进一步调查发现该问题是一个名为“HD Streamer”的恶意扩展。
一般来说,一旦确定问题是广告软件,我就会向他们指出 MalwareBytes 并说“这是你的问题,不是我的问题,我现在需要回去工作”。
总体来说这很好,有些人已经学会了教育有类似问题的其他用户。然而,并不是每个人都会阅读其他人提出的问题(否则我们就不需要在这里“关闭为重复”,不是吗?;)) http://xkcd.com/541/
无论如何,进入正题。有没有一种可靠的方法可以通过 JavaScript 检测在我的网站上插入此类额外广告?
如果我可以自动检测到这种......“劫持”,我可以插入一个我自己的盒子来说“嘿,你有广告软件,可能应该清理它!” ...当然,一些恶意软件广告将自己伪装成“您有病毒,请单击此处修复”框,因此我必须确保它明显成为网站设计的一部分(颜色,也许将其样式设置为属于该网站某个角色的对话气泡,上面有 NPC 的名字,诸如此类的东西),但我认为这比仅仅将他们视为无法保持计算机清洁的人更有帮助。
计算标准广告分辨率的图像实际上并不太难。你只需要循环遍历document.images
边走边检查分辨率。您可以通过检查其唯一 ID 来跳过您自己的广告(当然,如果它没有 ID,您可以跳过特定分辨率的图像)。
var adID = "myAdId";
//incomplete ad resolution list
var widths = [120, 160];
var heights = [600, 600];
var adCount = 0;
for(i = 0; i < document.images.length; i++){
for(j = 0; j < widths.length; j++){
if(document.images[i].width == widths[j]
&& document.images[i].height == heights[j]
&& document.images[i].id != adID){
adCount++;
break;
}
}
}
if(adCount > 0){
notifyUser();
}
Notes:
- 标准广告分辨率列表可以在以下位置找到:维基百科 https://en.wikipedia.org/wiki/Standard_ad_size#Standard_sizes.
- 在 Chrome、Firefox 和 IE 中进行了测试。
- 尚未使用动态插入的广告进行测试,但它很可能会起作用,特别是如果您添加延迟以便扩展程序可以先插入其广告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)