A proxy server written in Java.
考虑科学上网时才用这个,直接用中文介绍吧!
Shadowsocks 网站对该解析有非常详细的介绍。代理工具的工作流程如下图所示。
在开发过程中如何保证程序的正确性呢?go-shadowsocks2 是官方的 go 语言实现,是可信的。用 go-shadowsocks 来测试我们的程序即可。具体体现在以下两点。
在加密算法与秘钥一致时,相同的内容进行加密或者解密,输出必然一样。因此先记录 go 语言的输出结果,然后在对比 Java 语言的输出结果。
结果相同,证明代码逻辑正确。shadow
模块下的单元测试就是这么做的。
为了测试整个程序运行是否正常,我写了一个 socks5-dump 来发送 socks5 请求,通过对比 socks5-dump 的输出来验证程序。
另外将这些用来测试的程序都制作成一个 docker 镜像,在开发时可以直接使用。当然,后续可以利用这个了 docker 镜像,可以添加更多的自动化测试。