Specht--开源的基于 Network Extension 的 Mac 版代理

2016 年 8 月 12 日
 nbndco

之前写了一个 iOS/macOS 的库,NEKit,还在更新。功能可以自己看,简单点说就是封装了 Surge iOS 的核心功能,包括 tun2socks 。

有一些人想要一个 demo ,所以就把一个我自己写的之前用了很久的代理软件的界面基于 NEKit 写了一个。 功能可以比照 Surge 的核心功能,我就不列了。

Specht 有两个版本。

Specht是基于 Network Extension 的。可以自动设置代理,可以转发所有的 TCP 流,包括所有不支持代理的软件。但是苹果的限制是 Developer ID 是不能签名需要 Network Extension 的应用的,想要用 Specht ,必须要自己用有 Network Extension 权限(需要单独申请,免费)的开发者账户( 99 刀),或者我发布到 Mac App Store 。所以想要用的话,至少你要有开发者账户,然后自行编译签名。你应该可以注意到,不同于 iOS , Surge 的 Mac 版也是不基于 Network Extension 的。所以在这个意义上, Specht 的功能比 Surge 的 Mac 版要强,当然我是希望 Surge 直接基于 Network Extension 上架 App Store 的(这样我估计我也没动力更新 Specht 了),当然别卖 648 就好。 iOS 上的 Surge 很棒(虽然曾经很不稳定),所以我对于写一个 Specht 的 iOS 版完全没有任何动力。

但考虑到这样就几乎没人能用,所以又有了SpechtLite。这个版本可以直接下载,人人可用。不基于 Network Extension 的问题是不能自动设置代理,只有支持代理的应用才能使用,但是如果 Surge 的 Mac 版够用的话,那么 SpechtLite 也是够用的。

如何选择:

  1. 有开发者账户并且有 Network Extension 的权限 -> Specht
  2. 只是想有个基于规则的代理,并且有 Surge 的 iOS 版 -> Mac 版的 Surge
  3. 只是想有个基于规则的代理,没有 Surge 想要 Mac 版的 Surge 的功能但是不在意没有华丽的 GUI -> SpechtLite
  4. 什么都想要而且还不想花钱的,你可以看着 Specht 基于 NEKit 自己写一个。有了 NEKit 其实也就是界面写起来比较烦心

有问题的话可以去 Gitter 问 。

21576 次点击
所在节点    macOS
92 条回复
yangpai
2016 年 10 月 19 日
@yangpai 重新配置了一下, 良好。感谢楼主^_^
chaucerling
2016 年 10 月 28 日
把 shadowsocksX-ng 换成 spectchlite ,感觉好用多了
我提交了 caskroom ,已经 merge 了,大家可以通过 brew cask install spectchlite 来安装
chaucerling
2016 年 10 月 28 日
@chaucerling 应该是 brew cask install spechtlite ,手快打错了
nbndco
2016 年 10 月 29 日
@chaucerling 最大的问题就是 cask 和自带更新很难协作
chaucerling
2016 年 10 月 29 日
@nbndco
自带更新是覆盖原来的 app 文件吗
如果是,那 cask 只是用来安装,像 atom 那样标注一下 "auto_updates" 可不可以?
nbndco
2016 年 10 月 29 日
@chaucerling 我也不知道,没有研究过 cask
Esay
2016 年 11 月 5 日
没有深入看 NEKit 的代码,但是搜索了一下 Github ,并没有使用 NEHotspotHelper ,是不是现在不需要 entitlements 了?

https://developer.apple.com/reference/networkextension

Except when you use the NEHotspotHelper class, you do not need to obtain entitlements from Apple to use Network Extension classes. To request an entitlement to use the NEHotspotHelper class, visit https://developer.apple.com/contact/network-extension.
nbndco
2016 年 11 月 5 日
Esay
2016 年 11 月 6 日
@nbndco 谢谢
dreammes
2016 年 11 月 7 日
点赞
sutra
2016 年 11 月 22 日
可以试试 dual-licensing.
Esay
2016 年 11 月 22 日
@nbndco 发邮件申请,收到苹果的回复说并不需要申请了,直接在 developer.apple.com/account 里可以开启 Network Extension 。

Thank you for requesting information about the Network Extension framework. Please note that as of November 10, 2016 this process is not required for developers who wish to use App Proxy, Content Filter, or Packet Tunnel APIs. To use these services please navigate to your Developer Account at <https://developer.apple.com/account/> and select the Network Extension capability for the App ID you will be using for your app.
Esay
2016 年 11 月 23 日
@nbndco 花了一些时间试了一下,现在不需要申请就可以运行调试 Network Extension 了。
感谢开源 NEKit ,非常好用。
jason19659
2016 年 12 月 5 日
非常感谢原作者的这款软件。告别了 surge 。。
wuming
2016 年 12 月 9 日
感谢作者的工具,写了一个脚本可以生成对应兼容的配置文件, https://github.com/geekpi/SpechtLiteConf
lazyyz
2016 年 12 月 16 日
今天折腾了一下,还是没弄明白,我还是老老实实用 SsX-NG 吧
ZernonHuang
2016 年 12 月 27 日
原来 Specht 和 SpechtLite 都没有上架...微博看到有人在安利,商店搜索了两下没找到。感谢作者的工具 : )
123s
2017 年 1 月 10 日
原来不支持配置某个 app 走代理 ....
sky586hf
2017 年 1 月 17 日
@wuming 这个脚本怎么用啊
wuming
2017 年 1 月 17 日
@sky586hf 已经在 Readme.md 里面写了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/298865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX