Toxy是一个hackable HTTP代理,用于模拟为node.js构建的服务器故障场景,系统弹性测试和意外的网络状况。
它主要设计用于故障抵抗测试,当Toxy特别适用于覆盖系统的容错和恢复能力时,特别是在容错网络和面向服务的体系结构中,Toxy可以充当服务间的MitM代理注入失败。
Toxy允许您插入毒药,可选择按规则进行过滤,这些毒素本质上可以根据需要拦截和更改HTTP流量,在该过程中执行多个恶意操作,例如限制带宽,延迟网络数据包,注入网络抖动延迟或用自定义错误或状态码回复。它仅在L7(应用程序级别)下运行。
它可以流利地使用编程或通过HTTP API。它建立在基于Rocky的全功能中间件导向HTTP代理之上,它也可以作为标准中间件在connect / express中插入。
特征:
全功能的HTTP / S代理(由rocky和HTTP-proxy支持)
黑客和优雅的程序化API(灵感来自连接/快递)
管理HTTP API用于外部管理和动态配置
嵌入式配置的特色内置路由器
基于规则的过滤的分层和可组合中毒
分层中间件层(全局和路由范围)
通过中间件轻松扩充(基于连接/快递中间件)
支持传入和传出流量中毒
内置毒药(带宽,错误,中止,延迟,慢读...)
基于规则的中毒(概率,HTTP方法,头文件,主体...)
支持第三方毒药和规则
通过中间件内置平衡器和流量拦截器
从rocky继承API和功能
兼容connect / express(以及大多数中间件)
能够作为独立的HTTP代理运行
市场上还有一些其他类似的解决方案,例如toxy,但其中大多数不提供适当的程序控制,并且通常不容易破解,配置或直接关闭扩展性。
此外,大多数这些解决方案仅在TCP L3级堆栈上运行,而不是提供高级抽象以涵盖HTTP L7协议的特定领域和性质中的通用要求,如Toxy试图提供的。
Toxy带来了一个功能强大的可破解和可扩展的解决方案,并且具有方便的抽象,但不会失去一个适当的底层接口功能来轻松处理HTTP协议原语。
Toxy的设计基于组成,简单和可扩展性的规则。通过其内置的分层领域特定中间件层,您可以轻松地将Toxy功能扩展到您自己的需要。
概念:
Toxy引入了两个指令:毒药和规则。
毒药是感染传入或传出HTTP事务的特定逻辑(例如:注入延迟,回复错误)。一个HTTP事务可能被一个或多个毒药中毒,并且这些毒药也可以配置为感染全局或路由级别的流量。
规则是一种匹配验证过滤器,它检查HTTP请求/响应,以便根据特定规则确定HTTP事务是否应该中毒(例如:如果标头匹配,查询参数,方法,主体... )。规则可以重复使用并应用于传入和传出流量流,包括不同的作用域:全局,路由或中毒级别。
怎么运行的:
↓(传入请求)↓
↓||| ↓
↓ ------------- ↓
↓| Toxy路由器| ↓ - >匹配传入的请求
↓ ------------- ↓
↓||| ↓
↓ -------------------- ↓
↓| 传入阶段| ↓ - >代理接收来自客户端的请求
↓| ~~~~~~~~~~~~ | ↓
↓| ---------------- | ↓
↓| | 执行规则| | ↓ - >为输入的请求应用配置的规则
↓| ---------------- | ↓
↓| ||| | ↓
↓| ---------------- | ↓
↓| | 执行毒药| | ↓ - >如果所有规则都通过了,那么毒化HTTP流
↓| ---------------- | ↓
↓ ~~~~~~~~~~~~~~
↓/ \↓
↓\ /↓
↓ -------------------- ↓
↓| HTTP调度器| ↓ - >将HTTP流量转发到目标服务器
↓ -------------------- ↓中毒与否
↓/ \↓
↓\ /↓
↓ -------------------- ↓
↓| 输出阶段| ↓ - >接收来自目标服务器的响应
↓| ~~~~~~~~~~~~ | ↓
↓| ---------------- | ↓
↓| | 执行规则| | ↓ - >为输出请求应用配置的规则
↓| ---------------- | ↓
↓| ||| | ↓
↓| ---------------- | ↓
↓| | 执行毒药| | ↓ - >如果所有规则都通过了,那么之前中毒HTTP流
↓| ---------------- | ↓发送给客户
↓ ~~~~~~~~~~~~~~
↓||| ↓
↓(发送给客户端)↓ - >最后,将请求发送给客户端,
无论是否中毒
下载地址:https://github.com/h2non/toxy/releases
仅供于学习研究使用,不得非法使用,如非法操作,责任自行承担
你可能喜欢
领取专属 10元无门槛券
私享最新 技术干货