Saturday, January 14, 2017

关于ShadowsocksR在2016年底的停更事件

事情已经过去了半个月,我想了想还是重新说说半个月前发生了什么吧(本文写于2017年1月14日)

早在2016年12月13日,在ss-libev刚刚push了obfs分支我就知道准备支持混淆了,我在那个时候,我是非常好奇的,好奇在这个混淆推出之后,那些一年前还在极力反对混淆的人会有什么样的反应,所以我也对我周围的人说,我非常期待这个混淆的推出,希望尽快合并到master主分支。

然后到了12月23日,转折点出现了,ss-libev又在obfs分支commit了一个新的混淆,一个名叫tls的混淆,我仔细看了代码,用的办法和SSR的一模一样,使用session ticket方式握手免除证书发送步骤。如果你说混淆早在N年前就有了,没错,几年前就有人弄过混淆,所以之前推出http混淆的时候,我是好奇的,是支持的。然而这个tls混淆所用的方式,是SSR首创的,半年前有其它项目(包括蓝灯)的作者问过我原理,同年9月Tor项目也有人和我交流过这个方案,并向Tor提案,但因为这种方式没有前向安全性而没有采用。也就是说,这个混淆只可能有唯一的参考来源,就是SSR。好吧,既然你用了这个做法,那到时候发布的时候,总应该说明点什么吧,我这样想着,并这样等待着。

等到12月27日,ss-libev把obfs分支以Squash方式合并到master分支(结果就是所有的commit合并成一个),同时obfs分支删除,于是具体的修改记录被抹掉了,这种神奇的合并分支方式让我惊呆了,为什么要选择不保留每个具体修改变化。当然,这天还不止发生这个事,还有某有名且特别贵的iOS APP作者高调宣布要支持这个obfs,而且非常迅速的在当晚10点就发布了支持http混淆的TF,原来当时声称极力反对混淆的人,如今是这样做的啊,速度之快让我佩服,你这么高调,看来某种导致涨价的阴影其实在你心中并不算什么了是吧,我真是服了。我顶着巨大的怒火,继续做我原本要做的事:组建ShadowsocksR organization,我原来的决定是通过圣诞节这一时机,重新开始公开发布,因为已经以不对外公开的方式保持了10个月了,就是为了躲开那些自以为是的喷子们,而这时越来越多开发者和我合作,所以打算重新使用github同步代码,顺便组建团队。

终于到了12月29日,发生了一件更严重的事情(不过这件事情只能保密了),这件事对于我来说,简直是致命性的打击,让我有停止维护的想法,再看看ss-libev那边的issue和文章,一直在刻意避免提及SSR,几个原因全部集合在一起,我感觉我要崩溃了,于是写下了这个公告,也是我第一次从写公告开始,一直哭到晚上睡觉(失眠)。

第二天起来即12月30日,这下不得了,遇到了好多dalao和我谈心,劝我不要停止开发,好几个有影响力的人出现了。而与此同时,知乎聚集了一帮troll,矛盾出现了,到底我应该怎么做好呢?如果要说继续,可我已经说了要停止了,那边还一直在那骂,答案还不断的更新,改了又改。我仔细观察了一些ID,有些ID我是认识的,从去年就一直黑到现在,到上知乎喷我。这时候,我想知道真实的支持比例,不想被这些喷子盖住真实的支持者,因为知乎上支持的答案大多都被举报删掉了,于是晚上开了个投票,并表示,只要有10%的反对票就停止开发,因为我确实觉得,如果反对的都有10%了,那价值就确实没多少了,我花费那么多时间在细节上的处理没有被认同的话。

到了12月31日,投票的比例让我吃惊,连5%都不到的反对票,比ss-android的1星2星的比例还要少,可以认为这个比例是完全正常的。喷子认为这个投票没有意义|做秀|用来给自己台阶|转嫁仇恨,我去,阴谋论学得真好,为什么不去写代码跑去学阴谋论和诡辩?明明一帮都是懂代码的,那我也阴谋一下吧,因为代码写不好所以去当喷子了。但我却在这次投票第一次知道了真实的支持比例,并没有我想像中那么差。同时也知道不少SS站站长表现了对我的支持,发布了支持SSR的公告,真心表示感谢。

