吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3761|回复: 19
收起左侧

[其他原创] 使用webView屏蔽广告(实操版)

  [复制链接]
wushaominkk 发表于 2021-1-12 10:51
本帖最后由 wushaominkk 于 2021-1-12 10:55 编辑

快过年了,准备刷一波剧,发现以前写的
【Android】利用爬虫将电影网站打包成一个APP(8.26更新)
这个已经失效了,准备再搞一波.这次不写界面了太麻烦,直接用webView嵌套网页.
嵌套进去发现广告贼特多,各种悬浮页面根本无法用.在浏览器上输入网址按F12调整手机模式
1610417623(1).jpg
各种恶心的广告就弹出来了,在网页上找到下面广告的标签
1610417965(1).jpg
[Java] 纯文本查看 复制代码
 webView.setWebViewClient(new WebViewClient() {
            @Override
            public WebResourceResponse shouldInterceptRequest(WebView webView, String url) {
                //判断是否是广告相关的资源链接
                if (!AdFilterTool.isAd(context, url)) {
                    //这里是不做处理的数据
                    return super.shouldInterceptRequest(webView, url);
                } else {
                    //有广告的请求数据,我们直接返回空数据,注:不能直接返回null
                    return new WebResourceResponse(null, null, null);
                }
            }

[Java] 纯文本查看 复制代码
public class AdFilterTool {
    public static boolean isAd(Context context, String url) {
        Resources res = context.getResources();
        String[] filterUrls = res.getStringArray(R.array.adUrls);
        for (String adUrl : filterUrls ) {
            if (url.contains(adUrl)) {
                return true;
            }
        }
        return false;
    }

    public static String getClearAdDivJs(Context context){
        String js = "javascript:";
        Resources res = context.getResources();
        String[] adDivs = res.getStringArray(R.array.adBlockDiv);
        for(int i=0;i<adDivs.length;i++){

            js += "var adDiv"+i+"= document.getElementById('"+adDivs[i]+"');if(adDiv"+i+" != null)adDiv"+i+".parentNode.removeChild(adDiv"+i+");";
        }
        return js;
    }
}


重写shouldInterceptRequest方法过滤链接


image.png
刚开始我是简单粗暴把.gif给过滤掉,发现图片是没有了但是便签还在,你点击还是会弹到广告页面
第二步骤 动态加载js移除网页广告的标签
重写onPageFinished方法,当页面加载完注入js代码移除标签

[Java] 纯文本查看 复制代码
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                Log.i("Finished:", url);
                String js = AdFilterTool.getClearAdDivJs(context);
                Log.v("adJs",js);
                view.loadUrl(js);

            }


只要找到广告标签的ID就可以移除,测试后发现这个网站还是挺流氓的,广告的标签是动态加载的,每次加载的ID是不一样的.改方法不可行
第三步 调试NetWork看到底加载那些流氓的代码,这不叫费时间,只能一个个找了
发现一个很奇怪的文件130798,点击看看有段 var c = 'abcdefhijkmnprstwxyzABCDEFGHIJKLMNOPQRSTWXYZ';这个代码
以经验来看,这个极有可能是,


1610419003(1).jpg

我们来搜索下那个广告的标签video,找到了
        vs.innerHTML += `video[${vn}]{background-size:100% 100%;background-image:url(${param.a_3});position: fixed;left: 0;${param.c_5}:${param.o}px;z-index:2147483647;height: ${param.d_2}px;width: 100vw;object-fit:fill}`;
就是他没错了,动态加载的标签


1610417096(1).jpg

我们再看看这个文件请求头


1610419332(1).jpg

找到这个链接直接在第一步给他屏蔽了,这样他就不会动态加载标签了
按照这个方法把其他的部位的广告都给屏蔽掉
最后放一张效果图


e77a216392e12ce6d48aa943e50542d.jpg

免费评分

参与人数 3吾爱币 +12 热心值 +3 收起 理由
苏紫方璇 + 10 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
没事路过 + 1 + 1 谢谢@Thanks!
Natu + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

q314956820 发表于 2021-1-12 10:59
js学得好 有没有快速ES6的进阶视频
王成 发表于 2021-1-12 11:00
宜城小站 发表于 2021-1-12 11:07
头像被屏蔽
First丶云心 发表于 2021-1-12 11:09
提示: 作者被禁止或删除 内容自动屏蔽
wuboxun 发表于 2021-1-12 11:15
楼主牛逼,收藏学习了
testqkl 发表于 2021-1-12 11:19
牛X,有想法
Cool_Breeze 发表于 2021-1-12 11:32
这是网站的视频爬下来直接合并就可以播放,这也太好获取了吧!
damer 发表于 2021-1-12 11:48
让我有了别的想法

点评

忍忍会过去的  详情 回复 发表于 2021-1-12 12:56
怼你个小娘炮 发表于 2021-1-12 11:49
大佬666666
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表