微信H5页面被运营商嵌入各种各样的广告

微信H5页面被运营商嵌入各种各样的广告

一、案发现场

在家的时候偶然间点开公司公众号H5页面看看,偶然间发现页面下方出现了一个广告,有时有,有时没有。。。 我去什么鬼,最开始我以为是微信公众号后台开启了广告主投放或者是用的layui框架给植入的。

image

二、原因分析

  • 1.DNS劫持

HTML5页面被电信运营商进行DNS劫持植入广告,建议打电话给电信运营商。这招我试过,不管用,他们都在踢皮球,到底是运营商或代理商干的,,还是内部人干,很难追求到源头。

  • 2.HTTP劫持

可能也有这个原因,建议使用HTTPS, HTTPS成本不算高, 一年几百块至几千块的,能有效拦截嵌入广告。 但不彻底, 照样有嵌入广告的情况,具体原因不详。

  • 3.第三方包植入广告

不排除第三方的包有植入广告的代码,但这个不好找,一个项目的npm包,可能1000多个~~

综上所述,我的问题原因应该是没有使用https造成的让运维解决一下就好了。

三、暴力隐藏广告

经过反复研究广告,那些嵌入的代码,的确规则时常变化的,~~但有一样东西是不变的,就是iframe,每段嵌入代码都会iframe。

css代码

1
2
/* 抢先 隐藏 iframe */
body iframe {display: none;}

js代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

var del_times = 0, deTimer = null;
function adGo() {
var iframe = document.getElementsByTagName('iframe')[0];
if(iframe){
console.log(iframe)
var bodyNode = {tagName:''}, iframeParent, targetNode = iframe.parentNode;
while (bodyNode.tagName != 'BODY'){
bodyNode = targetNode;
if(bodyNode.tagName != 'BODY'){
iframeParent = targetNode;
targetNode = targetNode.parentNode;
}
}
if(iframeParent) //如果iframe有父类
bodyNode.removeChild(iframeParent);
else
bodyNode.removeChild(iframe);
}
del_times++;
//这里是执行50次, 每次200ms, 意思在10秒以内删除垃圾广告。
if (del_times > 50) window.clearInterval(deTimer)
}

//抢先 删除 嵌入广告
(function(){adGo();}())

deTimer = self.setInterval(adGo, 200);

把代码加到<body></body>

参考文档:

https://github.com/ssttm169/remove-h5-ads

https://blog.csdn.net/u011252402/article/details/82752312

https://juejin.im/post/5b06feb46fb9a07a9d70bf04

-------------已经触及底线 感谢您的阅读-------------

本文标题:微信H5页面被运营商嵌入各种各样的广告

文章作者:趙小傑~~

发布时间:2019年11月28日 - 10:13:36

最后更新:2019年11月28日 - 22:04:51

原始链接:https://cnsyear.com/posts/87063dbe.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%