Total Pageviews

Thursday 17 March 2016

越狱的Iphone的又一个翻墙工具-skia

首先,这又是一个 iOS 的翻墙方案。目前 iOS 上除了历史悠久的 VPN 和 ShadowSocks,还有这段时间才出现的 Surge。skia 这个方案我个人觉得非常优雅,配置灵活性极大,性能上也很优秀,又快又省电,但是对于大多数用户来说,需要越狱也算是一个非常大的代价吧。

skia 的基本介绍

优点和特色功能

  • 直接劫持 TCP 连接,代理对于 App 来说是透明的。
  • 与 shadowsocks 解耦,shadowsocks 和 skia 的更新维护互不影响,skia 可以和任意版本 shadowsocks 甚至其它代理协议搭配使用。
  • 配置文件是 JavaScript 脚本,具有非常高的可定制性,几乎可以满足任意复杂的分流需求。

缺点和局限性

  • 需要越狱,这一点应该已经让很大一部分人无法使用 skia 了。
  • skia 本身就是一堆 hack 的集合,所以可靠性上无论我做得多小心,也难免会遗漏一些极端情况。

和其它工具的比较

另外一个越狱版的 shadowsocks

  • 它也集成了 shadowsocks-libev,但是版本非常旧,会有比如不支持 chacha20 加密方法之类的不便。而且因为耦合程度很高,无法方便地更新。
  • 它通过更改系统代理设置的方式来工作,这个设置是可能被 App 忽略的,所以它无法让某些 App 被代理,如 Facebook 之类的。
  • 它也需要越狱,所以 skia 相对于它没有明显不足,可以替代它。

Surge

  • skia 和 Surge 两者能够实现的功能其实非常相似,不过 Surge 使用的是 iOS 9 公共的 API,可以从网络层进行处理,可靠程度上肯定要优于涉及到私有 API,而且只是从传输层进行处理的 skia。
  • skia 的配置上要比 Surge 强大很多,首先 skia 的配置文件是用 JavaScript 编写的,要比 Surge 的固定格式的规则灵活很多。其次 skia 在配置时支持根据发起 TCP 连接的 App 来判断,而 Surge 不支持,换句话说就是在 skia 的配置里,你可以直接让 Facebook、Twitter 这些 App 的所有网络连接都走代理,而不用管它们访问的域名有哪些。
  • Surge 因为使用了 VPN API,使用的时候对于 iOS 来说就是连接了一个 VPN。但是 iOS 不支持连接多个 VPN,所以使用 Surge 的时候就无法连接其它 VPN 了。这对于一部分用户,比如需要使用公司内网 VPN 的用户来说可能比较麻烦。而 skia 不会造成这样的问题。
  • 由于各种各样的原因,skia 要比 Surge 省电。
  • Surge 只支持 iOS 9 及以上,skia 理论上支持 iOS 7 及以上,不过目前我没有条件在 iOS 9 以前的版本上进行测试。
  • skia 需要越狱,而 Surge 不需要。
  • Surge 10美元,skia 免费!

skia 的工作原理

  • 用户需要在设备上运行一个 shadowsocks 的本地实例(即 ss-local),它会在本地提供一个不需要认证的 SOCKS5 代理服务器。我已经将 shadowsocks-libev 编译到了 iOS 上并以一个单独的软件包提供,skia 附带了一个帮助用户配置它并保持它始终运行的功能。
  • skia 使用运行时 hook 的技术,劫持了 iOS 设备上的程序发起的 TCP 连接,然后根据用户的配置,在需要时将连接重定向到某个 SOCKS5 服务器,换句话说,也就是可以实现将任意 TCP 连接按需通过 shadowsocks 代理。

用法说明

  • 在 Cydia 中安装之后打开 skia 的设置。
  • 第一组设置里可以添加新的 shadowsocks 实例或者管理已存在的 shadowsocks 实例。每一个实例必须使用不同的本地端口,尽量在一些比较大的数字里选择来避免冲突。实例列表里显示了正在运行的实例的监听 IP 地址和端口,在 skia 的配置中使用这些地址和端口作为代理来让 skia 使用相应的 shadowsocks 来访问网络。
  • 配置文件保存在 /var/mobile/Library/Preferences/me.qusic.skia.js。 第二组设置里可以查看或者测试配置文件。测试配置文件时输入一段 JavaScript 代码然后可以得到它在 skia 的 JavaScript 虚拟机中的运行结果,用户可以使用这个功能来确保自己的配置文件没有错误,以及对于指定的网络连接信息能返回期待的代理设置。
  • 打开配置文件预览的时候会自动创建一个样例配置文件,其中有一些注释,介绍了这个配置文件的执行环境中由 skia 提供的一些 API,以及简单的用例。
  • 配置完成之后,需要重新打开某一个应用才能对这个应用生效.
from https://qusic.me/post/skia-transparent-socks-redirector-for-ios/
-------------
  • iOS 设备越狱后,Skia 是更优秀的解决方案,多说一句,只在 Cydia BigBoss 上下载与更新 Tweaks,不要去其他的源,毕竟越狱后是裸奔,没了沙盒。越狱后下载 OpenSSH 用 passwd 把 root / alpine 改了。