之前研究过这个 DNS hack,最早是 http://ottnt.com 论坛的 ttvast 发现的。其实 Apple TV 那个 Trailer 【预告片】功能是个基于 XML 和 JavaScript 的浏览器程序,使用 HTTP 协议访问苹果服务器上的特殊 XML 格式文件从而决定展示的内容。
之前版本的 Apple TV 打开 Trailer 后访问的 XML 文件是 http://trailers.apple.com/appletv/index.xml,你可以下载回来研究一下,格式非常简单。不过最近一次版本升级后似乎做过改动,首先访问的是 http://trailers.apple.com/appletv/us/js/application.js 这个 JavaScript 脚本,然后通过这个脚本加载 http://trailers.apple.com/appletv/us/nav.xml 这个 XML 文档。代码非常简单明了,花点时间逆向工程一下就可以实现自定义的用户界面了。
因为这个 hack 并不改动 Apple TV 本身,所以对设备非常安全可靠,不存在越狱失败变砖的风险【Apple TV 3 的越狱到现在为止都还没有实现,导致只支持 720p 但可以越狱装 Plex/XMBC 的二手 Apple TV 2 价格被炒得老高】。不过就是对媒体格式有要求,只支持 MPEG 标准的 MP4/H.264/AAC/AC3 格式,如果要播 MKV 容器的视频需要自己 remux 或者 transcode,稍微费劲。
我本来想自己弄个界面播放局域网 NAS 上的视频,这样就不用把所有视频都放在 iTunes 里面还得保持 Mac 开机才能用 Apple TV 看。后来发现其实用 iPhone 通过 HTTP 访问 NAS 的的视频然后 AirPlay 到 Apple TV 简单得多,而且显然 iPhone 控制起来比那个破红外遥控器好使多了,就懒得弄了。哪天苹果发现这个问题把 Trailer 改成 HTTPS 协议访问了这个 DNS hack 就不好使了。这个风险确保了这个 hack 只能用来玩票,没法基于这个做商用。不少人都盼星星盼月亮盼苹果赶快出 app store for Apple TV 呢〜