精华内容
下载资源
问答
  • DNS-Based Host Blocking for Android This is a DNS-based host blocker for Android. In the default configuration, several widely-respected host files are used to block ads, malware, and other weird ...
  • Android仿360恶意广告拦截扫描UI效果源码基于安卓开发的可以实现广告拦截功能.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • AdAway is an open source ad blocker for Android using the hosts file and local vpn. For more information visit Installing There are two kinds of release: The preview builds: on the bleeding edge of ...
  • 浏览器自带-安卓广告拦截操作说明口碑比较好的 Via、夸克和 X浏览器都带有广告拦截功能。夸克浏览器貌似是默认开启的,Via在设置——通用——广告拦截开启,X浏览器在菜单第二页开启(单击一次开启,点击第二次开启...

    86a9fb7c036a3c5537153fa7e284042b.png

    悬浮闪动的弹窗广告和牛皮癣一样铺满全屏的低质广告,极大地破坏了浏览网页的体验。通过启用浏览器自带的广告拦截功能,或为浏览器安装广告拦截插件,能够还原网页原本的清爽真容。

    浏览器自带-安卓

    广告拦截操作说明

    77439e05826a1ae2eaa122b4ba989b8b.png

    口碑比较好的 Via、夸克和 X浏览器都带有广告拦截功能。夸克浏览器貌似是默认开启的,Via在设置——通用——广告拦截开启,X浏览器在菜单第二页开启(单击一次开启,点击第二次开启强力拦截)

    fb8ce94ea241acfe3bc0f3b2e10e8e8d.png

    使用广告标记功能可以针对性的屏蔽遗漏的广告。Via 和 夸克都是长按广告,呼出功能菜单来屏蔽,X 浏览器是要先点击菜单中的广告识别再点击广告。

    f046487a836784429120251ecef24b2e.png

    小说时常遇到的悬浮广告如果通过以上方式依然不能去除,可打开 Via 或者 X浏览器(夸克没这个选项或者是我没找到),在设置里找到一个关闭 JS 或者关闭 JavaScript 的选项。刷新,立马消失。

    cd363d869455864f5be531a06a5495ed.png

    以上浏览器下载

    浏览器插件-电脑/安卓

    电脑浏览器插件

    7c5b692576c215054e1a61eec76d7520.png

    无论是 Windows 还是 mac OX ,浏览器广告插件都有很多,我们任意选择一款即可。虫子的 PC 和 Mac 浏览器用的都是 Chrome,插件用的都是 uBlock Origin.

    6cf4eae785d520377e072b42ca14bfc9.png

    刚才看了一下 Mac 上的记录,到今天已经为我拦截了6万7千多次了。插件用法很简单,安装完毕点击启动,之后的日子他将默默为你守护电脑浏览器的一片净土。

    732061dc962ee464586215dcfb1b25e5.png

    如果有漏网之鱼,可以先点击铅笔形状的元素选择器,再点击需要屏蔽的广告,刷新页面,搞定。此外,uBlock Origin 也可以自定义屏蔽广告的规则。

    手机浏览器插件

    uBlock Origin 同样可以安装到安卓浏览器,俄罗斯著名搜索引擎出品的 Yandex 浏览器,可以安装电脑版Chrome的插件。

    展开全文
  • Android应用广告过滤几种方式

    千次阅读 2019-08-01 17:17:33
    前言 说起网页广告,那真是让人又恨又爱,它们不但占用了网页的可视控件,分散用户的注意力,还有些浮动广告干扰甚至误导用户操作。但是广告又是开发者重要的收入来源之一,同样...但对于Android等移动来来说就不...

    前言

    说起网页广告,那真是让人又恨又爱,它们不但占用了网页的可视控件,分散用户的注意力,还有些浮动广告干扰甚至误导用户操作。但是广告又是开发者重要的收入来源之一,同样作为一名开发者,还是挺能理解的。比如我们在做浏览器的同时需要接入新的广告,同时又要过滤掉网页中的广告,这就是一个很正常的现象。说起应用广告过滤对于PC端来说可能更方便,网上有大量各种广告过滤插件。但对于Android等移动来来说就不那么友好了。Android应用的广告过滤方案大概可以分为一下几种方式

     

    分析

    从上图来看,虽然有这几种方式,甚至还有一些方式没有列出来,但其根本可以用一句话来概括:根据规则来过滤URL。其原理可以简单概括如下:

    过滤广告很简单,就是判断页面是否有广告,如果有广告,则不加载这条广告。具体就要从网页加载原理说起了,懂的可以跳过这段。我们知道网页其实就是html+css+js,请求网页的时候,会先根据url来下载html文件,并进行解析,解析到需要加载的css和js以及图片视频等资源的时候,就会去下载这些文件。也就是说,每一个文件的下载都对应一条url,打开一个网页,可能需要下载数十上百个文件,也就有这么多的url。所以我们可以针对每一条url进行判断,看其到底是不是会产生广告的url,或者就是广告的资源。

    1.代理方式:

    1.1 服务器方式:对于一个应用如果数据来源于指定的服务器,只需要我们在指定的服务器这里控制好资源请求与分发即可,那么应用相对来说去广告的效率更好,因为资源的过滤运算均在服务器,而不在移动端,相对来说更可维护,但这样的对服务器的任务又是一个问题了。

    1.2 AdBlockplus: 世界上的网站何止千万,而这些网站的内容又随时都有可能发生变化。因此,AdBlockPlus想出了一个解决方案:通过社区来维护一个规则表,然后根据这个规则表来过滤url,同时让用户自己动手,参与到制作这个规则表的过程中来,以成千上万的用户来对抗千变万化的广告。一个app,没有系统级的权限,是怎么能够对整个手机的流量进行过滤的呢。其实很简单,AdBlockPlus自动对手机设置了代理,代理到本机的2020端口,然后建立了一个简单的代理服务器,将所有的网络请求都统一通过这个代理来处理,从而达到全局的广告过滤效果。当然,当使用数据流量的时候,需要root权限,在4.0版本以上的wifi下的代理设置,也需要root权限,或者手动进行设置。我们先不管AdBlockPlus的代理服务器那部分功能,只看其核心的部分,也就是下载并读取规则文件,然后根据规则文件来判断url是否应该被过滤。如果你看过其安卓源码,你就会惊讶的发现,里面居然是用jni实现的,再仔细看的话,会发现jni的代码只是封装了静态链接库里面的内容,真正干活的部分都在静态链接库里,至于静态链接库里面的源码,就得装上git,hg,然后按照使用说明,才能同步下来整个代码库。这还不算完,因为估计是为了能跨平台使用,其核心部分代码是用js写的。AdBlockPlus就是通过V8引擎来执行js代码的,而js代码和V8引擎,都先通过交叉编译,被整合到了静态链接库中,最后通过jni封装以后,编译成动态链接库来Android使用。可以说AdBlockPlus的核心就是对规则库的解析和匹配了,所以如果想修改AdBlockPlus的核心代码,则需要修改js、编译V8才行,或者使用java完全重写js代码的内容,而如果只想快速的将AdBlockPlus的广告过滤功能应用到自己的app中,就只能把原封不动的使用现成的模块了。

    2.WebView自处理:

    2.1 shouldInterceptRequest拦截:通过WebViewClient的源代码发现里面有个回调方法WebResourceResponse shouldInterceptRequest(WebView view, String url)这个方法中的url参数可以获取到所有的请求链接,我们需要一个规则文件里面包含大量广告host,每次获取url判断host规则文件中是否包含次链接/js名称/规则,对url进行解析对比判断是否为广告,如果是就对其进行拦截。

    2.2 onPageFinished过滤:既然PC端能够通过js实现广告过滤,那么Android端同样也可以实现,即通过webview调用js脚本即可。

      /**
         * 注入js代码,获取当前页面所有的img
         *
         * @param view WebView
         */
        private void parseHTML(WebView view) {
            view.loadUrl("javascript:function getImgslist() {\n" +
                    "  var imgs = document.querySelectorAll(\"body img\");\n" +
                    "\n" +
                    "  if (imgs && imgs.length <= 0) return \"\";\n" +
                    "  var imgsArr = [].slice\n" +
                    "    .call(imgs)\n" +
                    "    .map(function(el) {\n" +
                    "      return el.src;\n" +
                    "    })\n" +
                    "    .filter(Boolean);\n" +
                    "\n" +
                    "  return imgsArr;\n" +
                    "}\n" +
                    "window.local_obj.showSource(getImgslist());");
        }
    

    可在方法onPageFinished 方法中调用改脚本,即可以实现相关功能。

    总结

    以上为广告过滤在Android中使用的几种方案,简单的概括为:在应用发起请求或者收请求去按照规则过滤相关url。当然广告过滤的方法远不止这几种,如果有其他方式欢迎交流讨论,但规则始终逃不过按照规则过滤url。

    如果你看到了这里,觉得文章写得不错就给个赞呗!欢迎大家评论讨论!如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足,定期免费分享技术干货。谢谢!

    展开全文
  • Android 仿360恶意广告拦截扫描UI效果源码 比较有学习意义 免费下载
  • 仔细想想,如果想得到上面效果,就必须知道你引用了那种广告的类,才肯能判断你加了什么广告。进一步验证,由于假设三中有一种情况是不add广告的jar包也会被查,果断的反编译自己的APK,查看后了然,尽管项目中没有...

    突然有了假设四:扫描所有类文件。

    仔细想想,如果想得到上面效果,就必须知道你引用了那种广告的类,才肯能判断你加了什么广告。

    进一步验证,由于假设三中有一种情况是不add广告的jar包也会被查,果断的反编译自己的APK,查看后了然,尽管项目中没有add,可以在libs下的jar包毅然也被打进了工程,见下图。

    42e8dd618e6c9b00f245f02688c4dbb3.png                              

    73a8fc56d904d2f498a566c5453e61e3.png

    注意对比,看到没,waps的包还是被打进工程了,看到包里的类众猿应该明白了把,成功就在眼前,因为大多广告平台由于要把SDK给开发者用,都会把不同的广告做成不同的类,再看类的命名就一切都明白了。

    以防万一自己模拟了一个广告SDK的包名、类名,果然被查出广告。

    至此得出结论:反广告软件通过扫描程序内所有类文件,根据其包名、类名确定广告平台以及广告种类。

    最后抛出一个问题,他是如何获取到程序所有类名。由于packageinfo和ApplicationInfo都没有关于所有类的描述,最后找到了方法,不废话了,直接代码给大家

    [java] view plaincopy

          String path = "";

    try {

    path = getPackageManager().getApplicationInfo(

    "com.xxx.xxx", 0).sourceDir;//获得某个程序的APK路径

    } catch (NameNotFoundException e2) {

    // TODO Auto-generated catch block

    e2.printStackTrace();

    }

    try {

    DexFile df = new DexFile(path);//传如APK实例一个dexfile

    Enumeration s = df.entries();

    while (s.hasMoreElements()) {//遍历出所有类

    String string = (String) s.nextElement();

    Log.i("test", string);

    }

    Log.i("test", df.getName() + "");

    } catch (IOException e1) {

    // TODO Auto-generated catch block

    Log.i("test", "error" + e1.getMessage());

    e1.printStackTrace();

    }

    展开全文
  • WebView 广告拦截浅析

    2021-05-26 13:37:00
    前言查豆瓣 使用的是 WebView 加载页面,在豆瓣的移动页面中存在两到三个的广告轮播图,比较影响阅读体验。所以开始着手看看怎么屏蔽掉广告。在 WebView 中有以下三个方法可以考虑:fun onPageFinished(view: ...

    前言

    查豆瓣 使用的是 WebView 加载页面,在豆瓣的移动页面中存在两到三个的广告轮播图,比较影响阅读体验。所以开始着手看看怎么屏蔽掉广告。

    在 WebView 中有以下三个方法可以考虑:

    fun onPageFinished(view: WebView, url: String)

    fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse?

    fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean

    复制代码onPageFinished方法会在页面加载完毕后回调

    shouldInterceptRequest方法会通知 host Application,也就是启动 WebView 的应用返回WebResourceResponse。如果本地应用返回null,则webView会正常加载资源

    shouldOverrideUrlLoading会在Url被加载前被回调。实现此方法,返回true时WebView将不会加载该Url,否则将会正常加载Url

    此方法仅在主动或被动调用WebView.load(url)方法时才会回调,而页面中的资源加载时是不会被回调的

    比如主动显式调用:webview.load(url)

    被动则是页面中点击链接之后加载

    此方法不适用于POST请求

    基于上述三个方法,我们看看能否做到:

    禁止加载广告域名

    给广告域名请求返回空的数据

    在页面加载完毕后消除广告占位的div或类似元素

    1. 禁止加载广告域名

    根据shouldOverrideUrlLoading()方法的特性,我们几乎无法用之来屏蔽页面中加载的广告。

    在实践中,一般在这处理网页对本地资源的调用,比如最常见的拉起 APP 的操作。

    override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {

    val url = request.url.toString()

    if (url.startsWith("douban:")) {

    // 拉起豆瓣 APP

    handleAppRequest(view, url)

    return true

    }

    return super.shouldOverrideUrlLoading(view, request)

    }

    复制代码

    此方法看起来应该是不行了。这一步也应该没法轻易办到。

    2. 给广告域名请求返回空的数据

    我们把目光聚集到了shouldInterceptRequest()方法,实际上这个方法的功劳最大。我们很轻易就是实现了广告拦截。

    override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse? {

    return if (isAdDomain(request.url.toString())) {

    createEmptyResource()

    } else super.shouldInterceptRequest(view, request)

    }

    fun createEmptyResource(): WebResourceResponse {

    return WebResourceResponse("text/plain", "utf-8", ByteArrayInputStream("".toByteArray()))

    }

    fun isAdDomain(url: String): Boolean {

    return (!url.contains("douban")) or url.contains("baidu")

    }

    复制代码

    前面提起的,此方法会在请求数据前回调。所以我们可以自己构建WebResourceResponse对象返回。

    豆瓣的移动端对接的是百度的推广,所以基本上广告域名都带有baidu的关键字。所以我这样就已经足够了。

    更一般的情况,我们可以自己维护规则列表或者,使用一些公开的规则列表。或者自己收集一下常见的大的推广联盟的链接就可以了。

    3. 消除空白广告元素

    我们给广告请求返回了空数据,但是原有的广告占位元素依然存在。所以我们要用到

    onPageFinished()方法,来删除广告占位标签。

    override fun onPageFinished(view: WebView, url: String) {

    webView.evaluateJavascript(

    "javascript:(" +

    " function() {" +

    " var len = document.getElementsByClassName('Advertisement').length; " +

    " for(var i = 0; i < len; i ++){" +

    " document.getElementsByClassName('Advertisement')[i].style.display = 'none'" +

    " }" +

    " }" +

    ")()"

    ) {

    print(it)

    }

    }

    复制代码

    这里利用了WebView.evaluateJavascript()方法,执行了一段 JavaScript 代码:

    javascript:(

    function(){

    var len = document.getElementsByClassName('Advertisement').length;

    for(var i = 0; i < len; i ++ ){

    document.getElementsByClassName('Advertisement')[i].style.display = 'none'

    }

    }

    )()

    复制代码

    这里的代码需要你根据不同的页面来维护规则。比如豆瓣的移动端广告都用Advertisement作为类名。

    所以获取了个数之后,降之隐藏。

    结语

    至此,我们简单地实现了对豆瓣移动端网页的拦截。

    参考链接:

    展开全文
  • 安卓广告拦截、电脑版广告拦截安卓和电脑的安装文件,开启之后可以拦截广告,可以随时随地无广告看视频。
  • android webview 拦截广告

    2021-06-06 04:36:59
    最初的想法是拦截广告就是拦截加载广告的js,上面的onLoadResource似乎是很合适的函数,只要判断onLoadResource的参数url是否是加载广告js的即可,如果不是广告相关的url正常加载,如果是则不加载。但是在使用...
  • 这是用Kotlin编写的模块化音频广告拦截器的概念证明,具有现代且简单的用户界面。 产品特点 无需ROOT 播放广告时关闭声音 播放任意音频而不是广告 基于插件的设计 支持Spotify 对Soundcloud的支持(实验性) 使...
  • Android 仿360恶意广告拦截扫描UI效果源码,辅助类库、实际项目框架参考、比赛练习案例,学习实例,开箱即用。适用于实际项目开发参考、教学案例、毕业设计、出书项目实例、学生面试前能力提升、开发辅助。
  • android仿360恶意广告拦截扫描UI效果 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
  • 浏览器自带-安卓广告拦截操作说明口碑比较好的 Via、夸克和 X浏览器都带有广告拦截功能。夸克浏览器貌似是默认开启的,Via在设置——通用——广告拦截开启,X浏览器在菜单第二页开启(单击一次开启,点击第二次开启...
  • 安卓Android源码——仿360恶意广告拦截扫描UI效果源码.zip
  • Android 第三方应用广告拦截实现

    千次阅读 2017-09-06 23:33:54
    http://blog.csdn.net/u012583459/article/details/47394555
  • 现在大部分的android平台的浏览器都具有广告过滤的功能,同时大部分网站都有广告广告行业是个盈利巨大的产业,就我看来,现在绝大部分的互联网产品,一般有两种营利模式:免费有广告和会员无广告;他们大部分(包括...
  • 我们再PKMS汇总拦截adb 安装的应用,在分析PKMS的时候我们也知道,在installPackageAsUser有如下代码,代表是adb安装的。if ((callingUid == Process.SHELL_UID) || (callingUid == Process.ROOT_UID)) {...
  • Adblock 是一款最为流行的广告拦截器,可以在 Firefox、Chrome、Opera、Safari、Android 和 Internet Explorer 上使用。AdBlock是chrome浏览器中安装量高达4000万,几乎能够屏蔽整个互联网上的广告的一款非常著名的...
  • 支持拦截网页广告,应用程序广告,视频内广告
  • 1、WebView基本用法WebView的基本用法相信大多数android开发者都是会使用的,最简单的就是调用个loadUrl方法,但是记得要在清单文件中添加网络权限。我也简单了写了一个加载百度的代码如是:mWebview=(WebView)...
  • 仿360恶意广告拦截扫描UI效果源码.zip
  • Android 应用广告过滤几种方式

    千次阅读 2019-08-23 08:40:05
    code小生,一个专注 Android 领域的技术平台公众号回复 Android 加入我的安卓技术群作者:Dotry链接:https://www.jianshu.com/...
  • AdBlockerWebview:可以阻止基本广告的WebView。 非常容易为Android项目设置
  • 近日,Android手机用户频频遭遇通知栏弹窗广告骚扰事件在央视报道后持续发酵,许多用户纷纷上网搜寻拦截手机...对于部分未进行Root的Android手机,是无法使用手机安全软件进行广告拦截和隐私监控的,因此Root是第...
  • Android的基于DNS的主机阻止程序这是Android的基于DNS的主机阻止程序。 在默认配置中,几个广受尊敬的主机文件用于阻止广告,恶意软件和其他怪异的东西。 安装适用于Android的基于DNS的主机阻止程序这是适用于...
  • 适用于Android,iOS,Chrome和Opera的新型,更快的广告拦截器 尝试快速Adblock: (Android 5.0及更高版本以及Samsung Internet 4.0及更高版本) (在64位设备,iPhone 5s和更高版本以及iPad mini 2和更高iOS 9和...
  • Blokada是一款适用于Android的免费,开源,紧凑,快速的广告拦截器,适用于所有应用,不需要root。
  • 如今的网站上面广告层出不穷,很多时候会干扰我们正常网站的使用,今天就教教大家安装一款浏览器插件,避免广告烦恼,并且以最容易安装成功的方式来安装。这款插件叫Adblock。是一款谷歌浏览器插件。 1. 下载好...
  • Android 仿360恶意广告拦截扫描

    千次阅读 2015-10-12 17:36:39
    public void handleMessage(android.os.Message msg) { int what = msg.what; pBar.setProgress(what + 1); gallery.setSelection(what); tv_hintTextView.setText((what + 1) + ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,176
精华内容 1,670
关键字:

安卓广告拦截