Skip to main content
Capture HTTPS Traffic from Android Apps Using Fiddler
Mobile Debugging6 min read

Capture HTTPS Traffic from Android Apps Using Fiddler

Step-by-step guide to capturing and decrypting HTTPS traffic from Android apps using Fiddler — including certificate installation, pinning bypass, and real-world troubleshooting.

Share:

Capturing HTTPS traffic from Android apps is essential for API validation, security testing, performance analysis, and reverse-engineering third-party integrations — yet it’s often blocked by certificate pinning, TLS version mismatches, and platform-level restrictions. With the right Fiddler configuration and Android setup, you can decrypt and inspect encrypted HTTP/2 and HTTP/1.1 traffic in real time — no root required for most modern apps.

This guide walks you through a production-ready workflow using Fiddler as your fiddler proxy, with emphasis on reliable https decryption, troubleshooting common pitfalls, and adapting to Android 7+ network security policies. Whether you’re debugging a React Native app, validating OAuth flows, or auditing backend calls, this fiddler tutorial delivers actionable steps — not theory.

Prerequisites: Tools & Environment Setup

Before configuring Fiddler, ensure your environment supports secure proxying:

  • Fiddler Classic (v5.0.20234.59138 or newer) — Fiddler Everywhere does not support Android certificate installation workflows at time of writing.
  • A physical Android device (emulators like Pixel API 30+ often block user-installed CAs unless modified).
  • Same Wi-Fi network for both device and host machine.
  • Windows/macOS host with Fiddler installed and running.

💡 Pro Tip: Disable antivirus/firewall temporarily if Fiddler fails to bind to port 8888 — many security suites block local proxy listeners.

Step 1: Configure Fiddler as an HTTP(S) Proxy Server

By default, Fiddler listens only on 127.0.0.1. To accept connections from Android, reconfigure its binding:

  1. Launch Fiddler → Tools > Options > Connections
  2. ✅ Check Allow remote computers to connect
  3. Note the port (default: 8888) — keep it unchanged unless conflicting
  4. Click OK, then restart Fiddler

Now verify Fiddler is reachable from your Android device:

  • On Android, open Chrome and navigate to http://<HOST_IP>:8888 (e.g., http://192.168.1.10:8888). You should see Fiddler’s welcome page.

If unreachable:

  • Confirm host firewall allows inbound TCP on port 8888
  • Run netstat -ano | findstr :8888 (Windows) or lsof -i :8888 (macOS) to check binding
  • Try disabling IPv6 in Fiddler (Tools > Options > Connections > uncheck IPv6) — some routers misroute IPv6 proxy requests

This step establishes your fiddler proxy infrastructure — foundational for all subsequent http debugging.

Step 2: Install Fiddler’s Root Certificate on Android

Fiddler decrypts HTTPS by acting as a man-in-the-middle (MITM), signing decrypted traffic with its own CA. Android must trust that CA.

For Android 7–10 (API 24–29)

  1. In Fiddler, go to Help > Fiddler Options > HTTPS > Export Root Certificate to Desktop
  2. Transfer the .cer file (e.g., FiddlerRoot.cer) to your Android device (email, cloud, USB)
  3. On Android, open Settings → Security → Encryption & credentials → Install a certificate → CA certificate
  4. Navigate to the downloaded .cer, tap it → confirm install

⚠️ Warning: Android 7+ ignores user-installed CAs for apps targeting API 24+ unless those apps explicitly opt in via network_security_config.xml. We’ll address this shortly.

For Android 11+ (API 30+)

Android 11 enforces stricter certificate trust. You must install the cert into the system store or configure per-app trust. Since system store installation requires root or ADB, use this ADB method instead:

adb push FiddlerRoot.cer /data/local/tmp/
adb shell su -c 'cp /data/local/tmp/FiddlerRoot.cer /system/etc/security/cacerts/$(openssl x509 -inform DER -subject_hash_old -noout -in /data/local/tmp/FiddlerRoot.cer).0'
adb shell su -c 'chmod 644 /system/etc/security/cacerts/*.0'

🔐 Alternative (no root): Use JustTrustMe Xposed module or SSLUnpinning Magisk module if rooted — but avoid for production audit prep.

This step enables full https decryption, making encrypted payloads readable in Fiddler’s Web Sessions list.

Step 3: Configure Android Network to Route Through Fiddler