然而,知乎的喷子并不止步于此,说什么2016不是说过停更吗(暂时停更四个字你一定要少看两个我能有什么办法),说什么SSR是个团队啦这样那样的,嗯,这句话同样在2015年8月某blog上出现过。 不过从2017年开始,确实就开始是个团队了,由开发者组成的团队,如果要继续黑有多少多少个运营什么的,将来打算怎么收割粉丝什么的,随便黑,我记得佛学里有一句话大概是这个意思,你的心是什么样的,那你看到的别人和世界就是怎么样的。

现在我继续开发,除了想继续把我还没完成的东西继续做下去以外,还想给这些自以为是的开发者通过事实狠狠的给他们一记耳光。还是那句话,请记得SSR是不存在的,SSR是垃圾,SSR的混淆是多余的(SS的混淆就很有用了),协议是无意义的。如不了解SSR,或存有任何疑心,请勿使用。

Sunday, January 8, 2017

ShadowsocksR单端口多用户尝鲜

此文更新于2017-01-08,之后可能会更新出更易于使用的方式,到时候请以最新的文档为准

如果你要尝试这个新功能,首先把服务端和客户端均更新到最新,客户端C#需要4.0.5版或以上,SSR-android需要3.3.3版本或以上。

首先是服务端的配置
服务端把协议(protocol)配置为 auth_aes128_md5 或 auth_aes128_sha1,然后在协议参数(protocol_param)配置所有可用的用户id及其密码,示例如下:

        "protocol": "auth_aes128_sha1",
        "protocol_param": "64#12345:breakwa11,233:zhihuyaowan",

含义:
在#前面的表示每个用户的最大客户端数,照着写这个值或者不填都可以,但必须有#号。在#后,以英文逗号分隔所有的用户,而英文冒号的前面是用户的id,注意这个id必须是范围在 1~2147483647之间,后面的是用户的密码,密码不能有特殊符号,建议仅使用数字和大小写字母

然后是客户端的配置
客户端方面非常简单,需要使用用户id为12345的连接,那么在客户端的协议参数(protocol_param)里面填写 12345:breakwa11 就行了,如果使用id为233的同理,其它参数服务端怎么配置的就怎么写

