Tutorials

Using Fiddler to Inspect CaptchaAI API Traffic

When CAPTCHA solves fail and your logs don't show enough detail, intercepting the actual HTTP traffic reveals what's happening. Fiddler captures every request and response between your code and the CaptchaAI API, letting you see exact payloads, headers, and timing.

When to Use Fiddler for Debugging

Scenario What Fiddler Reveals
API returns errors but your code logs are sparse Full request body, headers, and response
Solve requests seem to hang Whether requests are reaching the server or timing out
Token appears invalid when injected Exact token content and any encoding issues
Proxy-related failures Whether requests route through the expected proxy
Rate limit issues Request timing and 429 response patterns

Setting Up Fiddler for HTTPS Traffic

Step 1: Install and Configure HTTPS Decryption

Fiddler acts as a local proxy that intercepts HTTPS traffic. You need to enable HTTPS decryption to see CaptchaAI API payloads:

Fiddler Everywhere:

  1. Open Settings → HTTPS
  2. Enable "Capture HTTPS traffic"
  3. Install the Fiddler root certificate when prompted
  4. Trust the certificate in your OS certificate store

Fiddler Classic (Windows):

  1. Tools → Options → HTTPS
  2. Check "Decrypt HTTPS traffic"
  3. Click "Actions" → "Trust Root Certificate"

Step 2: Configure Your Code to Use Fiddler's Proxy

Fiddler listens on 127.0.0.1:8866 (Fiddler Everywhere) or 127.0.0.1:8888 (Fiddler Classic).

Python (requests):

import requests

proxies = {
    "http": "http://127.0.0.1:8866",
    "https": "http://127.0.0.1:8866",
}

# Submit CAPTCHA task through Fiddler
response = requests.post(
    "https://ocr.captchaai.com/in.php",
    data={
        "key": "YOUR_API_KEY",
        "method": "userrecaptcha",
        "googlekey": "SITE_KEY",
        "pageurl": "https://example.com",
        "json": 1,
    },
    proxies=proxies,
    verify=False,  # Required for Fiddler's self-signed cert
)
print(response.json())

JavaScript (Node.js with axios):

const axios = require("axios");
const HttpsProxyAgent = require("https-proxy-agent");

const agent = new HttpsProxyAgent("http://127.0.0.1:8866");

async function submitTask() {
  const response = await axios.post(
    "https://ocr.captchaai.com/in.php",
    new URLSearchParams({
      key: "YOUR_API_KEY",
      method: "userrecaptcha",
      googlekey: "SITE_KEY",
      pageurl: "https://example.com",
      json: 1,
    }),
    {
      httpsAgent: agent,
      proxy: false, // Disable axios default proxy handling
    }
  );
  console.log(response.data);
}

submitTask();

Note: verify=False (Python) disables SSL verification for Fiddler's intercepting certificate. Only use this during debugging — remove it in production.

Filtering CaptchaAI Traffic

Add filters to see only CaptchaAI requests in a busy session.

Fiddler Everywhere Filters

  1. Click the Filters tab
  2. Add a rule: Hostcontainsocr.captchaai.com
  3. Apply the filter

Fiddler Classic Filters

  1. Click the Filters tab
  2. Check "Use Filters"
  3. Under "Hosts," select "Show only the following Hosts"
  4. Enter: ocr.captchaai.com

Now only CaptchaAI API requests appear in the session list.

Inspecting Request and Response

Submit Request (in.php)

When you capture a task submission, inspect these fields in Fiddler:

Panel What to Check
Headers Content-Type should be application/x-www-form-urlencoded
Request Body Verify key, method, googlekey/sitekey, pageurl are correct
Response Body Should return {"status":1,"request":"TASK_ID"} on success
Response Code 200 = OK, 403 = key issue, 429 = rate limited

Poll Request (res.php)

When polling for results:

Panel What to Check
Request Body key, action=get, id=TASK_ID, json=1
Response Body CAPCHA_NOT_READY while processing, {"status":1,"request":"TOKEN"} on success
Timing Check intervals between polls — should be 5+ seconds

Common Issues Visible in Fiddler

