当前位置:网站首页 > 横幅广告 > 正文

去广告的js脚js脚本屏蔽手机广告本

作者:admin发布时间:2021-09-11分类:横幅广告浏览:评论:5


导读:去广告使用脚本去除广告(两种思路)前言   博主平时爱看动漫但是有些动漫需要会员才能看于是博主打算写一个动漫网站的爬虫应用源码来爬取动漫视频这样就可以白嫖各种番剧了嘿嘿;-) ...

去广告的js脚本

去广告使用脚本去除广告(两种思路)

前言

   博主平时爱看动漫但是有些动漫需要会员才能看于是博主打算写一个动漫网站的爬虫应用源码来爬取动漫视频这样就可以白嫖各种番剧了嘿嘿;-) 但是这个爬虫做起来并不像我开始想的这么一帆风顺爬视频源地址的时候遇到了问题因为爬到的地址不是源地址无法直接播放所以只能退而求其次用进行播放。但是播放页面有带颜色的广告还在那里一弹一弹的这肯定不能忍于是就发展出了本文要讲的两种去除广告的思路。

正文

思路1检索出网页的全部元素只保留视频播放相关的元素推荐

思路2根据或id等属性值检索出需要去除的元素并删除

 

思路1

代码

在目录下创建一个js文件pureVideo.js代码如下目录可以自己diy

javascript:window.customScript.getHtml(startvarchilddocument.children;window.customScript.getHtml(childsize:child.length);vararr[];functionfn(obj){for(variiobj.length;i){if(obj[i].children){fn(obj[i].children);}arr.push(obj[i]);}}fn(child);window.customScript.getHtml(arrsize:arr.length);for(variiarr.length;i){vartagNamearr[i].tagName;varidarr[i].id;varplayerDivdocument.getElementsByClassName(player)[0];if(tagName.indexOf(HTML)!-1||tagName.indexOf(BODY)!-1||(tagName.indexOf(HEAD)!-1tagName.indexOf(HEADER)-1)||id.indexOf(mobile-index)!-1||arr[i].parentNodeplayerDiv){window.customScript.getHtml(jumpindex:i);continue;}varclassNamearr[i].className;if(className||(className.indexOf(player)-1className.indexOf(playbox)-1)||className.indexOf(-)!-1){window.customScript.getHtml(removeelementi:i);arr[i].parentNode.removeChild(arr[i]);}}window.customScript.getHtml(finally--arrsize:arr.length);varhtmldocument.getElementsByTagName(html)[0];window.customScript.getHtml(html:html.innerHTML);

 细节解析:

1.开头的javascript:必不可少这是用来声明你这段字符串是js脚本

2.arr数组是通过递归调用fn方法将所有元素都存到数组里

3.window.customScript.getHtml()是我用来输出日志到AS logcat里的

4.for循环里的两个判断前面的判断用于排除掉你要保存下来的元素后面的判断用于删掉你不需要的元素。里面用于判断的tagName和id等属性值在PC浏览器中用F12可以查看。如果你跟我一样需要用PC的浏览器查看手机端网页的html内容请看这里。

警告该文件里不要加任何忽略符号//否则//后面和下面的代码均不会执行我在这个大坑里躺了很久你们千万不要步我的后尘

2.在WebView页面使用上面的javascript脚本

在webView的webViewClient的onPageFinished回调中写入如下代码

OverridepublicvoidonPageFinished(WebViewwebView,Strings){super.onPageFinished(webView,s);try{AssetManagerassetManagergetAssets();InputStreaminputStreamassetManager.open(parser/pureVideo.js//InputStreaminputStreamassetManager.open(parser/removeAds.jsStringBuilderstringBuildernewStringBuilder();intlen0;byte[]bufnewbyte[4096];while((leninputStream.read(buf))!-1){stringBuilder.append(newString(buf,0,len));}StringjsstringBuilder.toString();Log.d(TAG,jsjs);mWebView.loadUrl(js);inputStream.close();}catch(IOExceptionioe){ioe.printStackTrace();}}

细节解析

1.通过AssetManager读取js文件的代码

2.使用webView的loadUrl()方法调用js脚本

思路2的js使用代码跟这个一样讲思路2的时候就不贴代码了改一下文件名就可以了。

3.输出日志流程

 1.创建内部类

finalclassCustomScript{JavascriptInterfacepublicvoidgetHtml(Stringhtml){LogUtils.d(TAGhtml:

html);}}

  2.在初始化webView时把这个脚本类加入到webView脚本库中

mWebView.addJavascriptInterface(newCustomScript(),customScript

 然后你就可以像我那样在js代码里使用这个方法打印日志了。

 

思路2

1.javascript代码

 

javascript:window.customScript.getHtml(scriptteststartvardivListdocument.getElementsByTagName(divwindow.customScript.getHtml(divsize:divList.length);for(variidivList.length;i){varclassNamedivList[i].className;window.customScript.getHtml(className:className);if(className||(className.indexOf(player)-1className.indexOf(playbox)-1)||className.indexOf(-)!-1){window.customScript.getHtml(removedivi:i);divList[i].parentNode.removeChild(divList[i]);}}varheaderListdocument.getElementsByTagName(headerwindow.customScript.getHtml(headerListsize:headerList.length);for(variiheaderList.length;i){headerList[i].parentNode.removeChild(headerList[i]);window.customScript.getHtml(removeheaderi:i);}varbottomListdocument.getElementsByClassName(bottomwindow.customScript.getHtml(bottomListsize:bottomList.length);for(variibottomList.length;i){bottomList[i].parentNode.removeChild(bottomList[i]);window.customScript.getHtml(removebottomi:i);}varh2Listdocument.getElementsByTagName(h2window.customScript.getHtml(h2Listsize:h2List.length);for(variih2List.length;i){h2List[i].parentNode.removeChild(h2List[i]);window.customScript.getHtml(removeh2i:i);}varulListdocument.getElementsByTagName(ulwindow.customScript.getHtml(ulListsize:ulList.length);for(variiulList.length;i){ulList[i].parentNode.removeChild(ulList[i]);window.customScript.getHtml(removeuli:i);}window.customScript.getHtml(scripttestend

结语

  研究这个东西让我有种发现新大陆的感觉因为通过上面的步骤你会发现android和html、js等前端开发语言连接起来了有了上面的思路应该可以搞很多的事情大家可以发散一下脑洞~。~

   使用过程中或者阅读过程中遇到问题欢迎下方留言。

  如果文章有帮到你给个免费的赞和关注吧这是我更新下去的动力谢谢啦~。~

 


已有5位网友发表了看法:

欢迎 发表评论: