梗概大概是:
我尝试用 IE 11 ( UA 支持页面写的一个浏览器,另一个选项是 Firefox )看 29+1 ; IE 会反复刷新播放器,无法加载,并且页面提示错误 2002 ;根据 console 来看,有多次失败的 HTTPS 请求;根据 network profiler 来看,播放的文件是 http://api.airpana.com:58000/media/uam111706648z4/uam111706648z4.m3u8
。
查看该文件,发现
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-KEY:METHOD=AES-128,URI="https://airpana.com:58001/media-info/uam111706648z4/"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="Mult_Audio",NAME="Chinese",LANGUAGE="49",DEFAULT=YES
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1200000,AUDIO="Mult_Audio"
uam111706648z4_video1.m3u8
其中 uam111706648z4_video1.m3u8
列举了一些 .ts
文件,所以没必要继续追究下去。而 https://airpana.com:58001/media-info/uam111706648z4/
无法加载成功,因为它使用了有效期错误的证书(我没看具体的有效期)。
解决方法是在 IE 里面先绕过 SSL/TLS 的安全要求,强行把文件(密钥和另一个这里没有提到的资源)下载下来,然后本地自签发、自信任一个证书,用 IIS host 一个用来劫持的网站,最终实现了观看电影大计。
特别注意,这个方案是考虑在航班上我没有网络的情况下产生的——我不能去下载一个 AES 解密软件。实际上我可以用 iPhone 上网,但我没有参加 前程万里 常旅客计划,所以购买的 Internet access 不能在设备之间切换,而我不想为了看这个免费的电影再花至少 10 美元( 1 小时的价格)。
此外,另一个可能的解决方法是临时修改系统时间,使得证书“重新有效”,但是这样的解决方法是不好的——用整体修复局部错误。