Reverse Proxy Detection
developer/v1/domain/reverse-proxyDetects reverse proxies, edge auth proxies (Cloudflare Access, Pomerium, oauth2-proxy, Authelia, Vouch Proxy), and exposure tunnels (Cloudflare Tunnel, ngrok, localtunnel, Tailscale Funnel) in front of a domain. Also flags private-IP disclosure in X-Forwarded-* headers — a misconfiguration finding hand-curl audits typically catch.
What It Does
Analyzes HTTP headers (Via, X-Forwarded-*, X-Proxy-ID, vendor-specific cookies and JWT assertions) to identify reverse proxy presence, distinguishing CDN / load balancer / standalone proxy / auth proxy / tunnel configurations. Each X-Forwarded-* header value is scanned for RFC1918 (private) IPs; when found, `privateIPLeaked: true` is surfaced and the values are redacted by default (pass `?revealValues=true` to see the raw values for trusted security audits).
Why It's Useful
Reverse proxy detection reveals the true infrastructure stack behind a website. It's useful for security assessments, understanding architecture, and identifying potential misconfigurations.
Use Cases
Infrastructure Mapping
Map the complete infrastructure stack including proxy layers.
Understand full request path for security analysis.
Misconfiguration Detection
Identify proxy headers that leak internal infrastructure information.
Find and fix information disclosure via proxy headers.
Architecture Analysis
Understand competitor proxy architecture for benchmarking.
Learn from industry proxy deployment patterns.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Required | The domain to detect reverse proxy forExample: example.com |
revealValues | string | Optional | Set to "true" to return un-redacted X-Forwarded-* header values. Default is to redact RFC1918 (private) IPs so the endpoint cannot be used as a one-call internal-IP-disclosure scraper. The `containsPrivateIP` flag is set regardless of this option.Example: true |
Response Fields
| Field | Type | Description |
|---|---|---|
domain | string | The queried domain |
detected | boolean | Whether a reverse proxy was detected |
primaryProxy | string | Primary proxy type identified (null if none detected) |
providers | array | Detected proxy providers (including auth proxies and tunnels) with name, vendor, and evidence |
providerCount | number | Number of proxy providers detected |
forwardedHeaders | array | Structured X-Forwarded-* headers: each entry has { name, value, containsPrivateIP }. Private IPs in `value` are redacted to `[redacted-private-ip]` unless `revealValues=true` was passed. |
viaHeader | string | Via header content if present (null if absent) |
privateIPLeaked | boolean | True when at least one X-Forwarded-* header value contains an RFC1918 IP — actionable security finding (internal-infrastructure disclosure) |
valuesRedacted | boolean | Whether private-IP values were redacted in the response (false when revealValues=true was passed) |
recommendations | array | Infrastructure improvement suggestions; private-IP leakage triggers a WARNING-level recommendation |
Code Examples
curl "https://api.edgedns.dev/v1/domain/reverse-proxy" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d "domain=example.com"const response = await fetch(
'https://api.edgedns.dev/v1/domain/reverse-proxy?domain=example.com',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
console.log(data);import requests
response = requests.get(
'https://api.edgedns.dev/v1/domain/reverse-proxy',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'domain': 'example.com'
}
)
data = response.json()
print(data)Read the full Reverse Proxy Detection guide
Why it matters, real-world use cases, parameters, response fields, and how to call it from Claude, ChatGPT, or Gemini via MCP.
Read the guide →Related Endpoints
External References
Learn more about the standards and protocols behind this endpoint.
Try This Endpoint
Test the Reverse Proxy Detection endpoint live in the playground.