请问哪里可以看到代理协议的说明文档

2020-06-22 11:43:34 +08:00
 binbinyouliiii

最近在学新的语言,想练练手,想用 55R 的协议练练手实现出来,但是 google 了半天,很少讲到协议相关的东西的文章,做一下伸手党。

socks5 协议因为简单,所以已经实现出来了,主要是代理 client 和 server 之间的协议因为找不到文档和文章阻塞住了

648 次点击
所在节点    问与答
14 条回复
binbinyouliiii
2020-06-22 14:41:34 +08:00
好冷清,木得人吗
SakuraSa
2020-06-22 14:51:55 +08:00
搜索 rfc1928
binbinyouliiii
2020-06-22 14:56:27 +08:00
@SakuraSa #2 Socks5 ?我已经实现出来了,但是 55/55R 还没有实现出来,找不到文档
SakuraSa
2020-06-22 14:56:49 +08:00
传输可以参考 github 上的 v2ray-core
SakuraSa
2020-06-22 15:04:15 +08:00
coolcoffee
2020-06-22 15:09:50 +08:00
我也没找到相关文档,但是参考过别人写的小玩具,然后自己也写过一个小玩具通网。

client 和 server 之间主要就是负责原始 tcp 流的转发。server 上面其实是包含了两个服务的,一个是 socks5,一个是伪装 server 。

假设 Chrome 浏览器需要访问某个网站,一开始的数据流向就是:
chrome => client => server => socks5 server, 后面 socks5 server 处理完之后会把数据往回发,这时候数据流就是反向来的。

你一开始在国内搭 server,简单的实现转发协议就好。等到 server 不在国内的时候,client <=> server 两端就要开始进行混淆了,例如模仿 http 请求,AES 加密等等。

最后,我目前就简单的实现了混淆,性能肯定还比不上知名的项目的,等后面有时间我再去深入研究它们的源码。
binbinyouliiii
2020-06-22 15:11:15 +08:00
@SakuraSa #5 thanks,看了一下好像没有关于如何混淆的文章
binbinyouliiii
2020-06-22 15:14:24 +08:00
@coolcoffee #6 目前主要是卡在如何混淆和加密上,因为没见过样例,不知道传到 server 什么样子的
coolcoffee
2020-06-22 15:44:46 +08:00
@binbinyouliiii 简单点的话,直接通过 chacha20-ietf-poly1305 算法和密钥加密,服务端拿到之后再用同样的密钥解开,反过来也一样。只要保证加解密之后的数据是一致的就行。

你先把 tcp 不加密传递先实现出来吧。
binbinyouliiii
2020-06-22 16:04:22 +08:00
@coolcoffee #9 不加密的话,这个实现没啥难点,大不了再来一个 socks5 。
SakuraSa
2020-06-22 16:09:30 +08:00
混淆的部分我也不是很清楚,按我理解的话:混淆就是把数据套入别的看起来正常的协议中,让通过简单统计的检测算法识别成正常的协议
例如,先发送一个假的 http 请求头,再 body 部分做正常的 io 。如果通过检测请求头的方式检查,就会把这次请求看作是一个 http 协议的请求。
SakuraSa
2020-06-22 16:11:59 +08:00
如果仅仅是发送加密数据的话,虽然检查方不知道你发送的具体是什么数据,但是一看就是加密流,反而特征十分明显。
coolcoffee
2020-06-22 16:19:31 +08:00
@SakuraSa 试下放到 http body 里面?把 content-type 改成影音格式。
SakuraSa
2020-06-22 16:34:15 +08:00
主要不知道检测的具体特征是什么,所以混淆不好做。
例如,如果检测的是字符频率,加密数据流和视频数据流肯定是不一样的。
https 已经是加密数据流了,如果模拟 https 的过程,正文的数据特征应该是统计不出来的。
(不过现在好像很多 https 站本身就被 X 地很厉害

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

https://www.v2ex.com/t/683696

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

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

© 2021 V2EX