目下大部分的android平台的浏览器齐具有告白过滤的功能hhhh55.com,同期大部分网站齐有告白。告白行业是个盈利远大的产业,就我看来,目下绝大部分的互联网居品,一般有两种渔利景观:免费有告白解析员无告白;他们大部分(包括网站和APP等)盈利着手即是告白。算作用户而言,对告白相等反感,可是互联网上的管事咱们能免费享受与相沿这些管事得以不时与成长却成绩于告白。
优酷告白
百度了一下,网上竟然莫得Android浏览器屏蔽告白的代码完了,是以极来宾只可我方脱手了。网页上的告白一般是站长在网页植入一段js代码,要念念屏蔽告白只需要将这些js屏蔽掉即可。 巨乳无码
WebViewClient的几个回调函数
要念念对Webview完了一些高等操作,率先要学习WebViewClient的用法,这是Webview几个常用回调函数
1、public boolean shouldOverrideUrlLoading(WebView view, String url) : 在点击申请的是勾通是才会调用,重写此按序复返true标明点击网页内部的勾通仍是在刻下的webview里跳转,不跳到浏览器那边。
2、public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error):
重写此按序不错让webview惩处https申请。
3、public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event):重写此按序才智够惩处在浏览器中的按键事件。
4、 public void onLoadResource(WebView view, String url) :在加载页面资源时会调用,每一个资源(比如图片)的加载齐会调用一次。
5、 public void onPageStarted(WebView view, String url, Bitmap favicon) :在页面加载开动时调用。
6、public void onPageFinished(WebView view, String url) :在页面加载截止时调用。
初看上头的回调函数,极来宾发现了一个远大的坑,防止告白即是防止加载告白的js,上头的onLoadResource似乎是很相宜的函数,只有判断onLoadResource的参数url是否是加载告白js的即可,要是不是告白关系的url普通加载,要是是则不加载。可是在使用onLoadResource之后才发现根底不成。
这里援用WebViewClient另外一个回调函数:public WebResourceResponse shouldInterceptRequest(WebView view, String url)
shouldInterceptRequest有两种重载。
public WebResourceResponse shouldInterceptRequest (WebView view, String url) 从API 11开动引入,API 21弃用
public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request) 从API 21开动引入
这里极来宾暂且使用shouldInterceptRequest (WebView view, String url)完成对webview告白的防止。
防止告白资源URL
在Webview加载资源时会回调shouldInterceptRequest函数,咱们不错通过重写shouldInterceptRequest函数完了对webview的资源申请进行惩处。进行惩处后复返数据。要是主门径复返的数据为null,WebView会自行申请汇集加载资源。这里有个坑:不是shouldInterceptRequest函数复返null就能屏蔽掉申请!正确的屏蔽申请的边幅:
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
url = url.toLowerCase();
if (!ADFilterTool.hasAd(context, url)) {
return super.shouldInterceptRequest(view, url);//普通加载
}else{
return new WebResourceResponse(null,null,null);//含有告白资源屏蔽申请
}
}
底下是极来宾写的屏蔽告白的NoAdWebViewClient类: 只需使用webview.setWebViewClient(NoAdWebViewClient webclient)即可屏蔽指定webview的告白。
NoAdWebViewClient 屏蔽告白
package cn.wangbaiyuan.webviewadblock;
import android.content.Context;
import android.util.Log;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
* Created by BrainWang on 05/01/2016.
*/
public class NoAdWebViewClient extends WebViewClient {
private String homeurl;
private Context context;
public NoAdWebViewClient(Context context,String homeurl) {
this.context = context;
this.homeurl = homeurl;
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
url = url.toLowerCase();
if(!url.contains(homeurl)){
if (!ADFilterTool.hasAd(context, url)) {
return super.shouldInterceptRequest(view, url);
}else{
return new WebResourceResponse(null,null,null);
}
}else{
return super.shouldInterceptRequest(view, url);
}
}
}
判断URL是否含告白的ADFilterTool类:该类通过判断url是否包含在告白防止库中
package cn.wangbaiyuan.webviewadblock;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
/**
* Created by BrainWang on 05/01/2016.
*/
public class ADFilterTool {
public static boolean hasAd(Context context, String url) {
Resources res = context.getResources();
String[] adUrls = res.getStringArray(R.array.adBlockUrl);
for (String adUrl : adUrls) {
if (url.contains(adUrl)) {
return true;
}
}
return false;
}
}
告白Url资源文献(告白防止库可自行百度更新):AdUrlString.Xml
所谓告白防止库,骨子上是申请告白资源的url书籍,汇集上有多数的告白防止库,读者不错如期更新一下文献来完了对告白的高效过滤。本文屏蔽的边幅相比残暴,但凡含有告白资源的域名十足拦阻。要念念完了更精确的过滤,访友你不错使用通配符匹配url的边幅进行防止,目下PC端的浏览器恰是这么作念的。
ubmcmm.baidustatic.com
cpro2.baidustatic.com
cpro.baidustatic.com
s.lianmeng.360.cn
nsclick.baidu.com
pos.baidu.com
cbjs.baidu.com
cpro.baidu.com
images.sohu.com/cs/jsfile/js/c.js
union.sogou.com/
sogou.com/
a.baidu.com
c.baidu.com
hhhh55.com
光遇10.22免费魔法有什么
10-30
光遇10.22季节烛炬在那边
10-30
炉石神话31.0补丁更新内容
10-30
2024年10月26日小鸡庄园谜底
10-30
光遇10.30免费魔法有什么
10-30
光遇10.30大烛炬在那边
10-30
|