Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用WebResourceResponse shouldInterceptRequest拦截广告

如何使用WebResourceResponse shouldInterceptRequest拦截广告
EN

Stack Overflow用户
提问于 2020-04-30 16:29:48
回答 1查看 136关注 0票数 1

我通常使用shouldOverrideUrlLoading来拦截webview中的广告,但这次,新网站中的广告链接不会被捕获

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public boolean shouldOverrideUrlLoading(WebView view, String url) 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 

但它是在

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public WebResourceResponse shouldInterceptRequest(final WebView view, String url) 

因此,我使用了这个方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public WebResourceResponse shouldInterceptRequest(final WebView view, String url) {
                Log.d("soidfzs", url);
                WebResourceResponse webResourceResponse = null;
                if (url.contains("https://googleads") || url.contains("doubleclick") || url.contains("google-analytics.com") || url.contains("adservice") || url.contains("securepubads")) {
                    Log.d("soidfzs", "here");
                    return webResourceResponse;
                } else {
                    return super.shouldInterceptRequest(view, url);
                }

            }

但是,链接仍在加载并显示广告

那么,我应该返回什么呢?

EN

回答 1

Stack Overflow用户

发布于 2020-09-16 22:17:37

您将返回在if语句之前设置为nullwebResourceResponse,您可以在该语句中检查请求是否可能是广告请求。

然而,shouldInterceptRequestdocumentation声明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* @return A {@link android.webkit.WebResourceResponse} containing the
*         response information or {@code null} if the WebView should load the
*         resource itself.

因此,在返回null时,您是在告诉WebViewClient加载资源本身,即满足广告请求并加载广告。

为了让请求滑动并返回您自己的值,您必须返回您自己的WebResourceResponse实例,它不能为空才能正常工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
return new WebResourceResponse(
        "text/html",
        "UTF-8",
        null
);

在这里,我将mimeType (第一个参数)设置为"text/html",尽管它也可能是其他值,比如"text/plain"

我设置了第二个参数-encoding-to"UTF-8"(和前面一样:可能是其他参数)。

现在到了最重要的部分:我将第三个参数data设置为null

这会导致WebView获得一个有效的WebResourceResponse实例,该实例不是null,但没有数据,这反过来又不会导致任何加载。

请注意,这将触发WebViewClient#onReceivedError,因为WebView客户端实际上无法加载任何内容。这本身不是一个问题,但如果您覆盖了onReceivedError,就需要当心了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61528252

复制
相关文章
android WebView拦截请求详解
WebView的基本用法相信大多数android开发者都是会使用的,最简单的就是调用个loadUrl方法,但是记得要在清单文件中添加网络权限。我也简单了写了一个加载百度的,如下图
用户1108631
2019/08/14
4.3K0
Android中WebView拦截替换网络请求数据
Android中处理网页时我们必然用到WebView,这里我们有这样一个需求,我们想让WebView在处理网络请求的时候将某些请求拦截替换成某些特殊的资源。具体一点儿说,在WebView加载 http://m.sogou.com 时,会加载一个logo图片,我们的需求就是将这个logo图片换成另一张图片。
技术小黑屋
2018/09/04
3K0
Android 拦截WebView加载URL,控制其加载CSS、JS资源
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49517537
Hankkin
2018/09/06
3.9K0
Carson带你学Android:手把手构建WebView缓存机制及资源预加载方案
由于 File System是 H5 新加入的缓存机制,所以Android WebView暂时不支持
Carson.Ho
2022/03/24
2.5K0
Carson带你学Android:手把手构建WebView缓存机制及资源预加载方案
红烧嗨鸟
今日菜谱——红烧嗨鸟! 前面有很多读者希望我能讲一讲关于Hybrid的东西,我想劝你们早日放弃,但毕竟有很多朋友都是不到黄河心不死,也有很多朋友是因为打不过PM才被妥协。但不管怎么样,看来我也是得
用户1907613
2018/07/20
5430
移动安全-APP渗透进阶之AppCan本地文件解密
之前渗透app的时候,发现好几款app,拖到jadx里搜不到相关代码,后来发现在assets\widget 目录下有对应的js和html文件,原来都是html混合开发的
辞令
2020/10/29
1.1K0
Android scheme呼起App
Android应用/组件间通信有一种方式是intent,应用可以注册intent filter声明自己对什么样的intent感兴趣,其它应用发送intent时通过系统级广播传递过来,如果与预先注册的intent filter匹配,应用将收到该intent(无论应用是否正在运行,都会被“唤醒”,也就是隐式启动Activity),取出intent携带的数据,做进一步处理
ayqy贾杰
2023/03/15
1.9K0
Android scheme呼起App
Android开发(29) 在WebView中点击超链启动QQ
在Web开发中,我们可以通过一个URL链接,点击后启动QQ,这是很好的用户跳转体验,很方便。
张云飞Vir
2020/03/16
1.2K0
dns广告拦截原理
dns请求是通过udp请求的数据包,很容易伪造响应,导致dns解析到了别的网站,或者解析到中转网站,修改html注入广告
sofu456
2021/12/06
2K0
dns广告拦截原理
onedns配置,拦截广告
让自己的电脑不受到dns劫持我直接选择接入onedns的dns,从此不在受到垃圾广告的骚扰。 拦截色情,暴力,境外敏感,校园网贷等...
堡主
2023/03/04
1.1K0
onedns配置,拦截广告
安卓Webview网页秒开策略探索
webview初始化->DOM下载→DOM解析→CSS请求+下载→CSS解析→渲染→绘制→合成
Rouse
2019/07/17
3.6K1
安卓Webview网页秒开策略探索
apicloud的APP文件解密
本文最后更新于2022年06月10日,已超过3天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
田小檬
2022/08/30
9390
点击加载更多

相似问题

为什么shouldInterceptRequest()中的WebResourceResponse返回null?

21

将.gif或.png图像WebResourceResponse回答shouldInterceptRequest

15

公共WebResourceResponse shouldInterceptRequest(WebView视图,WebResourceRequest请求)没有反应。

17

获取webWiev.getUrl()在WebResourceResponse shouldInterceptRequest中的值(WebView视图,String url)

10

在android webview中拦截视频- shouldInterceptRequest()的替代方案

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文