我花7天搞定了电视上免费看电影的商业APP

故事的起源来自我在拼多多上买了一个看电影tv的会员,因为电视上看电影很多都要VIP,自己有这个需求,加上爷爷也有,所以就买了会员,用了感觉还不错。

就想着,自己也是程序开发行业的人,加上我就觉得这东西需求量大,我要不要也做一个,放拼多多上卖,有了想法我就开发研究了。

下面就是我这近一个多月的研究历程,想你和分享一下成果,更想让一家明白几个道理,一定要遵循原本的想法去做事,不要复杂化也不要理想化;一个东西的制作并不是只有一条路可走,就像人生一样,只有经过多次的试错,反思,才能找到最贴合现在的道路。

下面是我开发TV的过程中尝试的一些方案,最后我选择的是3方案,当然2与3之前会有重叠的部分

  1. 抓包和uniapp开发(11天)
  2. 搭建maccms和flutter开发(11天)
  3. 资源搜索和反编译(7天)

抓包 和 Uniapp开发

抓包提供影视内容的资源,而 uniapp 则是完成 app的开发。

抓包工具的研究

关于抓包工具的选择,window上使用最多的是 Fiddler,而 mac 上则是 charles,手机端我使用的是 httpCanary。

在使用抓包工具的过程中,我遇到了Fiddler一些使用上的问题,也尝试过普通版本everything版本,都无法解决手机上特定app抓不到包的问题。

后来我尝试使用了charles,解决了部分Fiddler抓包不到的问题,为什么是部分呢?因为有一些app它做了代理检测,软件检测到你开了代理,就会闪退或者说是给你断网,这是一种很好的防御机制,但是也不能万全的。

使用 httpCanary 是想尝试下能不能跳过代理检测,但是然并卵,不过用着还是真香,很方便,可以抓大部分app的包,至于用途,懂的都懂。

postman调试

抓到了一些接口,在开发app之前就得完成接口一些调试工作,比如说电影app的接口并不多,重要的也有一两个,但是它们传的参数却有很多,像分类,地域,关键词,年份,二类等等,你需要全部测试一遍,确保接口没有问题再来开发APP,直接一步到位开发页面的同时就对接口了。

uniapp页面TV

一开始选择uniapp,是因为我同时也在做一个使用uniapp的外包项目,并且有个现成的架子,关键是我想多尝试下,不写css开发页面的感觉,用 tailwindcss,作为一个以前是前端我的来说,不知道现在为什么厌倦写css了。

当然使用 tailwindcss 的弊端也显而易见,就是类名太长了,像这样:
file

的标准化,方便性远远大于它的缺点,I like to use it.

为什么放弃抓包方案?

抓包来的接口不受自己控制,视频资源不稳定,稳定的接口又做了大量加密处理,破解成本>开发成本,再加上uniapp在tv上兼容的问题,我放弃了这个方案。

自建Maccms 和 Flutter开发

搭建maccms系统

maccms是一个内容管理系统,可以做电影系统的后台,使用系统自带的采集功能,搭配一些适配平台的采集接口,就可以很方便的完成一个电影网站的搭建。

那么采集的接口从何而来呢?你可以直接百度搜索可以查询到部分,但是效果都不太理想,最好的办法就是到现有的电影网站去抓他们的接口,大部分电影网站都不是自建接口的,都用到了采集接口和maccms系统。

通过分析他们网站的视频地址,可以在搜索引擎上查找,就可以找到对应名称的采集网站,根据采集网站给出的教程,就可以完成指定接口电影的采集。

测试Flutter电影源码

在全世界最大的开源网站github上搜索有关Flutter电影的源码,你可以找到很多,刚开始我是想找一个源码来修修改改的,但是测试下来不是运行不起来就是布局样式不符合要求等。

最后,我决定自己重新开发Flutter tv。

Flutter TV开发

从0开发做一个tv app不是一件容易的事,是我想简单了,期间也解决了不少的问题,如复杂布局,json解析,状态管理等,但是一想到后面兼容tv的问题,还是登录注册接口重构等等问题,我就感觉这个月是完不成了,所以我踏上了另一条路。

为什么放弃Flutter开发方案?

开发周期太长要解决的小问题太多,在tv上的调试可能就会花费我大量的时间,再加上我有了更好的选择,能够更加快速完成这个项目的方案,所以及时止损。

资源搜索和反编译

其实在这个方案中,我有很多次想要放弃,但是一想,都做到这里了,再坚持一下吧,所以,我就成功了,人生呢,更是要如此,敢于挑战和冒险。

tv资源搜索

其实在淘宝上有商家代搭建电影tv,一条龙服务的,但是都是人家操作,你到手的只有修改好的app和一些简易教程,你想再次修改的话,恐怕又得加钱,要做这个,就要把关键技术掌握在自己手里。

我搜索了好几天,反复的测试,android studio调试,从一开始的各种飘红,到每个问题的google,再尝试,再搜索,到成功的在真机和模拟器上运行成功。

运行成功了并不代表项目完成了,通过测试,我就发现了一些闪退,和卡死的状况,由于我没写过android java代码,对于程序遇到的问题,我也是头脑发懵,于是我就从编译源代码到反编译app道路上来了。

反编译app

一开始,我搜索了一些关于反编译的知识和工具,在pc端做了很多尝试,也摸出了一点门道,但是终究解决不了tv app反编译的问题。

电脑端反编译

在pc端,我尝试了,apktool,dex2jar,jd-gui系列工具的组合,由于在某个过程中失败了,反编译apk老是报错就放弃了,现在想来使用这个方案也是可以的,不过得先脱壳。

后来,我用了Android逆向工具,AndroidKiller,jadx,等集成工具做了进一步的研究,也均以失败告终。

手机端反编译

我开始尝试在手机端反编译app,于是就接触到了 mt管理器,了解到它是一款老牌的apk逆向神器,我有一点点小犹豫的花钱注册了论坛会员和软件会员,在论坛看了几篇和tv毫不相关的文章后开发尝试使用mt管理器,解决tv app修改问题。

反编译关键

在此期间,我了解到我要想修改一个app,必需先脱壳,改签名才可以,而脱壳是重中之重,我不会,所以我费尽心思的找到一个未加壳和tv app。

呃,我也不是没有尝试过脱壳,其实也是有成功的经验,就是得用虚拟机来脱,应该是android10以上环境的问题,导致我真机用脱壳工具老是失败,如果你和我一样,可以在手机上装个VMOS试试。

TV APP反编译

对于未加壳app的修改,那是再简单不过了,难点在于你要修改哪里,好在资源包里有一些简单的说明文字,我通过二进制编译软件修改了某个.so文件,这个是关键所在,里面有电影资源和验证系统的域名,修改它,就可以让这个app被你控制,你所有。

后来又遇到了视频资源无法播放问题,一度让我怀疑是不是 m3u8 的视频在android上不能播放,但是在网上搜索又不是这样的,直到我抓包发现了原因,通过逆向dex,查看smail文件,删除了某个东西后,到这里最大的视频播放问题也解决了。

其它的一些无非是修改软件名称,图标,广告等东西。

下面一起来看看成果吧。

成果演示图

file

file

file

file

file

file
文章来源:https://geekape.net

本文系作者 @ 原创发布在 极客猿小兵的博客。未经许可,禁止转载。


极客猿小兵 » 我花7天搞定了电视上免费看电影的商业APP

发表评论