特斯拉车机浏览器是以面板方式打开的,只有打开特定的网页(内置的几个视频网站)才会全屏。最近在小红书上看到一个第三方的网页可以实现任意网页的全屏,遂研究了一下实现方式。

简短说,就是欺骗特斯拉车机打开的是内置的视频网站。具体方式是找到任一内置的视频网站的支持跳转的url,拼接要跳转的url作为参数,先打开视频网站触发浏览器全屏,然后跳转到目标url。

国内利用的是 腾讯视频,但是腾讯视频的跳转服务对目标url有校验,不是所有URL都能跳转,所以搞了二次跳转:先跳转到腾讯视频支持的域名(www.1905.com),再跳转到目标URL。1905.com 的跳转服务其实也有校验,但实现应该只是简单的字符串匹配,所以把这个域名作为参数带在目标url后面就能跳转了。最终的触发URL长这样,对发现这个方式的人表示respect。

https://v.qq.com/search_redirect.html\
    ?url=https://www.1905.com/api/redirec.html\
    ?redirect_url=${ TARGET_URL }}?www.1905.com

所以说啊,处理url一定要先 parse 再分部分判断才比较靠谱,不然就不知不觉间写出漏洞了。(new URL(xxx)).host === 'www.1905.com'

国外的就比较简单了,直接使用 youtube 跳转,没有校验 url。

https://www.youtube.com/redirect?q=${ TARGET_URL }}

特斯拉想要禁也挺容易,加个 redirect hook 判断url域名不在白名单就退出全屏。