{
  "checked_at": "2026-11-13T20:33:38.863349+00:00",
  "scope": "Controlled local client behavior, not a mobile proxy service test",
  "versions": {
    "python": "3.9.6",
    "operating_system": "Darwin",
    "curl": "curl 8.7.1 (x86_64-apple-darwin25.0) libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.68.0",
    "requests": "2.32.5"
  },
  "network": {
    "bind_host": "127.0.0.1",
    "destinations": "127.0.0.1 only",
    "forwarding": false,
    "proxy_environment": "Cleared only in curl child processes; Requests trust_env=False",
    "credentials": "Disposable fixture values only",
    "cleanup": "All fixture sockets closed"
  },
  "tests": {
    "run": 8,
    "failures": 0,
    "errors": 0,
    "skipped": 0,
    "successful": true,
    "failure_details": [],
    "error_details": [],
    "skip_details": []
  },
  "observations": [
    {
      "case": "http_connect_407",
      "observed": {
        "curl_exit": 56,
        "http_status": 0,
        "connect_status": 407,
        "elapsed_seconds": 0.001235,
        "remote_ip": "127.0.0.1"
      },
      "interpretation": "The authentication fixture rejected CONNECT without credentials, before a destination TLS connection."
    },
    {
      "case": "http_connect_502",
      "observed": {
        "curl_exit": 56,
        "http_status": 0,
        "connect_status": 502,
        "elapsed_seconds": 0.000893,
        "remote_ip": "127.0.0.1"
      },
      "interpretation": "The proxy fixture was reachable and rejected CONNECT with 502. No origin was contacted."
    },
    {
      "case": "http_connect_authentication_positive_control",
      "observed": {
        "curl_exit": 56,
        "http_status": 0,
        "connect_status": 502,
        "elapsed_seconds": 0.00083,
        "remote_ip": "127.0.0.1",
        "fixture_authentication_accepted": true
      },
      "interpretation": "Valid fixture credentials passed the authentication gate. The fixture then deliberately returned 502 without forwarding; this is not a successful tunnel."
    },
    {
      "case": "proxy_connection_refused",
      "observed": {
        "curl_exit": 7,
        "http_status": 0,
        "connect_status": 0,
        "elapsed_seconds": 0.000228,
        "remote_ip": ""
      },
      "interpretation": "curl attempted a recently closed loopback port. Exit 7 with CONNECT 0 identifies a refused connection in this run."
    },
    {
      "case": "curl_no_proxy_with_explicit_proxy",
      "observed": {
        "empty_NO_PROXY": {
          "curl_exit": 0,
          "http_status": 200,
          "connect_status": 0,
          "elapsed_seconds": 0.000848,
          "remote_ip": "127.0.0.1",
          "fixture_body": "proxy"
        },
        "NO_PROXY_127_0_0_1": {
          "curl_exit": 0,
          "http_status": 200,
          "connect_status": 0,
          "elapsed_seconds": 0.000674,
          "remote_ip": "127.0.0.1",
          "fixture_body": "origin"
        },
        "proxy_requests": 1,
        "origin_requests": 1
      },
      "interpretation": "For this curl version and exact host match, NO_PROXY bypassed an explicitly configured HTTP proxy."
    },
    {
      "case": "curl_total_timeout_after_headers",
      "observed": {
        "curl_exit": 28,
        "http_status": 200,
        "connect_status": 0,
        "elapsed_seconds": 0.254199,
        "remote_ip": "127.0.0.1"
      },
      "interpretation": "HTTP 200 headers arrived, but the delayed body exceeded curl's total deadline."
    },
    {
      "case": "requests_read_timeout_not_total_deadline",
      "observed": {
        "http_status": 200,
        "received_bytes": 6,
        "read_timeout_seconds": 0.4,
        "fixture_byte_interval_seconds": 0.15,
        "elapsed_seconds": 0.921582
      },
      "interpretation": "The body completed after more than 0.4 seconds because each gap between bytes stayed below the read timeout."
    },
    {
      "case": "requests_read_timeout",
      "observed": {
        "exception": "ConnectionError",
        "read_timeout_seconds": 0.25,
        "elapsed_seconds": 0.252091
      },
      "interpretation": "The fixture sent headers, then paused the body longer than the configured read timeout."
    }
  ],
  "limits": [
    "curl error numbers and exception wrappers are reported for the versions used here.",
    "CONNECT fixtures reject the tunnel; successful proxy tunneling and destination TLS are not tested.",
    "Timing observations illustrate timeout behavior and are not latency benchmarks.",
    "NO_PROXY coverage is one exact IPv4 host match, not every suffix, wildcard or CIDR rule.",
    "No Chrome, SOCKS5, carrier network or production rental is tested by this script.",
    "Requests timing tests may fail on a heavily stalled machine; inspect the actual result before drawing conclusions."
  ],
  "source": {
    "download": "/downloads/proxy-diagnostics-lab.py",
    "sha256": "874d82f4ca1a84dd7c7602eefa527ebfce17ff18f92286d70175151d6d609acd"
  },
  "optional_dependency_check": {
    "command": "python3 -S proxy-diagnostics-lab.py",
    "result": "Six curl tests passed; the Requests test class was explicitly skipped because optional Requests was unavailable."
  }
}