With Fiddler listening and trusted, route device traffic:

  1. On Android, long-press your Wi-Fi network → Modify network → Advanced options → Proxy → Manual
  2. Set Proxy hostname: <HOST_IP> (e.g., 192.168.1.10)
  3. Set Proxy port: 8888
  4. Save

✅ Verify: Open Chrome on Android → visit https://example.com. In Fiddler, you’ll see HTTPS sessions with green lock icons — meaning decryption succeeded.

❌ If you see red Tunnel to... entries without decrypted sub-sessions, the cert isn’t trusted or the app uses certificate pinning.

Step 4: Bypass Certificate Pinning (When Apps Block Fiddler)

Many banking, fintech, and high-security apps (e.g., PayPal, Revolut) implement OkHttp or Network Security Config pinning. Fiddler sees only CONNECT tunnels — no request/response bodies.

Option A: Modify App’s Network Security Config (Non-root)

If you control the app source:

  1. In AndroidManifest.xml, ensure android:networkSecurityConfig="@xml/network_security_config"
  2. Create res/xml/network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">your-api.com</domain>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </domain-config>
</network-security-config>

This explicitly permits user-installed CAs — critical for reliable fiddler debugging.

Option B: Runtime Unpinning (Root or Frida)

For black-box testing:

  • Use Frida script to hook OkHttp/Conscrypt checkServerTrusted()
  • Or deploy Objection (objection -g com.example.app explore --startup-command "android sslpinning disable")

These tools restore visibility into pinned endpoints — turning opaque tunnels into inspectable JSON/XML.

Step 5: Filter & Analyze Traffic Like a Pro

Once traffic flows, leverage Fiddler’s power beyond basic capture:

Use AutoResponder to Mock APIs

Right-click any session → AutoResponder → enable → add rule:

  • Match: regex:^https?://api\.example\.com/v1/users.*
  • Action: Return C:\mocks\users.json

Ideal for frontend devs testing error states without backend changes.

Apply Filters to Reduce Noise

  • In the Filters tab: ✅ Use Filters, select Show only the following Hosts, enter api.example.com
  • Or use QuickExec bar: bpu https://api.example.com/login to break on specific requests

Export for Collaboration

  • Select sessions → File > Export Sessions > All Sessions > SAZ file
  • Share .saz with teammates — they’ll see full headers, timings, and decrypted bodies (if cert was trusted during capture)

These techniques elevate your fiddler tutorial experience from passive logging to active API engineering.

Troubleshooting Common Failures

Symptom Likely Cause Fix
407 Proxy Authentication Required Corporate proxy intercepting Fiddler’s upstream connection In Fiddler Tools > Options > Gateway, set No Proxy or configure corporate auth
504 Fiddler - Receive Failure Android device can’t reach host IP Confirm subnet match; try ping <HOST_IP> from Android terminal emulator
Tunnel to example.com:443 (no child sessions) Missing or untrusted cert, or pinning Reinstall cert; test with Chrome first before app; check network_security_config
App crashes on launch after proxy config App detects proxy (some do via getprop net.http.proxy or System.getProperty("http.proxyHost")) Use Proxyman or mitmproxy with custom Android APK patching for stealth

Still stuck? Our contact us team responds within 4 business hours with tailored diagnostics.

Conclusion: Master HTTPS Debugging with Confidence

Capturing and decrypting HTTPS traffic from Android apps isn’t magic — it’s a repeatable process grounded in understanding TLS trust chains, Android’s evolving security model, and Fiddler’s MITM architecture. You’ve now configured a robust fiddler proxy, installed and validated the root certificate, routed device traffic, handled certificate pinning, and applied advanced filtering — all core competencies in modern http debugging.

Remember: Always perform this on non-production accounts. Never capture credentials or PII without explicit consent. And when debugging fails, fall back to fundamentals — verify connectivity first, then trust, then app-level constraints.

You’re now equipped to inspect Retrofit/OkHttp calls, validate JWT signatures, trace GraphQL batch queries, and audit third-party SDK telemetry — all from one pane of glass.

For deeper protocol analysis, explore more tutorials on WebSocket inspection and TLS 1.3 decoding. Or browse Mobile Debugging tutorials for iOS equivalents, Flutter network tracing, and CI-integrated API validation scripts.

Share:

Related Topics

fiddler tutorialfiddler debugginghttp debuggingfiddler proxyhttps decryption

Get Fiddler Tips & Tutorials

Stay updated with the latest Fiddler tutorials, HTTP debugging guides, request modification tips, and web traffic analysis techniques.

Free forever. New tutorials published daily.

Related Articles