Migrating from Charles Proxy

A map of Charles's tools onto Solpuga's and how to carry a recorded session over as HAR: what travels, what is lost, and the limits.

What maps to what

Charles puts everything under Tools; Solpuga has some of it under Tools and some in the request list itself. Where there is no equivalent, the cell is a dash.

Charles Solpuga
Map Local Map Local
Breakpoints Breakpoints
SSL Proxying exclusions Exclusion list
Client Process Originating application
Export Session → HAR HAR 1.2 export
Import Session → HAR HAR import, read-only
The host tree Grouping by host and application
Filter Search and filters
Timing Per-phase timing
WebSocket Partly: messages recorded, none sent
Map Remote —
Rewrite —
Throttling —
Repeat, Repeat Advanced, Compose —
DNS Spoofing, Mirror, Auto Save, Block List —
HTTP/2 —
Scripting —

Carrying sessions over as HAR

Charles's own .chlz is readable by nothing else, so HAR is the route: Charles has exported it since 3.6, and Solpuga opens it.

In Charles. File → Export Session… → format HTTP Archive (.har) → save. For part of a recording: select the requests and File → Export Selected Session….

In Solpuga. Tools → import HAR (Cmd/Ctrl + Shift + I), or open the .har from your file manager. It opens in a separate read-only window with its own list and inspector, so a live capture is untouched — you can read somebody else's session without stopping your own.

One limit: files over 500 MB are refused. A day-long Charles session passes that easily, so export a selection rather than everything.

What comes across

Request and response headers, bodies, statuses and timings — everything HAR 1.2 describes. The imported window uses the same inspector as a live capture: JSON folds into a tree, images show their dimensions, binary shows as hex. Bodies and raw messages can be saved to files.

What is lost

These are limits of the format, not of anybody's implementation:

  • Rules. Map Local, Rewrite, breakpoints and filters are not in HAR at all — the format describes traffic, not settings. Rules have to be recreated, and the fastest way is from a captured request: the rule is filled in with the response that actually arrived.
  • WebSocket. HAR has nowhere to put it.
  • Binary request bodies. Solpuga leaves them out of its own export and flags them with a comment; other exporters have size limits of their own.
  • Unfinished requests. Solpuga's export omits them, and failed ones go out with status 0.
  • Double decompression. Bodies in Solpuga's HAR are decrypted and decompressed, while the response headers are kept as they arrived. An importer that believes Content-Encoding will try to decompress a second time. Text opening as garbage is this, not a broken file.

What you get instead

An interface in English and Russian, and a free tier with no time limit.

Download for free

Related