其实在一些大的 app 接入广告基本都是接入图片 or 图文广告,基本不会接 H5 广告,原因呢,就是 H5 里面,广告主可以做很多你想不到的事,比如跳一个 xx 网站啊,在后台下载各种资源
之前我们的解决方案就是发现一个有问题的广告,抓数据,然后和广告平台说下,把对应的广告下了,搞的我们很被动,但你要赚别人钱,所以呢,会牺牲用户的体检,生活不易。其实问题是不知道这个对用户自己的影响有多大,要提前把一些问题暴露出来
这里分享的方法,主要是针对两点:
1、H5 广告渲染情况
2、H5 广告适配问题
原理:启动两个线程,一个线程做代理,负责把请求到广告数据保存下来,一个线程进行 UI 点击及截图,数据文件名和截图文件名一致,剩下的就是分析截图,找到有问题的截图,就可以找到对应的数据
代理修改这位共享的代码:点击有喜
把请求压缩的字段去了,在 testProxy.java 中
//删除要压缩传输,减少后期触压操作
httpRequest.headers().remove("Accept-Encoding");
再自己添加一些拦截广告数据的代码加下,在 HttpProxyServerHandle.java 类中
@Override
public void afterResponse(Channel clientChannel, Channel proxyChannel,
HttpContent httpContent,
HttpProxyInterceptPipeline pipeline) throws Exception {
String filePath = "logs/"+testProxy.bq+".log";
String responseHeader = proxyChannel.remoteAddress().toString();
String responseBody = httpContent.content().toString(Charset.forName("gb2312"));
//判断是否含有广告数据,进行拦截
if(responseHeader.startsWith("richman")){
System.out.println(responseBody);
if(responseBody.contains("practopbanad")){
WriteStringToFile(filePath,responseBody);
}
}
clientChannel.writeAndFlush(httpContent);
}
这里使用回调的方法进行 ui 点击,简单的也可以使用 for、while 循环点击也是可以的
剩下就是截图分析的方法,目前还没有想好。
代码也放出来吧,有想法的随时可以沟通『点击我下载』