-
Notifications
You must be signed in to change notification settings - Fork 2
Intercept
The Intercept tab pauses traffic inside the proxy so you can inspect and modify it in a syntax-highlighted editor, then forward it on or drop it. Requests and responses are two independent phases — you can pause either, both, or neither.
Two toggle pills sit at the top of the Intercept tab: Requests and Responses. Both are off by default, and both reset to off when Joro restarts — intercept is a thing you turn on for a task, not a persistent mode.
While a phase is enabled, every in-scope message of that kind pauses. Requests excluded by scope or quieted by the noise filter pass through without pausing.
Turning a phase off releases anything it currently has paused; a paused message holds a client connection open, so nothing is left stranded.
Paused messages appear in the queue oldest first, and that ordering is a guarantee rather than an accident — the queue no longer reshuffles under you between refreshes. Each row is tagged with its direction — an up arrow for a request, a down arrow for a response — and shows the method, the status code for responses, and a live counter of how long it has been waiting, so you can see the auto-forward timeout approaching. The counter is right from the moment the row appears.
Click any entry to open it in the editor. You rarely have to: the first message to arrive at an empty queue opens itself, and forwarding or dropping one pulls up the oldest remaining message behind it, so a queue can be worked without touching the list. A message arriving while you are reading another never steals the pane, and an explicit click always wins.
Because the pane refills under your pointer, Forward and Drop are disabled for a fifth of a second whenever a message loads on its own. A held key or a double-click cannot forward something you never saw.
Your edits are kept per message. Clicking away from a half-edited request and coming back finds it as you left it; edits are discarded only when the queue lets that message go.
Release all forwards everything currently pending, unmodified. There is no bulk drop.
An empty queue reads Waiting for requests…, Waiting for responses…, or both, according to which phases you have switched on — so a pane that will never fill is distinguishable from one that is merely quiet. A forward or drop that fails raises a toast rather than doing nothing.
The editor shows the raw message with syntax highlighting. For a request you can modify the method, path, headers, or body. For a response you can modify the status line, headers, or body. Content-Length is corrected for you.
- Forward sends your edited message on.
- Drop discards it.
If you forward without changes, the original is sent unmodified.
Dropping a request means the target never sees it, and the client typically gets a connection error. Dropping a response is different: the request already went upstream and the server already processed it. Dropping only stops the client from seeing the answer — the client gets a 403 explaining that intercept dropped it. If the request had side effects, they have already happened.
Pauses sit after Match & Replace, so the editor shows the exact bytes that will hit the wire, rewrites included. Manipulate is offered for requests only — Manipulate replays a request, and there is nothing to replay about a response.
Some responses are never held:
-
1xx,204, and304, which have no body to edit. - Server-sent events,
multipart/x-mixed-replace, and gRPC, which are open-ended streams that would never finish buffering. - Bodies over 10 MB, which stream through rather than being held in memory. Match & Replace rules still apply to them.
At most 32 responses pause at once. That ceiling is a backstop against automated traffic filling the queue, not a limit you should hit while testing by hand.
Paused messages have a default timeout of 60 seconds. If you do not resolve one in time, it is automatically forwarded so the client does not hang indefinitely. Adjust Auto-forward (s) under General → Proxy on Settings; it applies to both phases.
- Turn intercept off when you just want to browse and capture. Every request pausing gets tedious quickly.
- Enable Responses on its own when you want to tamper with what the application sends back without slowing down your own requests.
- Combine with scope and the noise filter (see Settings) so only the traffic you care about lands in the queue.
- If you want to replay or tweak a previously captured request, use Manipulate instead.