
Proxy HTTP hackeável para testes de resiliência e condições de rede simuladas
Não mantido ativamente, pode não funcionar com as versões mais recentes do node.js. Se você estiver interessado em manter o toxy, por favor abra uma issue.
Proxy HTTP hackeável para simular cenários de falha do servidor, testes de resiliência de sistemas e condições de rede inesperadas, construído para node.js.
Foi projetado principalmente para testes de resistência a falhas, onde o toxy se torna particularmente útil para cobrir capacidades de tolerância a falhas e resiliência de um sistema, especialmente em redes tolerantes a disrupção e arquiteturas orientadas a serviços, onde o toxy pode atuar como proxy MitM entre serviços para injetar falhas.
o toxy permite que você conecte venenos, opcionalmente filtrados por regras, que essencialmente podem interceptar e alterar o fluxo HTTP conforme sua necessidade, realizando múltiplas ações maliciosas no meio desse processo, como limitar a largura de banda, atrasar pacotes de rede, injetar latência de jitter de rede ou responder com um erro personalizado ou código de status. Ele opera principalmente na camada L7, embora possa simular condições de rede L3.
o toxy pode ser usado fluentemente de forma programática ou via API HTTP. Ele foi construído sobre o rocky, um proxy HTTP orientado a middleware completo, e também é plugável no connect/express como middleware padrão.
Requer node.js +4.
Existem algumas outras soluções semelhantes ao toxy no mercado, mas a maioria delas não fornece um controle programático adequado e geralmente não são fáceis de modificar, configurar ou são diretamente fechadas à extensibilidade.
Além disso, a maioria dessas soluções opera apenas no nível de pilha TCP L3, em vez de fornecer abstrações de alto nível para cobrir requisitos comuns no domínio específico e na natureza do protocolo HTTP L7, como o toxy tenta fornecer
o toxy traz uma solução poderosa, hackeável e extensível com uma abstração conveniente, mas sem perder as capacidades adequadas de interface de baixo nível para lidar facilmente com primitivas do protocolo HTTP.
o toxy foi projetado baseado nos princípios de composição, simplicidade e extensibilidade. Através de sua camada de middleware hierárquica específica de domínio embutida, você pode facilmente aumentar os recursos do toxy de acordo com suas necessidades.
O toxy introduz duas diretivas: venenos e regras.
Venenos são a lógica específica que infecta uma transação HTTP de entrada ou saída (por exemplo: injetar latência, responder com um erro). Uma transação HTTP pode ser envenenada por um ou múltiplos venenos, e esses venenos também podem ser configurados para infectar tráfego tanto em nível global quanto de rota.
Regras são um tipo de filtros de validação de correspondência que inspecionam uma requisição/resposta HTTP para determinar, dadas certas regras, se a transação HTTP deve ser envenenada ou não (por exemplo: se os cabeçalhos correspondem, parâmetros de consulta, método, corpo...). As regras podem ser reutilizadas e aplicadas a ambos os fluxos de tráfego de entrada e saída, incluindo diferentes escopos: nível global, de rota ou de veneno.