HAR export
Click Export HAR in the captures view header. A save dialog opens;
pick a location and ProxyPro writes a .har file.
The HAR format is supported by:
- Chrome DevTools — Network panel → right-click → Import HAR file
- Firefox DevTools — Network panel → cog → Import HAR
- Charles — File → Import Session
- Various third-party HAR viewers (HAR Analyzer, etc.)
What’s exported
| Flow kind | Exported? | Notes |
|---|---|---|
| HTTP/1.1 | ✅ | Full request + response, headers, body |
| HTTP/2 | ✅ | Treated as h1-like in HAR (the spec predates h2) |
| WebSocket | ❌ | No canonical HAR mapping; omitted from the export |
| gRPC | ❌ | Same |
Per-flow metadata we add (under HAR’s _proxypro extension):
flowId— stable across captureskind— the original Flow.kind so external tools can preserve our classificationbodyOmissions— present only when a request or response body could not be exported. Itscode, expected/exported byte counts, and message distinguish an unavailable body from a per-body or whole-export limit.
Body encoding
- Text bodies (UTF-8 decodable, no excessive control chars) — exported
inline as
entry.response.content.text. - Binary bodies — base64-encoded with
entry.response.content.encoding = "base64". Compatible with all major HAR viewers.
Before opening the save dialog, ProxyPro loads non-inline bodies from the live engine’s RAM/SQLite body store. The progress bar can be cancelled and body loads yield between items, so capture browsing stays usable. Imported sessions use the bodies already contained in that session and never read an unrelated live-engine body reference.
Hydration is bounded to 16 MiB per body and 64 MiB per export. A body
outside those limits, an evicted body, or an imported truncated body keeps its
known size and any available inline prefix; _proxypro.bodyOmissions explains
why the remainder is absent. The file remains valid HAR 1.2.
What’s not exported
- Bodies unavailable from the engine or over an export limit — represented
by the explicit
_proxypro.bodyOmissionsmarker instead of silently looking complete. - Cookies as structured fields — HAR’s
cookiesarray is empty; the rawCookie:/Set-Cookie:headers are present so most viewers display them anyway.
Privacy
Timings
Measured DNS, connect, TLS, request upload, TTFB, and download phases map to
HAR timings. HAR uses -1 for DNS/connect/SSL when an existing pooled
connection was reused; ProxyPro never invents those setup phases. Total time is
the capture’s response completion delta.
HAR import
HAR import is not implemented. ProxyPro’s versioned .ppsession format is the
supported offline review/baseline workflow.