Skip to content
张九鹏 edited this page Dec 15, 2017 · 12 revisions

这是什么?

AgentX 是一个基于 NettySocks5 网络代理,用于科学上网,它支持对代理数据流的加密、混淆、压缩和伪装(允许同时配置其中的一项或多项),兼容 Shadowsocks协议(可做普通ss客户端/服务端),可通过网页查看实时流量,并预留了自定义协议开发接口(注:本项目并不是对RFC2741的实现)

如何使用?

开发动机?

在开发 AgentX 前,我见过很多并不可靠的 Shadowsocks 实现,有些仅仅实现了 Table,或是使用固定 IV,甚至有些程序通过异或来加密数据。需要大家注意的是:很多用户以为自己挂代理上网就可以确保安全。事实上,除了https、ssh这些自身加密的流量外,其它流量(如http、ftp)都是需要代理本身来提供加密保障的。因此,使用那些不可靠的 Shadowsocks 实现不仅会增加用户信息泄露的风险(无异于裸奔),还可能会因 GFW 识别到明显的流量特征而影响大家上网的体验。

是的,随着科学上网的普及,GFW 正变得更加强大,如今,除了早期的基于协议分析的关键字审查手段外,GFW 已启用了 DPI(深度包/流量检测)系统:前者能够准确的识别出口流量类型并进行有针对性的封锁;后者则更强大,它用一些加密数据流的流量特征训练分类器,一旦发现用户有访问和谐页面的嫌疑就开始监听、干扰或阻断网络连接。对于那些无明显特征的未知流量,一旦其流量超过某个限定的阈值,GFW 也可能会开始干扰用户当前的访问,严重影响到用户上网的心情。因此,使用混淆、伪装等手段,反制 GFW 的封锁,可使科学上网变得更加科学。

此外,AgentX 还预留了协议接口和数据处理接口,欢迎大家在现有项目的基础上扩展出更加有创造性的协议和功能(如运营商x流)。目前,AgentX 提供了上下行流量压缩,可用于节省流量;随机字节填充包装器,可对极易成为特征的小数据进行包裹(但是会以浪费一部分带宽为代价);多端口重定向,可在必要时有效提高穿越能力(个人建议,如果你有国内的VPS,可以将代理流量先引导到国内的VPS,再直接二次转发到安装了服务端程序的海外VPS,这样能有效屏蔽不同运营商的出口带宽差异,从而大幅提高访问速度)。

众所周知,加密是对数据本身特征的消除,是将有序数据“无序化”的过程。与此相反,伪装则提供了一种强特征,它将目标数据的错误特征暴露出来以达到声东击西的效果。因此,AgentX除了提供了较稳定的加密方案外,还可将加密后的数据伪装在Http协议中,让某墙以为自己正控制着一切...

作者最后声明一点,AgentX 并不是对 Shadowsocks 的简单复现,而是希望为大家提供一套整合的 Socks 翻墙解决方案。

当然还有最重要的一点是:一切为了学习!!!

新一代 AgentX

后续版本 AgentX 将考虑的发展方向:(当然,如果你有其他建议,欢迎提issue一起讨论,更欢迎fork共同开发)

  1. 支持部分免流(对HttpFaker做简单修改即可,利益相关代码作者不提供,感兴趣者请自己实现)
  2. 提供UDP加密代理(用户无需做端口映射,UDP流量通过TCP隧道转发,确保数据成功绕过)
  3. 全流量模拟Http2,Https伪装
  4. 扩展的控制台(Pac模式,远程配置分发,代理环境测试等)
  5. 尝试走Kcp通道的代理模式(提速)

更多

欢迎各种fork及star,感兴趣的朋友欢迎通过gitter交流,有问题请提issue,我将汇总后尽快答复。