Skip to content

Latest commit

 

History

History
28 lines (15 loc) · 1.27 KB

README.md

File metadata and controls

28 lines (15 loc) · 1.27 KB

shadow4j

A proxy server written in Java.

考虑科学上网时才用这个,直接用中文介绍吧!

原理

Shadowsocks 网站对该解析有非常详细的介绍。代理工具的工作流程如下图所示。

测试

在开发过程中如何保证程序的正确性呢?go-shadowsocks2 是官方的 go 语言实现,是可信的。用 go-shadowsocks 来测试我们的程序即可。具体体现在以下两点。

1. 单元测试

在加密算法与秘钥一致时,相同的内容进行加密或者解密,输出必然一样。因此先记录 go 语言的输出结果,然后在对比 Java 语言的输出结果。 结果相同,证明代码逻辑正确。shadow 模块下的单元测试就是这么做的。

2. 程序流程的测试

为了测试整个程序运行是否正常,我写了一个 socks5-dump 来发送 socks5 请求,通过对比 socks5-dump 的输出来验证程序。

另外将这些用来测试的程序都制作成一个 docker 镜像,在开发时可以直接使用。当然,后续可以利用这个了 docker 镜像,可以添加更多的自动化测试。