最新消息:

小心AdBlock Plus的页面元素隐藏功能

VPS xunihao 360浏览 0评论

偶然发现基于 WebStackPage 搭建的导航站有些页面的元素没有显示出来,排查半天原因,最终定位在AdBlock Plus扩展拦截了部分元素。

类似下面一段代码:

反复重试后,最后定位在window.open(“http://xkysmv.com/”, “_blank”) 的网址上。

虽然知道AdBlock Plus能对网址及页面元素进行过滤拦截,但能根据页面内容的网址进行拦截,从而不让某个元素显示,也太神奇智能了。

查看AdBlock Plus的使用帮助,AdBlock确实有 Block a specific element 的功能。

将使用的过滤列表从 EasyList China+EasyList 切换为 EasyList后,页面显示恢复正常,看来是EasyList China列表规则拦截的。

下载EaseList China的代码 https://github.com/easylist/easylistchina ,一看2万多行就头大。

仔细研究学习 Adblock Plus filters explained 后,尝试用onclick搜索,很快定位到了

##div[onclick*=".open"][onclick*="ky"]
##div[onclick*=".open"][onclick*="leyu"]

应该是此规则误杀的,此规则只要在div的onclick事件中包含了.open 和key、leyu字符就进行拦截。

吐个槽:此规则也太宽泛了吧。

于是弃用window.open,用自定义函数替代


function myopener(href,attr="_blank"){
let a=document.createElement("a");
a.target=attr;
a.href=href;
a.click();
}

测试后正常。

 

由于各种站点及APP广告泛滥,因此AdBlock Plus、uBlock Origin、Adguard 这样的广告拦截器很受欢迎,但这也对很多依靠广告为生的站点造成了伤害。

一直觉得只要在自己网站不投放弹窗、浮动类广告,只是纯文字的广告,应该不会被各种广告拦截器拦截。

此次事故刚好提了个醒:小心各种广告拦截器的页面元素隐藏功能,杀伤力太大了。

 

转载请注明:虚拟号之家 » 小心AdBlock Plus的页面元素隐藏功能

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址