HTTPS Inspection Flow¶
SafeMode inspects encrypted traffic using a local mitmproxy-based TLS interception flow.
Why HTTPS Interception Is Required¶
Most browser traffic is HTTPS. Without a trusted local certificate authority (CA), SafeMode cannot inspect payloads for:
- phishing URLs
- exposed secrets
- suspicious JavaScript patterns
Core Components¶
CertificateManagerhandles installation checks and cert setup interactions.QtMonitorManagerstarts mitmproxy in a separate process.URLMonitorAddonhooks into request/response lifecycle.
Startup-to-Inspection Sequence¶
- App starts and checks certificate readiness.
- User enables monitor.
- Mitmproxy process starts and loads filters.
- READY signal is emitted when listen port is live.
- App enables OS system proxy.
- Browser traffic flows through mitmproxy.
- Request/response hooks apply blocking and analysis.
Request Hook Behavior¶
In URLMonitorAddon.request(flow):
- Parses URL and request method.
- Skips protected infrastructure paths (
/cdn-cgi/) for stability. - Applies default + user whitelist checks.
- Detects request type (document/script/xhr/media/etc).
- Calls filter manager (
check_url). - If blocked, returns synthetic
403response immediately (document page or resource-specific empty payload).
Response Hook Behavior¶
In URLMonitorAddon.response(flow):
- Skips non-GET responses for heavy analysis.
- Focuses on HTML/JS content types for deeper logic.
- Calculates TLSH for supported payloads.
- Scans content for secret patterns.
- Runs suspicious JS heuristics and optional neutralization.
- Sends normalized event to queue for UI.
Certificate and Trust Boundaries¶
Trusting SafeMode CA grants local visibility over HTTPS payloads.
Security properties of this design:
- Inspection happens locally.
- No mandatory cloud forwarding in this architecture.
- Explicit user-controlled enable/disable path.
Known limits:
- Certificate pinning apps may fail or bypass proxy behavior.
- Non-system-proxy-aware traffic may not be inspected.
CA Artifact Inventory (~/.mitmproxy)¶
Typical generated files:
mitmproxy-ca-cert.cermitmproxy-ca-cert.pemmitmproxy-ca-cert.p12mitmproxy-ca.pemmitmproxy-ca.p12
Use this quick check:
ls -la ~/.mitmproxy
This confirms certificate material exists before debugging trust-store issues.
mitm.it Behavior Clarification¶
Bootstrap URL for certificate onboarding is:
http://mitm.it(HTTP)
If you see:
If you can see this, traffic is not going through mitmproxy.
that indicates routing/proxy state issue, not necessarily certificate corruption.
Next checks:
- monitor process running
- listener present on configured port
- system proxy actually enabled
Safety Behavior on Failure¶
If proxy enable fails after READY, monitor is stopped.
This avoids a misleading partial state where UI appears active but traffic is not actually routed.