
Proxy HTTP hackeable para pruebas de resiliencia y condiciones de red simuladas
No mantenido activamente, puede no funcionar con las últimas versiones de node.js. Si estás interesado en mantener toxy, por favor abre un issue.
Proxy HTTP hackeable para simular escenarios de fallo del servidor, pruebas de resiliencia de sistemas y condiciones de red inesperadas, construido para node.js.
Fue diseñado principalmente para pruebas de resistencia a fallos, donde toxy se vuelve particularmente útil para cubrir las capacidades de tolerancia a fallos y resiliencia de un sistema, especialmente en redes tolerantes a disrupción y arquitecturas orientadas a servicios, donde toxy puede actuar como proxy MitM entre servicios para inyectar fallos.
toxy te permite conectar poisons, opcionalmente filtrados por reglas, que esencialmente pueden interceptar y alterar el flujo HTTP según sea necesario, realizando múltiples acciones maliciosas en medio de ese proceso, como limitar el ancho de banda, retrasar paquetes de red, inyectar latencia de jitter de red o responder con un error o código de estado personalizado.
Opera principalmente en la capa L7, aunque puede simular condiciones de red L3.
toxy se puede usar de manera fluida programáticamente o mediante API HTTP.
Fue construido sobre rocky, un proxy HTTP completo orientado a middleware, y también es conectable en connect/express como middleware estándar.
Requiere node.js +4.
Existen algunas otras soluciones similares a toxy en el mercado, pero la mayoría no ofrecen un control programático adecuado y normalmente no son fáciles de hackear, configurar o están cerradas a la extensibilidad.
Además, la mayoría de esas soluciones solo operan en la pila de nivel TCP L3 en lugar de proporcionar abstracciones de alto nivel para cubrir requisitos comunes en el dominio específico y la naturaleza del protocolo HTTP L7, como toxy intenta proporcionar.
toxy ofrece una solución potente, hackeable y extensible con una abstracción conveniente, pero sin perder capacidades de interfaz de bajo nivel adecuadas para tratar fácilmente con las primitivas del protocolo HTTP.
toxy fue diseñado basándose en las reglas de composición, simplicidad y extensibilidad. A través de su capa de middleware jerárquica específica de dominio incorporada, puedes ampliar fácilmente las características de toxy según tus necesidades.
toxy introduce dos directivas: poisons y reglas.
Poisons son la lógica específica que infecta una transacción HTTP entrante o saliente (por ejemplo, inyectando latencia, respondiendo con un error). Una transacción HTTP puede ser envenenada por uno o múltiples poisons, y esos poisons también pueden configurarse para infectar tráfico a nivel global o de ruta.
Reglas son un tipo de filtros de validación de coincidencia que inspeccionan una solicitud/respuesta HTTP para determinar, dadas ciertas reglas, si la transacción HTTP debe ser envenenada o no (por ejemplo, si las cabeceras coinciden, parámetros de consulta, método, cuerpo...). Las reglas pueden reutilizarse y aplicarse tanto a flujos de tráfico entrante como saliente, incluyendo diferentes ámbitos: global, de ruta o a nivel de poison.