先强烈谴责鄙视下UC 这种无耻的、明目张胆的劫持网站流量的强盗行为
之前写过一篇关于 如何屏蔽UC强制嵌入到你网站页面上的垃圾广告 的文章 链接:https://blog.csdn.net/zhouzme/article/details/70932684
但最近发现已经失效了,犯贱的UC 果然没有让人失望,做了许多反屏蔽措施。
先说明下,此文中方法测试于 2018年04月13号 ,不确定此日期后 UC 注入的代码会不会再次变种,可能导致屏蔽失效,可以先尝试使用下,若有变化我会再更新方法
还是以 CSDN 页面截个示例图吧
注意底部,这个是正常页面展示情况,底部没有图片的
这张是被注入广告后的效果
和以前比起来,现在更是无耻了,以前还会加个 UC 广告的logo现在就一张图,普通人根本搞不懂这是哪儿来的广告了
检测方法和之前一样,通过JS延迟输出页面代码就可以看到UC 劫持注入的广告源码了。
<textarea id="show-uc-ad-code" style="width: 100%;" rows="50"></textarea>
<br><br>
<script>
setTimeout(function(){
// alert(document.body.innerHTML);
document.getElementById('show-uc-ad-code').value = document.body.innerHTML;
}, 5000);
</script>
这是我本地测试的效果
下面这是注入的广告代码
<div id="_idbex8531bn" data-text="f7d5619903cb99b6f8ab2ee34c83049a881b26e832e1703160037053af" style="display: inline; background-color: white;">
<iframe id="head__idbex8531bn" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="about:blank"></iframe>
<iframe src="https://utp.ucweb.com/render?cids=9%2C10%2C208&p_u=http%253A%252F%252F192.168.0.2%252Ftest.html&p_t=&limit=1&p_k=&p_r=&uc_param_str=cpfrvelasvprktdnddmiosntbi&utp_ver=5&container=_idbex8531bn&d_s=false&i_a=101%3A0%2C102%3A0%2C103%3A1%2C104%3A0%2C105%3A0%2C106%3A0%2C108%3A0%2C109%3A0%2C110%3A0%2C111%3A0%2C112%3A0%2C107%3A0%2C113%3A0%2C114%3A0%2C115%3A0%2C116%3A0%2C117%3A0%2C118%3A0%2C119%3A0%2C120%3A0%2C121%3A0%2C122%3A0%2C123%3A0%2C124%3A0%2C125%3A0%2C126%3A0%2C127%3A1%2C128%3A0%2C129%3A0%2C130%3A0%2C131%3A0%2C132%3A0%2C133%3A0%2C134%3A0%2C135%3A0%2C136%3A0%2C137%3A1%2C138%3A0" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" width="100%" id="utp__idbex8531bn" style="height: 166px; visibility: visible !important;"></iframe>
</div>
现在的代码比以前多了很多,一大堆了,可以看到他的容器id 都进行了随机生成,每次都不一样的,就是为了防止大家通过id来进行拦截
虽然 UC 用上了各种手段防止他注入的广告被我们屏蔽,但他的代码始终还是存在特定的规则的,只是相比以前的方法处理起来麻烦了一点而已。
我们只用 CSS 样式来控制即可
<style type="text/css">
/* 方法一、确定你的页面上所有正常样式都不是以 下划线 _ 开头的则可以这样处理 */
div[id^="_"] { display: none !important; }
/* 方法二、原理同样,稍微安全点的写法,我们隐藏掉他的两个iframe就好,他的 id 容易区分 */
iframe[id^="head__"] { display: none !important; }
iframe[id^="utp__"] { display: none !important; }
/* 方法三、也是用到 CSS 的正则选择器,我们直接屏蔽掉和 UC 相关的所有框架 */
iframe[src*="ucweb.com"] { display: none !important; }
/* 以上三种方法任选其一即可,但最终效果还是有些细微不同的,根据你网站的实际效果来选择吧,二三两种方法会有些UC残余垃圾代码会留在页面上,只是不明显,第一种就是容易误杀 */
</style>
屏蔽的原理就是这样了,你也可以 js 来实现更符合你网站需求的方法
这样就可以屏蔽掉那一大堆可恶的强制注入广告了。
对于 UC 还有什么好说的呢?为了套流量已经拼得不要脸了,说什么也没用