Apple TV 买来本来就是纯粹为了方便 AirPlay 而已,当发现在上面看油管很爽后就开始想办法折腾出能让它科学上网的方法。虽然 tvOS 算是 iOS 的一套子系统,但 VPN 的支持十分有限,好在 WiFi 中的 http 代理设置和 iOS 保持了一致,通过 Apple Configurator 可以将需要的 Profile 添加到 Apple TV 中,那么剩下的问题就是如何折腾出一个靠谱省心的 http 代理。

SS 无疑是现在最靠谱的方案,外加我有一个树莓派,也可以趁此将它利用起来。

安装 SS

首先安装 Python 和其他相关的组件,然后通过 pip 安装 SS

apt-get install python-event python-pip python-m2crypto

export LC_ALL=C
pip install shadowsocks

和其他搭建 SS 服务器不同的是,这次需要将树莓派作为客户端连接到我的 SS 服务器上。

{
	"server": "example.com", // your_ss_address
	"server_port": 1234, // your_ss_port
	"local_address": "127.0.0.1",
	"local_port": 7777,
	"password": "changeme", // your_ss_password
	"timeout": 600,
	"method": "rc4-md5", // your_ss_encryption
	"fast_open": false,
	"workers": 4 // suggest same as your cpu cores
}

启动本地代理

sslocal -c your_config.json > /dev/null 2>&1 &

和 ssserver 不同的是,sslocal 将作为客户端连接至远程服务器并在本地建立起 sock5 代理,接下来我们需要将 sock5 服务器转换为 http/https 代理,这样才能在 Apple TV 上使用。

安装 Privoxy

apt-get install privoxy

配置自己的 privoxy action 文件,例如 example.action

{{alias}}
socks5 = +forward-override{forward-socks5 127.0.0.1:7777 .}
direct = +forward-override{forward .}

{socks5}
/

{direct}
.ip.cn
.chinaz.com

其中的 socks5 地址和端口与之前 ss 配置文件中的保持一致,action 中将所有请求转发至 ss 的 sock5 代理。Privoxy action 还支持更高级的过滤及转发规则,在这里我没有特殊需求,简单的转发所有请求就行了。

将 action 添加到 config 文件中 actionsfile example.action 并修改 listen-address 0.0.0.0:8118

启动 Privoxy systemctl -l start privoxy.service

至此代理服务器已经成功设置在 raspberrypi.local:8188 最后将相关命令添加到 /etc/rc.local 中就可以实现每次重启后相关服务自动启动了。