好友
阅读权限 100
听众
最后登录 1970-1-1
本帖最后由 wushaominkk 于 2021-1-12 10:55 编辑
快过年了,准备刷一波剧,发现以前写的
【Android】利用爬虫将电影网站打包成一个APP(8.26更新)
这个已经失效了,准备再搞一波.这次不写界面了太麻烦,直接用webView嵌套网页.
嵌套进去发现广告贼特多,各种悬浮页面根本无法用.在浏览器上输入网址按F12调整手机模式
各种恶心的广告就弹出来了,在网页上找到下面广告的标签
[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方法过滤链接
刚开始我是简单粗暴把.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';这个代码
以经验来看,这个极有可能是,
我们来搜索下那个广告的标签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}`;
就是他没错了,动态加载的标签
我们再看看这个文件请求头
找到这个链接直接在第一步给他屏蔽了,这样他就不会动态加载标签了
按照这个方法把其他的部位的广告都给屏蔽掉
最后放一张效果图
免费评分
参与人数 3 吾爱币 +12
热心值 +3
收起
理由
苏紫方璇
+ 10
+ 1
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
没事路过
+ 1
+ 1
谢谢@Thanks!
Natu
+ 1
+ 1
用心讨论,共获提升!
查看全部评分
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。