What You See Meaning
Request body has empty googlekey Sitekey extraction failed upstream
Response: {"status":0,"request":"ERROR_WRONG_USER_KEY"} API key is invalid
Response: {"status":0,"request":"ERROR_ZERO_BALANCE"} Account has no funds
Response: {"status":0,"request":"ERROR_NO_SLOT_AVAILABLE"} Server busy — retry
No response (timeout) Network/proxy blocking the connection
429 status code Too many requests — slow down polling

Using Breakpoints

Breakpoints pause requests before they're sent, letting you modify them:

Setting a Breakpoint

Fiddler Everywhere:

  1. Rules → Add Rule
  2. Match: URL contains ocr.captchaai.com/in.php
  3. Action: "Pause before sending"

Fiddler Classic:

  1. Rules → Automatic Breakpoints → Before Requests
  2. Or type bpu ocr.captchaai.com in the QuickExec bar

What to Do at a Breakpoint

When a request is paused:

  1. Inspect the request body — verify all parameters are correct
  2. Edit parameters — change method, googlekey, or pageurl to test different values
  3. Resume — click "Run to Completion" to send the modified request
  4. Check the response — see if your change fixed the issue

This is useful for testing whether a parameter value is causing failures without changing code.

Replaying Failed Requests

When a request fails, you can replay it from Fiddler:

  1. Right-click the failed session
  2. Select ReplayReissue Requests
  3. The same request is sent again with identical headers and body

To replay with modifications:

  1. Right-click → Edit in Composer
  2. Modify the parameters
  3. Click Execute

This lets you test fixes without restarting your application.

Composing Test Requests

Use Fiddler's Composer to build CaptchaAI requests from scratch:

Task submission:

POST https://ocr.captchaai.com/in.php
Content-Type: application/x-www-form-urlencoded

key=YOUR_API_KEY&method=userrecaptcha&googlekey=SITE_KEY&pageurl=https://example.com&json=1

Result polling:

GET https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=TASK_ID&json=1

This is faster than writing code when you just want to verify the API is working.

Analyzing Timing

Fiddler's Timeline view shows request duration:

Metric Healthy Value Problem Indicator
DNS lookup < 50ms > 500ms = DNS issue
TCP connect < 100ms > 1000ms = network issue
TLS handshake < 200ms > 1000ms = certificate issue
Server response (in.php) < 500ms > 2000ms = server congestion
Server response (res.php) < 200ms > 1000ms = unusual — check status

Exporting Sessions for Support

If you need to share debug data with CaptchaAI support:

  1. Select the relevant sessions in Fiddler
  2. File → Export Sessions → Selected Sessions
  3. Choose HTTPArchive (.har) format
  4. Remove your API key from the exported file before sharing
Find and replace your actual API key with "REDACTED" in the .har file

Troubleshooting

Issue Cause Fix
Fiddler shows no traffic Code not routing through Fiddler's proxy Set proxy to 127.0.0.1:8866 (Everywhere) or 8888 (Classic)
SSL certificate errors Fiddler's root cert not trusted Reinstall Fiddler certificate; add to trusted roots
Fiddler shows garbled response body Response is compressed Enable "Decode" button in toolbar (or Rules → Remove All Encodings)
Breakpoints don't trigger Filter or rule mismatch Verify URL pattern matches ocr.captchaai.com exactly
Traffic appears but body is empty Content-Length mismatch or streaming response Click session and wait for full response to load

FAQ

Does using Fiddler affect CAPTCHA solve timing?

Minimally. Fiddler adds ~1-5ms of latency per request due to the proxy hop. This is negligible compared to CAPTCHA solve times (10–60 seconds). For timing-critical debugging, note that Fiddler's timestamps reflect when Fiddler received the data, not when your code sent it.

Can I use Fiddler with browser-based CAPTCHA solving?

Yes. Configure your browser to use Fiddler as its proxy, and you'll see all CAPTCHA-related requests — including widget loading, challenge retrieval, and token submission. This is useful for understanding the full CAPTCHA lifecycle.

Should I use Fiddler Classic or Fiddler Everywhere?

Fiddler Everywhere is cross-platform (Windows, macOS, Linux) with a modern UI. Fiddler Classic is Windows-only but has more advanced scripting capabilities (FiddlerScript). For basic CaptchaAI debugging, either works.

Next Steps

Clear API error messages make debugging faster — start with CaptchaAI and use Fiddler when you need deeper request-level inspection.

