
Hackbarer HTTP-Proxy für Resilienztests und simulierte Netzwerkbedingungen
Nicht aktiv gewartet, möglicherweise nicht kompatibel mit neuesten node.js-Laufzeiten. Wenn Sie daran interessiert sind, toxy zu warten, eröffnen Sie bitte ein Issue.
Hackbarer HTTP-Proxy zum Simulieren von Serverausfallszenarien, System-Resilienz-Tests und unerwarteten Netzwerkbedingungen, entwickelt für node.js.
Es wurde hauptsächlich für Ausfallresistenztests entwickelt, bei denen toxy besonders nützlich ist, um die Fehlertoleranz- und Resilienzfähigkeiten eines Systems abzudecken, insbesondere in störungstoleranten Netzwerken und serviceorientierten Architekturen, wo toxy als MitM-Proxy zwischen Diensten agieren kann, um Ausfälle zu injizieren.
toxy ermöglicht es Ihnen, Gifte einzustecken, optional gefiltert durch Regeln, die im Wesentlichen den HTTP-Fluss nach Bedarf abfangen und verändern können, indem sie mehrere böswillige Aktionen in der Mitte dieses Prozesses ausführen, wie z. B. die Bandbreite zu begrenzen, Netzwerkpakete zu verzögern, Netzwerk-Jitter-Latenz zu injizieren oder mit einem benutzerdefinierten Fehler- oder Statuscode zu antworten. Es operiert primär auf L7, obwohl es L3-Netzwerkbedingungen simulieren kann.
toxy kann fließend programmatisch oder über die HTTP-API genutzt werden. Es basiert auf rocky, einem voll funktionsfähigen middleware-orientierten HTTP-Proxy, und ist auch als Standard-Middleware in connect/express einsteckbar.
Erfordert node.js +4.
Es gibt einige andere ähnliche Lösungen wie toxy auf dem Markt, aber die meisten bieten keine angemessene programmatische Kontrolle und sind in der Regel nicht einfach zu hacken, zu konfigurieren oder direkt für Erweiterbarkeit geschlossen.
Darüber hinaus arbeiten die meisten dieser Lösungen nur auf der TCP-L3-Ebene, anstatt hochrangige Abstraktionen zu bieten, um allgemeine Anforderungen im spezifischen Bereich und der Natur des HTTP-L7-Protokolls abzudecken, wie toxy es versucht.
toxy bietet eine leistungsstarke hackbare und erweiterbare Lösung mit einer praktischen Abstraktion, ohne dabei die Fähigkeiten einer angemessenen Low-Level-Schnittstelle zur einfachen Handhabung von HTTP-Protokoll-Primitiven zu verlieren.
toxy wurde basierend auf den Prinzipien der Komposition, Einfachheit und Erweiterbarkeit entwickelt. Über seine integrierte hierarchische domänenspezifische Middleware-Schicht können Sie die Funktionen von toxy einfach an Ihre eigenen Bedürfnisse anpassen.
toxy führt zwei Direktiven ein: Gifte und Regeln.
Gifte sind die spezifische Logik, die eine eingehende oder ausgehende HTTP-Transaktion infiziert (z. B. eine Latenz injizieren, mit einem Fehler antworten). Eine HTTP-Transaktion kann von einem oder mehreren Giften vergiftet werden, und diese Gifte können auch so konfiguriert werden, dass sie sowohl den globalen als auch den Routenverkehr infizieren.
Regeln sind eine Art von Übereinstimmungsvalidierungsfiltern, die eine HTTP-Anfrage/Antwort inspizieren, um festzustellen, ob die HTTP-Transaktion vergiftet werden soll oder nicht (z. B. wenn Header übereinstimmen, Abfrageparameter, Methode, Body...). Regeln können wiederverwendet und sowohl auf eingehende als auch auf ausgehende Datenverkehrsflüsse angewendet werden, einschließlich verschiedener Bereiche: global, Route oder Vergiftungsebene.