1、前言
利用优酷看视频的我们,肯定为优酷广告犯愁过。一个10来分钟的视频,广告就占了1分钟,十分考验看官的耐心。那么问题来了,优酷广告可否被去掉呢?答案是肯定的,下面就来说说如何去除优酷app的广告。
2、准备工作 用到的工具: baksmali.jar burpsuit dex2jar JD-GUI apktool.jar
3、详细过程 为了分析清楚优酷的广告是如何播放的,进行了抓包分析。在手机上wifi设置代{过}{滤}理,代{过}{滤}理地址设置在电脑上,电脑上用burpsuit进行抓包。然后打开优酷进行播放视频。我发现当放走前面几个定位视频的数据包之后,视频就自动播放了,其中没有广告播放。如果我不抓包,直接点击播放视频是要播放广告的。于是,一个优酷可能的构想就出现了。 第一,优酷视频内容不是走的http。因为截获http数据包并没有让视频播放停止。 第二,优酷先会发送一个http请求,去请求广告播放。一旦这个请求一段时间没有反应,优酷就不会播放广告。
有了上面2个构想,就需要去验证。在抓去优酷视频一些数据包的时候,一个域地址引起了我的注意:ad.api.3g.youku.com。直觉认为这个域地址就是用来客户端请求广告数据的。 定位。发现优酷的数据包中,host是ad.api.3g.youku.com的数据包有2个,一个是ad.api.3g.youku.com/adv/startpage。另外一个是ad.api.3g.youku.com/adv。那么就需要在代码中去找这两个点。 下载优酷app,使用baksmali对其进行反编译。然后寻找关键代码。 仔细看,也就是3个smali文件带有这个关键字。分别是: 1、com/youku/http/URLContainer.smali 2、com/youku/phone/Youku.smali 3、com/youku/player/util/URLContainer.smali 为了方便,使用dex2jar对优酷的dex文件进行编译成jar包,使用JD-GUI打开,看java代码更加直接。 对于第一个文件。首先定义了两个变量OFFICIAL_YOUKU_AD_DOMAIN和YOUKU_AD_DOMAIN,都被赋值成ad.api.3g.youku.com。
对于OFFICIAL_YOUKU_AD_DOMAIN我没有看到哪里在使用,倒是YOUKU_AD_DOMAIN,在下面代码中有使用到。
这就是一个拼接url的语句。这个拼接正好在burpsuit可以体现出来。拼接的数据包是ad.api.3g.youku.com/adv/startpage类型的。 那么需要找到第二个点。 对于第二个文件,里面只是定义这个关键字,并没有做什么操作。还有一些testapi在里面。 对于第三个文件,也只是一些定义,并没有看到什么拼接利用的地方。
因为在这三个文件中,ad.api.3g.youku.com都被赋值给了YOUKU_AD_DOMAIN,以及OFFICIAL_YOUKU_AD_DOMAIN。所以,还需要查找是否在其他文件中有这两个关键字。
归结起来,也就是下面几个文件存在关键字YOUKU_AD_DOMAIN。 com/youku/http/URLContainer.smali com/youku/phone/Youku.smali com/youku/player/config/YoukuController.smali com/youku/player/util/URLContainer.smali 继续上面的分析,会发现在在YoukuController.smali里面有这么一句: public String getAdDomain() { returnURLContainer.YOUKU_AD_DOMAIN; } 所以,继续在smali源代码寻找getAdDomain这个关键字。存在这个关键字的文件如下: com/youku/player/apiserver/PlantformController.smali com/youku/player/util/URLContainer.smali com/youku/player/util/URLContainer.smali 仔细分析,发现也是在URLContainer里面发现了这么一句代码:
加上后面的一些拼接操作,发现最后拼接的类似ad.api.3g.youku.com/adv。这样截获的两个关于ad数据包来源基本上确定了。
总结下: 我们上面的猜想是正确的(上面说了那么多,其实没有卵用)。那么要去掉优酷app广告,可以怎么做。对,反编译源代码,将 http://ad.api.3g.youku.com 这个地址替换成一个无效的网址就可以了。优酷就不会取拉取广告了。 用同样的办法取搞了爱奇艺等,发现他们都不是这样进行获取广告的,是跟视频数据一起推送过来的。 反编译的优酷app我这里就不上传了。大家自己按照方法自己重新打包一下优酷就行了。 广告不在有。
|