Proxy Server Checker
Review pasted or current-request proxy headers, trace the trusted edge from the right, and flag spoofable client-IP evidence and disclosure clues.| Header | Signal | Strength | Observed value | Finding | Copy |
|---|---|---|---|---|---|
| {{ row.header }} | {{ row.signal }} | {{ row.strength }} | {{ row.value }} | {{ row.finding }} |
| Position | Address or token | Source | Role | Trust note | Copy |
|---|---|---|---|---|---|
| {{ row.position }} | {{ row.address }} | {{ row.source }} | {{ row.role }} | {{ row.note }} |
| Priority | Action | Reason | Owner | Copy |
|---|---|---|---|---|
| {{ row.priority }} | {{ row.action }} | {{ row.reason }} | {{ row.owner }} |
An application behind a reverse proxy often sees the proxy’s address at the network connection while receiving the original client claim in an HTTP header. That split is useful for routing and logging, but unsafe when the application trusts header values without proving which proxy wrote them.
- Observed remote address
- The peer address seen by the receiving edge for the request being examined.
- Forwarded chain
- An ordered list of client and proxy claims carried in
X-Forwarded-Foror theforparameters ofForwarded. - Trusted edge hop
- A known proxy at the right side of the chain whose address range and header-writing behavior are controlled by the operator.
- First untrusted candidate
- The address immediately to the left of the configured trusted edge window.
Standardized Forwarded fields and widely used headers such as X-Forwarded-For, Via, and CDN-specific client-address headers leave different clues. Their presence can reveal a proxy path, edge provider, scheme rewrite, or original-address claim. Their absence cannot prove that traffic was direct, anonymous, or outside a VPN.
Trust is evaluated from the receiving edge toward the client, so a comma-separated chain is read from right to left. Public clients can often supply their own forwarding headers. A trusted edge should remove, replace, or append them according to a documented policy, and the application must use the same trusted-proxy count or address ranges.
Header evidence supports several different questions. A privacy review asks whether an original address is disclosed. A reverse-proxy review asks which hop an application may trust. A CDN review asks whether the request arrived through the expected provider. The same headers can be relevant to all three, but they do not answer them with equal confidence.
How to Use This Tool:
Choose between local evidence review and an explicit check of the request currently reaching the service.
- Select Paste headers to inspect a log or diagnostic block in the browser, or select Current request and press its check button to collect the service-visible proxy headers and remote address.
- Choose Privacy or VPN check, Reverse-proxy log review, or CDN or load balancer edge. The profile changes the remediation plan, not the evidence score or classification.
- Enter the access-log remote address when it is known, then set Trusted edge hops from 0 through 5. Count only proxies whose network path and header policy you control.
- Enable Strict Forwarded syntax when RFC 7239 formatting is expected. Malformed segments become warning evidence rather than being silently accepted.
- Review the trust path before using any client-address claim for access control, rate limits, audit logs, or abuse decisions.
Interpreting Results:
The classification describes recognized header evidence. The score measures how much of five evidence categories is present; it is neither a confidence percentage nor a proxy risk score.
- Transparent proxy signal combines chain evidence with more than one address-path row.
- CDN edge signal combines a CDN header with a forwarding chain or client-address hint.
- Anonymous proxy signal reflects disclosure such as
Viawithout stronger chain evidence. - No proxy header found means no recognized header was present. Check the observed network address, DNS, WebRTC, provider logs, or other relevant surfaces before concluding that no proxy or VPN was used.
Technical Details:
The analysis normalizes raw and CGI-style header names, redacts common credential and cookie fields, extracts recognized proxy signals, constructs one address chain, and then applies a right-edge trust window. Duplicate recognized headers remain separate evidence rows.
Transformation Core
X-Forwarded-For values are split on commas. RFC 7239 Forwarded values are split into comma-separated elements and semicolon-separated parameters. If both forms exist, the trust path uses the X-Forwarded-For chain; otherwise it uses Forwarded for values. An observed remote address is appended when it is not already present.
| Signal group | Representative headers | Points per match | Category |
|---|---|---|---|
| Standard chain | Forwarded |
30 | Client address chain |
| De-facto chain | X-Forwarded-For and aliases |
32 | Client address chain |
| Client hint | X-Real-IP, Client-IP, and related names |
18 | Client address hints |
| CDN client hint | CF-Connecting-IP, True-Client-IP, and provider variants |
24 | Client address hints |
| Proxy disclosure | Via |
22 | Proxy disclosure |
| Cache or proxy hint | X-Cache, Proxy-Connection, and related names |
14 | Proxy disclosure |
| Edge vendor ID | CF-Ray, X-Amz-Cf-Id, and provider variants |
16 | Edge identity |
| Forwarded metadata | X-Forwarded-Proto, host, port, and prefix variants |
10 | Scheme metadata |
Rule Core
For a chain of length n and a configured trusted-hop count h, the trusted window begins at index max(0, n − h). Rows at or to the right of that index are marked trusted; the row immediately to its left is the first untrusted candidate. Setting zero trusted hops makes the rightmost row untrusted.
| Priority | Condition | Classification |
|---|---|---|
| 1 | Strict parsing found a malformed Forwarded segment |
Forwarded chain needs trust review |
| 2 | CDN evidence plus chain or client-address evidence | CDN edge signal |
| 3 | Chain evidence and more than one trust-path row | Transparent proxy signal |
| 4 | Proxy disclosure evidence | Anonymous proxy signal |
| 5 | Client-address hint only | Client-IP hint only |
| 6 | No recognized evidence | No proxy header found |
Formula Core
Each evidence category has a separate saturation point. The overall score is the rounded average of the five category percentages.
Tc is the sum of signal points in category c, Mc is that category’s maximum, and Ec is its 0–100 evidence percentage. Category maxima are 42 for client-address chain, 34 for client-address hints, 30 for proxy disclosure, 24 for edge identity, and 18 for scheme metadata. A multi-row address chain adds min(10, 3 × chain rows) points to the chain category before saturation.
Header values are limited to 320 characters for analysis, and pasted input is limited to 1,048,576 characters. Strict mode reports missing equals signs inside Forwarded elements, but it does not fully validate IP address syntax or reject every malformed extension value.
Privacy Notes:
Pasted headers and uploaded text are analyzed in the browser. Common authorization, cookie, proxy-authorization, and API-key header values are redacted if they appear in pasted evidence.
Current request is network-bound and runs only after its check button is pressed. The receiving service returns the observed remote address and a fixed set of proxy-relevant headers, truncates returned values to 320 characters, and marks the response not to be cached. Do not use this mode with a request context that contains secrets outside the normal browser headers.
Worked Examples:
One trusted reverse proxy
X-Forwarded-For contains a client claim followed by an edge address, and the observed remote address matches that edge. With one trusted hop, the rightmost edge is trusted and the address immediately to its left is the first untrusted candidate. The application should trust that candidate only because the known edge wrote or sanitized the chain.
Via header without an address chain
A lone Via value creates proxy-disclosure evidence and an Anonymous proxy signal, but no client trust path. The header supports the conclusion that an intermediary disclosed itself; it does not identify the original client or prove privacy.
References:
- RFC 7239: Forwarded HTTP Extension, RFC Editor, June 2014.
- IP Spoofing via HTTP Headers, OWASP Foundation.
- How to forward client IP headers with HAProxy, Simplified Guide.
- How to configure Nginx as a reverse proxy, Simplified Guide.