看电视的那点事儿
2025 年 11 月 03 日
最近看电视多了一点。由于 iPad 上看不成 OK 影视,不由产生了这个疑问:为什么 iPad 上没有 OK 影视这类软件呢?
众所周知,OK 影视这种属于壳软件,需要从视频源站下载一些内容之后才能工作。所以苹果的政策上应该是不允许的,这点可以理解。但是,为什么也没有 Web 版本呢?我花了点时间去跟踪了一下。
获取视频站 json
从 OK 影视的界面资源开始追起,很容易找到界面对应的源码在ConfigDialog.java,点击确定后走到onPositive,一路走下去到VodConfig.load(),接下来就可以在VodConfig 的 loadConfig 函数 中查看如何从视频站下载 json 了。
下载的算法不难读懂,视频站通常根据 user agent 去做对应处理,然后返回 3xx 系列跳转。因此用 curl 可以简单模拟请求,将得到的数据写入文件。参考命令:curl -L -H "User-Agent: okhttp/3.12.13" "http://目标站点" -o resp.bin。
但拿到的数据不一定是纯文本,还需要进一步解析。参考源码:Decoder.verify(),数据不同,解析方式也不同。以我看到的 case 为例,收到的数据前半部分是一个 jpg。跳过 jpg 内容后,接下来是包含 ** 的 10 个多余字符。再去掉多余字符后用 base64 解码,得到的就是包含注释的 json,因此解析 json 时还要先去掉注释。
json 对应的内容解析
上面一段对应的是 json 接口解密的内容,这部分其实不需要自己手动处理。如果搜索TVBox 接口 解密,就能找到一系列在线解密的网站,比如 FongMi-TVBox配置接口解密,可以直接看到 json 内容。
对于 json 内容,我没找到对应的协议,因此只是大概推测其中的内容。我看到的内容包括:
- spider 项。不管它看起来像什么,它大概率是一个 jar 文件。
- sites 数组。指定了真正的视频站点的相关信息。其中 type 和 api 说明了 “如何从视频站点获取视频”。api 大概率是需要从 spider 对应的 jar 中去获取代码来执行的。
- logo。这个应该不用解释。
- live。这个对应的是直播,通常是 m3u。
所以简单来说,这个 json 包含的核心是一部分已编译的源码,以及这些源码的使用说明。
jar 的内容分析
jar 本质就是 zip,可以简单解压。在我看到的 case 里,很容易看出以下几点:
- 有 classes.dex。所以这不是 java 的 jar,而是 android 的 jar。
- 可能有 assets,包含一些 so 文件。所以运行代码可能存在 cpu 限制。
结论
开始看代码之前,我的目的其实是,看懂代码之后,想办法在 iPad 上也能看到这些站点的视频。
但看到 jar 内容之后,我就知道这个目的是不可能的了。我看到的 case,限制死了只能在 armv7/v8 的 android 平台运行。要想搬到 iPad 上,工作量可真不是一点半点。
为了看电视这点事,太多人已经做了太多工作,而且大部分源码都不是开放的(纯中立,绝非贬义)。我的理解是,这是为了保护自己的技术选择,无可厚非。