Skip to content

Proxy

VirtuProbe includes a built-in MITM proxy that sits between your client and the target server. A DevTools-style UI lets you inspect every request and response in real time — including raw bodies, decompressed payloads, and binary frames. It runs in one of two modes: a SOCKS5 tunnel that relays raw TCP, or an HTTP intercept mode that understands whole HTTP requests and can rewrite or mock them.

Proxy view — exchange list panel

Choose a modeSOCKS5 Tunnel or HTTP Intercept — set the Port the proxy should listen on in the toolbar, then click Start. Point your client’s proxy settings at localhost on that port (SOCKS5 for tunnel mode, HTTP for intercept mode).

SettingDefault
Hostlocalhost
Port1080

Each TCP exchange appears in the list as it flows through the proxy. Click an entry to inspect it.

The detail panel shows:

  • Request — raw bytes sent by the client
  • Response — raw bytes returned by the server
  • Direction and timestamp for each chunk

Compressed response bodies (gzip, deflate, Brotli) can be decompressed server-side. Click Decompress on an exchange to see the readable payload. All three encodings are supported, including Brotli which browsers cannot decompress natively via the standard API.

The proxy can handle SSL connections. For HTTPS interception, configure your client to trust the proxy’s certificate.

Started in HTTP Intercept mode, the proxy does more than relay bytes — it terminates and parses each HTTP/1.1 request (HTTPS via CONNECT and an on-the-fly leaf certificate signed by the proxy CA). Because it now understands whole requests and responses, it can act on them with interception rules.

With no rules defined, HTTP intercept mode forwards every request transparently to the real target and still feeds the capture view — so you can switch it on without changing what your client sees.

Interception rules (mocking & service virtualization)

Section titled “Interception rules (mocking & service virtualization)”

Interception rules turn the proxy into a service virtualization layer: match live requests and mock, rewrite, delay, or script their responses. Manage them from the Interception Rules editor in the proxy view.

Rules are organised into rule sets. Within a set, rules are evaluated top to bottom and the first match wins — order matters. Each rule has a match and an action.

Every match field is optional; a blank field matches anything. A rule fires when all of its filled-in conditions match:

FieldMatches on
MethodHTTP method (GET, POST, …)
Host patternRequest host
Path patternRequest path — supports {segment} placeholders and * wildcards
Header name / Header value containsA request header and (optionally) a substring of its value
Body containsA substring of the request body
ActionWhat it does
MockReturn a synthetic response you define — status, reason, Content-Type, headers, and body — without the request ever reaching the real server. Stand in for a service that isn’t built yet.
ForwardPass the request through to the real target unchanged (the default behaviour when no rule matches).
RewriteForward to the target, but apply find/replace operations to the live request and/or response — headers or body, with optional regular expressions.
FaultForward to the target, then inject a fault into the genuine response — an error status or added latency — to exercise how your client handles failure.
ScriptRun a Groovy script with the request bound (method, path, body, headers, host) and a mutable response (status, reason, headers, body). Mutate the response or return a map — for dynamic mocks that react to the request.

A Latency (ms) delay can be added to any action, applied before the response is written — useful for simulating a slow dependency.

Rule sets are saved alongside the rest of your workspace, so your mocks and virtual services persist between sessions.