Toxy - это взломанный HTTP-прокси для моделирования сценариев сбоя сервера, тестирования отказоустойчивости систем и непредвиденных сетевых условий, созданный для node.js.
Он был в основном разработан для тестирования отказоустойчивости, когда Toxy становится особенно полезным для обеспечения отказоустойчивости и возможностей отказоустойчивости системы, особенно в устойчивых к сбоям сетях и сервис-ориентированных архитектурах, где Toxy может выступать в качестве прокси-сервера MitM среди сервисов для того, чтобы вводить неудачу.
Toxy позволяет вам подключать яды, необязательно отфильтрованные по правилам, которые, по сути, могут перехватывать и изменять поток HTTP по мере необходимости, выполняя несколько злонамеренных действий в середине этого процесса, таких как ограничение полосы пропускания, задержка сетевых пакетов, введение сетевого джиттера. задержка или ответ с пользовательской ошибкой или кодом состояния. Работает только на L7 (прикладном уровне).
Его можно свободно использовать программно или через HTTP API. Он был построен на основе Rocky, полнофункционального HTTP-прокси, ориентированного на промежуточное ПО, а также подключаемый в connect / express в качестве стандартного промежуточного программного обеспечения.
Функции:
- Полнофункциональный прокси HTTP / S (при поддержке Rocky и HTTP-прокси )
- Взломанный и элегантный программный API (вдохновленный connect / express)
- Admin HTTP API для внешнего управления и динамической конфигурации
- Рекомендуемый встроенный маршрутизатор с вложенной конфигурацией
- Иерархическое и составное отравление с фильтрацией на основе правил
- Иерархический уровень промежуточного программного обеспечения (как глобальная область, так и область действия маршрута)
- Легко расширяется с помощью промежуточного программного обеспечения (на основе промежуточного программного обеспечения connect / express)
- Поддерживает отравление как входящего, так и исходящего трафика
- Встроенные яды (пропускная способность, ошибка, прерывание, задержка, медленное чтение ...)
- Отравление на основе правил (вероятностный, метод HTTP, заголовки, тело ...)
- Поддерживает сторонние яды и правила
- Встроенный балансировщик и перехватчик трафика через промежуточное ПО
- Наследует API и функции от rocky
- Совместимость с connect / express (и большей частью их промежуточного программного обеспечения)
- Возможность работать как автономный HTTP-прокси
На рынке есть и другие аналогичные решения, такие как toxy, но большинство из них не обеспечивают надлежащего программного управления и, как правило, их нелегко взломать, настроить или напрямую закрыть для расширяемости.
Более того, большинство этих решений работает только на стеке уровня TCP L3 вместо того, чтобы предоставлять высокоуровневые абстракции для покрытия общих требований в конкретном домене и характере протокола HTTP L7, как это пытается предоставить Toxy.
Toxy предлагает мощное взломанное и расширяемое решение с удобной абстракцией, но без потери надлежащих возможностей низкоуровневого интерфейса, позволяющего легко работать с примитивами протокола HTTP.
Toxy был разработан на основе правил композиции, простоты и расширяемости. С помощью встроенного иерархического уровня промежуточного программного обеспечения, ориентированного на конкретную предметную область, вы можете легко расширить функции Toxy в соответствии со своими потребностями.
Концепции:
Toxy вводит две директивы: poisons и rules
poisons - это особая логика, которая заражает входящую или исходящую HTTP-транзакцию (например: введение задержки, ответ с ошибкой). Одна транзакция HTTP может быть отравлена одним или несколькими ядами, и эти яды также могут быть настроены для заражения как глобального трафика, так и трафика на уровне маршрута.
rules - это своего рода фильтры проверки соответствия, которые проверяют HTTP-запрос / ответ, чтобы определить, с учетом определенных правил, должна ли HTTP-транзакция быть отравленной или нет (например: если совпадают заголовки, параметры запроса, метод, тело ... ). Правила можно повторно использовать и применять как к входящим, так и к исходящим потокам трафика, включая различные области действия: глобальный, маршрутный или опасный.
Как это работает:
Код:
↓ ( Incoming request ) ↓
↓ ||| ↓
↓ +-------------+ ↓
↓ | Toxy Router | ↓ -> Match the incoming request
↓ +-------------+ ↓
↓ ||| ↓
↓ +--------------------+ ↓
↓ | Incoming phase | ↓ -> The proxy receives the request from the client
↓ |~~~~~~~~~~~~~~~~~~~~| ↓
↓ | ---------------- | ↓
↓ | | Exec Rules | | ↓ -> Apply configured rules for the incoming request
↓ | ---------------- | ↓
↓ | ||| | ↓
↓ | ---------------- | ↓
↓ | | Exec Poisons | | ↓ -> If all rules passed, then poison the HTTP flow
↓ | ---------------- | ↓
↓ +~~~~~~~~~~~~~~~~~~~~+ ↓
↓ / \ ↓
↓ \ / ↓
↓ +--------------------+ ↓
↓ | HTTP dispatcher | ↓ -> Forward the HTTP traffic to the target server, either
↓ +--------------------+ ↓ poisoned or not
↓ / \ ↓
↓ \ / ↓
↓ +--------------------+ ↓
↓ | Outgoing phase | ↓ -> Receives response from target server
↓ |~~~~~~~~~~~~~~~~~~~~| ↓
↓ | ---------------- | ↓
↓ | | Exec Rules | | ↓ -> Apply configured rules for the outgoing request
↓ | ---------------- | ↓
↓ | ||| | ↓
↓ | ---------------- | ↓
↓ | | Exec Poisons | | ↓ -> If all rules passed, then poison the HTTP flow before
↓ | ---------------- | ↓ send it to the client
↓ +~~~~~~~~~~~~~~~~~~~~+ ↓
↓ ||| ↓
↓ ( Send to the client ) ↓ -> Finally, send the request to the client,
either poisoned or not
DOWNLOAD TOXY