Macaca 线上广告的测试方法

darker50 · 2017年12月29日 · 最后由 darker50 回复于 2018年01月02日 · 528 次阅读
本帖已被设为精华帖!

背景

其实在一些大的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循环点击也是可以的

剩下就是截图分析的方法,目前还没有想好。

代码也放出来吧,有想法的随时可以沟通『点击我下载

共收到 2 条回复 时间 点赞
seveniruby 将本帖设为了精华贴 12月30日 11:57

小白提个问题,如何判断是广告,这里只是举了个例子是吧: if(responseHeader.startsWith("richman")){
System.out.println(responseBody);
if(responseBody.contains("practopbanad")){
不同的广告主,搜索的关键字也是不同的,还需要添加其他的关键字对么?

jamesparagon 回复

我们是采用server对server的端,广告是单独使用一个服务,如我的就是richman开头的就是广告相关的,再通过第二层判断,就知道是哪个位置的广告。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册