用 golang 实现了 全功能的 socks5 协议,同时兼容 socks4、socks4a,感兴趣的朋友一起来交流交流

2021-08-05 15:44:40 +08:00
 haochen2

github 地址: https://github.com/haochen233/socks5.git

第一次尝试做一个开源项目,就决定用 golang 来实现 socks5 协议。通过这个过程也学习到了不少的东西,尤其是英文文档阅读能力,为了实现地更优雅也是下了些功夫。有能改进地方的还望各位多多指点,感谢!

1896 次点击
所在节点    程序员
12 条回复
Mohanson
2021-08-05 16:07:40 +08:00
https://github.com/mohanson/daze/blob/master/daze.go#L114-L504

socks5udp 部分的代码是我的得意之作.
nutting
2021-08-05 16:09:15 +08:00
有个 gost,我一直在用,很强大
privil
2021-08-05 16:18:39 +08:00
其实 微图瑞也实现了……这两天刚好在转换代理,各种流畅。
haochen2
2021-08-05 17:32:38 +08:00
@privil 嗯嗯,不过威图睿里面的 socks5 没有 UDP 和 BIND 。
haochen2
2021-08-05 17:48:29 +08:00
@Mohanson 感觉你代码里调用 panic 很危险呀
haochen2
2021-08-05 17:53:14 +08:00
@nutting 这个应用支持的东西还挺多的,不过我们这个属于 socks 的库。
Mohanson
2021-08-05 17:53:18 +08:00
@haochen2 因为我可以确定如果代码走到 panic 这一行, 那么程序已经遇到了我无法解决的严重事情, 这个时候再让程序运行着已经没有必要了
haochen2
2021-08-05 18:05:47 +08:00
@Mohanson 我觉得你这里对 socks 协议的处理还是略显粗糙,例如:不支持的地址类型,没有返回对应的错误码、socks5 服务器端不支持 BIND 也没要自己服务器直接 panic 吧,难道不需要向客户端返回 resp 吗?
binbinyouliiii
2021-08-05 18:11:05 +08:00
我看 socks6 协议已经在制定了
araaaa
2021-08-05 18:18:26 +08:00
Trim21
2021-08-05 20:31:00 +08:00
这个 append(append(append 是不是能用 buffer 之类的东西来简化…
haochen2
2021-08-05 21:31:16 +08:00
@Trim21 对确实这块代码写法有点难以阅读, 可以用 bytes.Buffer 来简化代码。

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

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

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

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

© 2021 V2EX