Whistle is an HTTP debugging proxy that captures, inspects, and modifies traffic through a web-based management interface. It operates as a man-in-the-middle proxy, intercepting HTTP, HTTPS, HTTP/2, WebSocket, and TCP traffic between clients and servers, and provides a plugin-based architecture that extends core functionality with custom rules, UI panels, and protocol handlers at runtime.
The project distinguishes itself through a combination of capabilities that go beyond basic traffic inspection. It supports server-side headless operation on Linux, allowing it to intercept traffic for applications that cannot directly configure a proxy. Whistle also includes remote page inspection by injecting a Weinre debugging client into web pages, enabling DOM inspection, console logging, and network monitoring from a separate interface. Additionally, it provides request capture and replay with the ability to modify parameters and responses on the fly, and applies user-defined rules to dynamically alter request headers, bodies, URLs, or response data before forwarding.
The tool bridges WebSocket and HTTP/2 connections by forwarding frames and streams while preserving protocol semantics for inspection. Its plugin system enables users to add custom rules and UI features to tailor the debugging environment for specific needs.