Proxy Implemention

in 开发 with 0 comment

小水一篇SS的实现

代理服务器的实现

梯子的实现对我而言一直像迷一样可望不可及,直到有一天去看了一下Shadowsocks协议的实现,如果不使用AEAD的话,你会发现真的很简单:

首先,Shadowsocks 是一个 Socks 加密协议代理软件,工作原理如下:

  1. 开一个 Socks 服务端,接受外部请求。
  2. 将 Socks 协议使用协商好的加密算法加密,准备发送到远端。
  3. 如果是第一个数据包,那么先发送一个向量(固定长度),然后发送数据。
  4. 因为选用的加密类型为流加密,所以并不存在数据帧的概念,每一个字符都可以拿来解密。
  5. 远端服务器解密后,使用 Socks 的协议的方式转发请求。

如果我们不是为了混淆的话,那么一点点的加密实际上已经绕开 GFW,访问我们想要访问的数据了。
当然,这是一场猫抓老鼠的游戏,GFW在最近加大了它的审查力度,于是很多时候,我们需要把自己伪装的更好,我们只是为了访问下 Google,获取自己想要的资料而已。

具体的协议可以查看 https://shadowsocks.org
最近在研究代理客户端的实现,有机会在放出来。