Druid 如何去广告

Druid 如何去广告

定位广告代码

我们先在页面定位广告产生的逻辑,

  • 线索一、由于广告不是页面加载时出现的,所以肯定有个异步的方法来加载;
  • 线索二、因为每个页面都会调用,因此一般封装在某个js中。

在Druid主页面,按F12,可以看到页面引用了如下js文件

<script src="js/lang.js" type="text/javascript" charset="utf8"></script>
<script src="js/common.js" type="text/javascript" charset="utf8"></script>

经逐个排查,发现广告代码存在与common.js中

第30行

buildFooter : function() {
	var html ='<footer class="footer">'+
			  '    		<div class="container">'+
			  '<a href="https://render.alipay.com/p/s/taobaonpm_click/druid_banner_click" target="new"><img src="https://render.alipay.com/p/s/taobaonpm_click/druid_banner"></a><br/>' +
		  	  '	powered by <a href="https://github.com/alibaba/" target="_blank">AlibabaTech</a> & <a href="http://www.sandzhang.com/" target="_blank">sandzhang</a> & <a href="http://melin.iteye.com/" target="_blank">melin</a> & <a href="https://github.com/shrekwang" target="_blank">shrek.wang</a>'+
		  	  '			</div>'+
			  ' </footer>';
	$(document.body).append(html);
}

删除广告代码

目前在不能更改源代码的前提下,我们可以通过Filter过滤器来修改 common.js 的返回内容

  1. 在Filter中判断当前路径是否以 /druid/js/common.js 结尾;
  2. 获取当前文件路径应返回的内容;
  3. 删除广告相关代码,并构造新内容;
  4. 将新内容,返回输出至前台;
if(requestUrl.contains("/druid/js/common.js")){
    // 过滤 /druid/js/common.js 路径,将广告代码替换掉
    chain.doFilter(request, response);
    response.resetBuffer();
    // 获取common文件内容
    String text = Utils.readFromResource("support/http/resources/js/common.js");
    // 正则表达式删除 <footer class="footer"> 与 </footer> 之间的内容,包括footer本身
    text = text.replaceAll("<footer class=\"footer\">[^%]*</footer>", "");            
    // 将新内容返回至前台页面
    response.getWriter().write(text);
}

重新运行代码后,访问 druid/js/common.js ,会发现广告代码没了

buildFooter : function() {
	var html ='';
	$(document.body).append(html);
},

此时访问 Druid相关页面,发现没有广告了,大功告成!

博客

https://my.oschina.net/gmarshal/blog/3074094

欢迎关注我的个人微信订阅号:(据说这个头像程序猿专用)

输入图片说明

转载于:https://my.oschina.net/gmarshal/blog/3074094

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值