之前写了一个 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
youthcould 2016-08-12 13:45:26 +08:00
手动点赞
|
2
kappa 2016-08-12 13:47:29 +08:00
题外话,有没有好的 HTTPS proxy server 项目推荐?
|
4
kappa 2016-08-12 13:55:18 +08:00
@nbndco 我倒是想试试 phuslu 的新项目 https://github.com/phuslu/goproxy 方便扩展点
|
5
WildCat 2016-08-12 13:59:07 +08:00 via iPhone
赞!虽然我还没申请到 Network Extension 🌚
shadowrocket 那样的 App 可以不需要 Network Extension 吧? |
6
tyhunter 2016-08-12 14:13:18 +08:00
希望更多类似 Surge 的竞品能够出现
|
7
nbndco OP @WildCat 没用过,我只能猜猜,它用的是什么我不知道,但是想要常驻后台的话唯一的办法就是用 Network Extension ,其他办法苹果一定会拒。他应该是利用 Network Extension 运行代理服务器,在系统设置里设好代理,但是不处理 IP 包的。处理 IP 包这点确实很麻烦,其实也没啥用。
|
11
kappa 2016-08-12 14:34:04 +08:00
|
12
Pyromaniac 2016-08-12 14:51:04 +08:00
这个图标好棒
|
15
xjbeta 2016-08-12 17:03:51 +08:00
梯子架路由器上了 一身轻松。。。
|
16
nbndco OP @n6DD1A640 你之前 clone 过?之前自动生成文档推送到 gh-pages 的分支的逻辑有点问题,现在已经修正了。你删了重新 clone 应该没问题。
|
17
Phant0m 2016-08-12 17:07:24 +08:00
希望作者发布到 Mac App Store 上
|
19
jakes 2016-08-12 18:17:29 +08:00 via Android
发布到 app store 吧,花点钱没事,不要 600+ 就好。
|
20
ProfFan 2016-08-13 00:06:08 +08:00
GPLv3 发不了 App Store 吧。。。
|
22
nbndco OP @ProfFan 所以目前似乎 Specht 只有我本人能发布……这我怎么改好
NEKit 是 BSD 的,大家还是可以用 NEKit 写一个发布 App Store 的…… |
24
Lattez 2016-08-13 10:21:13 +08:00 via Android
看着非常赞……本来已经准备买快要单独卖授权的 surge for mac 了……
|
25
VmuTargh 2016-08-13 11:57:23 +08:00
原来 NEKit 就是尼写的啊。赞一个!
不过窝好像记得开源上 App Store 可以采用源代码一份授权( GPL ),然后二进制一份授权。具体的可以问问有类似经验的开发者 w |
26
nbndco OP @VmuTargh 主要问题是这样的,版权在我,我发布的时候想怎样授权苹果自然都没问题。但我仅给了 GPL 授权之后所有其他人分发的时候必须要提供所有的代码能够重新构建二进制版本。问题是苹果会对用户发布的二进制包进行改动,而这个改动的过程是没有代码的,由于其他人不能进行 GPL 以外的授权,分发其他人上传的软件苹果会违反 GPL ,因此苹果是不上架仅有 GPL 协议的软件的。
|
28
g67261831 2016-08-13 14:06:56 +08:00
点赞,已 star
|
31
alang 2016-08-14 07:25:48 +08:00
要手工写配置文件,时间宝贵,没时间研究。
|
32
tengyoou 2016-08-15 12:15:02 +08:00
懒得折腾,已经花了 648 买了 surge ,为这个开源点赞。。。。
|
33
paradoxs 2016-08-16 18:51:22 +08:00
收藏了, 请务必发到 mac app store
|
34
majinjing3 2016-08-16 19:48:23 +08:00 via Android
点赞!支持下啦!
|
35
blankwonder 2016-08-16 20:33:01 +08:00
支持一下,另外说下 Surge Mac 不使用 NE 的原因是: Mac 环境下通过 tun 转发所有流量代价太大, UDP , ICMP 等等协议都要单独再做一次 NAT 支持,广播包也会有一定影响,且 Mac 中文系统下 NE 有 Bug ,大部分用户会用不了。
|
36
ddqp 2016-08-16 20:42:47 +08:00
@blankwonder 现身说法
|
37
dongoo 2016-08-16 20:49:59 +08:00 via Android
点赞收藏了 👍
|
38
nbndco OP @blankwonder 我想过这个问题,除了 UDP 和 TCP 所有的包都要丢, ipv6 的话可能有更多问题,但是就个人角度完全没有影响。
|
39
tony1016 2016-08-17 09:29:52 +08:00
有意思
|
40
WildCat 2016-08-18 05:19:40 +08:00
楼主您好,想问下你 NEKit 是什么 License ?
看了下没太明白是啥 |
42
tys 2016-08-23 09:16:18 +08:00
@ nbndco 感谢,已经用上了,挺不错的
|
43
ProfFan 2016-08-24 11:21:42 +08:00
@nbndco 这方面的先例就是 VLC 了,可以参考。 VLC 采取的是整体迁移到 LGPL 的办法。
http://blog.tai2.net/lgpl_and_appstore.html#id10 |
45
nbndco OP @chztv ……你自己写啊,不需要可以直接把 rule 删掉,说明里也有写这两个文件应该怎么写的,就是一行一个 ip 或者正则
|
46
iWill 2016-09-09 10:42:58 +08:00
谢谢 lz 分享这么好的 app 。
有个问题请教,就是 SpechtLite 可以像 surge for mac 那样屏蔽广告么? 还有就是规则和 surge 是不通用的么? thanks |
47
nbndco OP @iWill 规则不通用,想屏蔽广告的话建个广告域名的 list 转发到 reject 这个类型的 adapter 去。
|
48
iWill 2016-09-09 11:08:50 +08:00
谢谢告知, NSRegularExpression 这些正则对于我这些 it 盲来说真心看不懂。
顺便问问能否作者出个 sample 出来,例如类似: DOMAIN-KEYWORD,cnzz,REJECT DOMAIN-SUFFIX,3600.com,REJECT DOMAIN-KEYWORD,youtube,Proxy,force-remote-dns 的怎么表达, 因为一直用的 surge ,所以目前转到 SpechtLite 规则有一些不懂怎么转, thanks |
49
nbndco OP @iWill 我随便写一下,你自己理解下:
大致上你需要先定义两个 adapter : - id: proxy type: http/ss 你自己看 - id: reject type: reject 然后定义两个 rule - type: list file: reject_list adapter: reject - type: list file: whitelist adapter: proxy 然后在 reject_list 里: cnzz 3600\.com$ 在 whitelist 里: youtube 要是有人愿意写教程就好了,我真的没这个心情和时间 |
51
chztv 2016-09-09 17:05:43 +08:00
@iWill 这个的规则和 Surge 还是差的比较大,原来以为可以搞个 gfwlist 直接用,一看作者整的格式和 gfwlist 还不一样,唉……
只能下载用最简单的规则试用了下,用肯定是能用,参照了作者 Github 上的配置文件,没有单独配置 list 文件。 最好是有像 Scomper 老师这样的牛人,能整个直接用的配置文件。 |
52
nbndco OP @chztv 其实 SpechtLite 都不是我的本意,而是 NEKit 的副产品,我本身只是把它作为一个 demo 而已。
NEKit 的文档明确指出不建议使用自带的配置文件, NEKit 提供的是功能,配置方式应该由 App 自行处理。 SpechtLite 当前使用的配置文件其实只是 NEKit 提供来快速构建原型用的。 当然我可以直接去支持 gfwlist ,第一我本人不用这种体验不好的方式,毕竟被封的很多网站并不再列表中,还有很多基本无法正常访问的未被封网站,第二支持 gfwlist 本身不符合 NEKit 的设计理念,一个构建原型的组件为何要支持如此复杂的功能?如果 App 想要支持 gfwlist ,那么应当由它自行完成,如果处理过程中需要 NEKit 提供一些通用的基本功能,那么 NEKit 可以实现。 但支持 gfwlist 就意味着 SpechtLite 开始提供超越了 demo 的功能了,这样的话 SpechtLite 需要的改进就太多了, NEKit 本身就有很多的事情还要做,外加我还有很多其他的事情,所以…… |
54
iWill 2016-09-11 22:58:55 +08:00
|
56
jefby 2016-09-14 20:18:24 +08:00
赞👍!很想试试 Specht 啊,但是证书一直申请不下来,太慢了。。
|
57
lzs5240 2016-09-15 00:29:12 +08:00
这个怎么在配置中配置某个 App 呀? 例如 Mail 走代理
|
60
yangpai 2016-10-18 11:57:08 +08:00
同一个 ss 服务端,用 spechtlite 比较慢, 不知道啥原因。 用其他客户端就好一点。
|
62
chaucerling 2016-10-28 10:54:54 +08:00
把 shadowsocksX-ng 换成 spectchlite ,感觉好用多了
我提交了 caskroom ,已经 merge 了,大家可以通过 brew cask install spectchlite 来安装 |
63
chaucerling 2016-10-28 10:57:51 +08:00
@chaucerling 应该是 brew cask install spechtlite ,手快打错了
|
64
nbndco OP @chaucerling 最大的问题就是 cask 和自带更新很难协作
|
65
chaucerling 2016-10-29 23:19:32 +08:00
|
66
nbndco OP @chaucerling 我也不知道,没有研究过 cask
|
67
Esay 2016-11-05 03:11:26 +08:00 1
没有深入看 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. |
68
nbndco OP |
70
dreammes 2016-11-07 22:55:41 +08:00
点赞
|
71
sutra 2016-11-22 11:47:46 +08:00
可以试试 dual-licensing.
|
72
Esay 2016-11-22 14:36:08 +08:00 1
@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. |
73
Esay 2016-11-23 13:17:37 +08:00
@nbndco 花了一些时间试了一下,现在不需要申请就可以运行调试 Network Extension 了。
感谢开源 NEKit ,非常好用。 |
74
jason19659 2016-12-05 13:32:50 +08:00
非常感谢原作者的这款软件。告别了 surge 。。
|
75
wuming 2016-12-09 23:14:59 +08:00 2
感谢作者的工具,写了一个脚本可以生成对应兼容的配置文件, https://github.com/geekpi/SpechtLiteConf
|
76
lazyyz 2016-12-16 14:00:17 +08:00
今天折腾了一下,还是没弄明白,我还是老老实实用 SsX-NG 吧
|
77
ZernonHuang 2016-12-27 09:01:05 +08:00
原来 Specht 和 SpechtLite 都没有上架...微博看到有人在安利,商店搜索了两下没找到。感谢作者的工具 : )
|
78
123s 2017-01-10 21:11:43 +08:00
原来不支持配置某个 app 走代理 ....
|
81
sky586hf 2017-01-18 00:56:00 +08:00
|
84
xy19009188 2017-03-18 21:55:33 +08:00
@wuming 我 fork 一下你的项目,然后自己更新了文件,主要综合了一下 rejectlist ,现在全面去广告了,作为非程序员,表示第一次用 github ,您看有哪些违反规定了吗?我好修改。
|
85
nbndco OP @xy19009188 你要是开源了就没有
|
86
xy19009188 2017-03-19 10:28:36 +08:00
@nbndco 因为我就丰富了 rejectlist 了嘛,我就直接上传了: https://github.com/S7venYoung/SpechtLiteConf-ADB
|
87
nbndco OP @xy19009188 你这个不是我的项目,而且 MIT 协议你可以随意处理
|
88
xy19009188 2017-03-19 11:27:21 +08:00
|
89
Wao 2017-09-22 16:48:53 +08:00
感谢,已经用上了
|
90
weihongchang 2017-10-10 20:06:23 +08:00
问下 mail iCloud 的邮箱。老是 ssl 错误,这个 specht lite 怎么弄?
|
91
weihongchang 2017-10-11 18:08:21 +08:00
@weihongchang 解决了,我的是 https 的 socks 代理关闭就好了
|
92
rove 2017-10-31 17:58:12 +08:00
手动点赞
|