那既然多用户可以单端口了,那能不能做得更像一个网站?完全可以的,如果是http的话,服务端安装一个nginx之类,把端口开在8080(监听127.0.0.1),然后SSR的端口开在80,同时在SSR的user-config.json里修改参数 "redirect" : "127.0.0.1:8080", 这时,直接用浏览器打开,就可以直接看到你开的网站了,而改成用SSR客户端连接就成了服务端了。不过注意的是这时候最好要开相应的混淆哦ヽ(´▽`)ノ

目前这个是刚出的功能,还在测试中,后端和面板还没有相应的支持,也没有流量控制等,建议几个人自己合玩的时候可以这样用,特别地在某些学校或公司这个功能非常好用的哦。


2017-01-11更新:
现mudbjson模式多用户已支持,简要说明如下:
首先先创建对应的用户id,如果这个id大于65535,那么此用户仅用于多用户模式,小于等于65535时会同时监听这个端口。然后创建多用户端口,相应的protocol_param里就填写能使用这个端口的用户ID(如果这个ID不存在,那添加了也不能使用),以下是配置示例:

[
    {
        "d": 0,
        "enable": 1,
        "method": "aes-128-cfb",
        "obfs": "tls1.2_ticket_auth_compatible",
        "passwd": "vwHF%35j",
        "port": 12345,
        "protocol": "auth_aes128_sha1",
        "protocol_param": "#10001:breakwa11,100002:zhihuyaowan",
        "transfer_enable": 1125899906842624,
        "u": 0,
        "user": "12345"
    },
    {
        "d": 0,
        "enable": 1,
        "method": "aes-128-cfb",
        "obfs": "tls1.2_ticket_auth_compatible",
        "passwd": "E&iWmlxu",
        "port": 10001,
        "protocol": "auth_sha1_v4",
        "transfer_enable": 536870912,
        "u": 0,
        "user": "10001"
    },
    {
        "d": 0,
        "enable": 1,
        "method": "aes-128-cfb",
        "obfs": "tls1.2_ticket_auth_compatible",
        "passwd": "4~fGiKeY",
        "port": 100002,
        "protocol": "auth_sha1_v4",
        "transfer_enable": 10737418240,
        "u": 0,
        "user": "100002"
    }
]


在以上例子中,端口12345是多用户端口(可看成一个公共用户,但无法直接使用),有两个子用户,一个是10001,一个是100002,而10001用户,既可以使用10001端口,也能通过多用户方式使用12345端口。而100002用户只能使用端口12345。在使用端口12345时,实际的使用流量会统计到10001或100002上。

其它:在使用mujson_mgr.py脚本添加协议参数时请使用-G且参数使用英文双引号包起来
如有不明白可留言问

Monday, January 2, 2017

知乎语录(防删用)

作者:梅石坚
链接:https://www.zhihu.com/question/54189771/answer/138642982
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题记: 技术界晚香玉——breakwa11
好像破娃的粉丝很喜欢去淡化过去不开源的事实,并十分不情愿去看SS 作者clowwindy 的发言记录。
我不知道一个根基就是建立在以自我为中心上的,一个致力于玩小圈子文化大力发展核心粉丝的人,之后做这出这样的事情又有何奇怪呢?
我丝毫不意外破娃这次的举动。遥想当年,老美世界第一大国不承认中国地位,时任领导不就是时时对标美国,一直作为假想敌深入国民教育中么?
surge 的影响力很大,率先不支持SSR 引起了我们破娃的愤怒 。破娃一如之前的性格特色,你不支持我就要独立。但是她细想了下,即便自己联合多少免费软件开放者以福利为名的推广合作,也无法撼动surge 在业界的地位。
这时候又学到了很地道的一套,哭嘛。
前天我还在跟友人讲,我真的很想去给破娃的投票刷票,刷到距离放弃线百分之零点一,看破娃怎么给自己找台阶。很好玩的是,昨天公布结果的时候,破娃重点说了句,发现了刷票迹象。
我就纳闷了,有人真的去刷票会饶过你吗?(事实上我并没有刷票)
破娃给自己树立了很多假想敌,但是她真的会去出击么?不会。你看中国不时渲染的气氛,真的会派城管统一银河系么?
所以投票什么的,只是粉丝的初选罢了。
破娃的核心策略和surge 高度相似,先是圈定一部分粉丝,很散的粉丝群。然后通过一定的“大事”筛选粉丝群,将忠诚粉丝群体圈起来,最后就是收割粉丝。9.9美元让大家发现surge 好用,接着喝茶制造大事件,然后涨价圈定核心粉丝。等到火遍各大论坛的时候,盗版机制一出,收割剩余粉丝。破娃学习能力很棒,这不,圈定粉丝后开始收割了。



从与开发者合作推广开始,到现在的公开讲捐款。慢慢看吧,surge 那套,破娃会熟练起来的。(我不反对对于开发者的捐赠行为)
1.2更新:一如既往,我们的破娃开始渲染和 clowwindy 的关系了。SSR 因为SS 而来,现在破娃开始钦定clowwindy 的性别了。

大家有没有觉得这个套路很熟悉啊?
附赠,摘录一段推友的点评:
“希婆这么努力为我们好你们还要抓住她邮件门的把柄黑她”
“不遵守邮件保密规定只是一开始,以后会遵守的”
“希婆输就是因为她是一个女的”
“坚决拥护希婆,美国普通老百姓都是傻逼,灯塔国药丸 ”
然后你们看看这帮人和某些人的论调是不是很像
(已获授权,脑残粉自重请勿打扰原推主)