Related guides:

Discussions (0)

No comments yet.

Related Posts

DevOps & Scaling Ansible Playbooks for CaptchaAI Worker Deployment
Deploy and manage Captcha AI workers with Ansible — playbooks for provisioning, configuration, rolling updates, and health checks across your server fleet.

Deploy and manage Captcha AI workers with Ansible — playbooks for provisioning, configuration, rolling updates...

Automation Python All CAPTCHA Types
Apr 07, 2026
DevOps & Scaling Blue-Green Deployment for CAPTCHA Solving Infrastructure
Implement blue-green deployments for CAPTCHA solving infrastructure — zero-downtime upgrades, traffic switching, and rollback strategies with Captcha AI.

Implement blue-green deployments for CAPTCHA solving infrastructure — zero-downtime upgrades, traffic switchin...

Automation Python All CAPTCHA Types
Apr 07, 2026
Troubleshooting CaptchaAI API Error Handling: Complete Decision Tree
Complete decision tree for every Captcha AI API error.

Complete decision tree for every Captcha AI API error. Learn which errors are retryable, which need parameter...

Automation Python All CAPTCHA Types
Mar 17, 2026
Tutorials CAPTCHA Handling in Mobile Apps with Appium
Handle CAPTCHAs in mobile app automation using Appium and Captcha AI — extract Web sitekeys, solve, and inject tokens on Android and i OS.

Handle CAPTCHAs in mobile app automation using Appium and Captcha AI — extract Web View sitekeys, solve, and i...

Automation Python All CAPTCHA Types
Feb 13, 2026
Tutorials Streaming Batch Results: Processing CAPTCHA Solutions as They Arrive
Process CAPTCHA solutions the moment they arrive instead of waiting for tasks to complete — use async generators, event emitters, and callback patterns for stre...

Process CAPTCHA solutions the moment they arrive instead of waiting for all tasks to complete — use async gene...

Automation Python All CAPTCHA Types
Apr 07, 2026
Reference CaptchaAI CLI Tool: Command-Line CAPTCHA Solving and Testing
A reference for building and using a Captcha AI command-line tool — solve CAPTCHAs, check balance, test parameters, and integrate with shell scripts and CI/CD p...

A reference for building and using a Captcha AI command-line tool — solve CAPTCHAs, check balance, test parame...

Automation Python All CAPTCHA Types
Feb 26, 2026
DevOps & Scaling Auto-Scaling CAPTCHA Solving Workers
Build auto-scaling CAPTCHA solving workers that adjust capacity based on queue depth, balance, and solve rates.

Build auto-scaling CAPTCHA solving workers that adjust capacity based on queue depth, balance, and solve rates...

Automation Python All CAPTCHA Types
Mar 23, 2026
DevOps & Scaling CaptchaAI Monitoring with Datadog: Metrics and Alerts
Monitor Captcha AI performance with Datadog — custom metrics, dashboards, anomaly detection alerts, and solve rate tracking for CAPTCHA solving pipelines.

Monitor Captcha AI performance with Datadog — custom metrics, dashboards, anomaly detection alerts, and solve...

Automation Python All CAPTCHA Types
Feb 19, 2026
Tutorials Building a CaptchaAI Debug Logger for Development
Build a debug logging wrapper for the Captcha AI API that captures request details, response data, timing, and errors — with structured output for development t...

Build a debug logging wrapper for the Captcha AI API that captures request details, response data, timing, and...

Automation Python All CAPTCHA Types
Feb 14, 2026
Tutorials Pytest Fixtures for CaptchaAI API Testing
Build reusable pytest fixtures to test CAPTCHA-solving workflows with Captcha AI.

Build reusable pytest fixtures to test CAPTCHA-solving workflows with Captcha AI. Covers mocking, live integra...

Automation Python reCAPTCHA v2
Apr 08, 2026
Tutorials GeeTest Token Injection in Browser Automation Frameworks
how to inject Gee Test v 3 solution tokens into Playwright, Puppeteer, and Selenium — including the three-value response, callback triggering, and form submissi...

Learn how to inject Gee Test v 3 solution tokens into Playwright, Puppeteer, and Selenium — including the thre...

Automation Python Testing
Jan 18, 2026