Proxy Header Leak Test How to Check What a Website Receives
A proxy can change the network address seen by a destination while the HTTP request still carries headers that reveal an earlier hop, internal hostname, client address, or proxy software detail. A controlled header test helps a team understand what its actual application sends instead of relying on a generic anonymity label.
A proxy header leak test should compare the same request through a direct route and through the intended proxy. The test must use a diagnostic endpoint that the team owns or is authorized to call, and it should capture both the destination's view and the client's configuration. One result from a public checker is useful, but it cannot prove how every browser, library, redirect, or protocol behaves.
This guide explains which headers deserve attention, how to build a repeatable test, and how to separate HTTP header exposure from DNS, WebRTC, cookies, and other identity signals.

What an HTTP Header Can Reveal
HTTP headers describe the request, acceptable response formats, authentication, caching, user agent, and other context. Intermediaries can add, remove, or rewrite some fields. A destination receives the final header set after every intermediary has processed the request.
The standardized Forwarded header can describe the original client, the protocol, the host, and the intermediary. Deployments also use non-standard fields such as X-Forwarded-For, X-Real-IP, Via, Client-IP, or True-Client-IP. Their meaning depends on the system that created them and the trust relationship between hops.
The presence of one field is not automatically a leak. A reverse proxy controlled by the destination may add a forwarding header after receiving the connection from the forward-proxy exit. The test needs to determine which hop added the value and whether it contains information the client intended to protect.
Establish a Direct Baseline
Send a request from a controlled test client to an approved echo endpoint without the proxy. Save the public source address observed by the endpoint, the complete request headers returned by the endpoint, and the time. Use a fresh client profile if cookies or extensions might change the request.
Record the client environment, library or browser version, operating system, DNS mode, and any corporate network intermediaries. A baseline made behind a company gateway may already contain added headers. That is still useful, but it should be labeled accurately.
Do not publish the raw response if it includes tokens, cookies, internal addresses, or device identifiers. Store the evidence in restricted diagnostics and create a redacted version for reports.
Run the Proxied Request
Configure the proxy using the application's supported method. Confirm the proxy endpoint, protocol, authentication, and requested region without placing the secret in command history or screenshots. Send the same method, path, headers, and body used for the baseline.
The destination should observe the intended proxy exit as the network peer. Compare the header set field by field. Look for the direct public address, private addresses, local hostnames, account names, unredacted proxy credentials, or routing parameters that should not reach the destination.
Repeat the test across each client type used in production. A browser, server-side HTTP client, command-line tool, and headless automation framework can create different headers. Test HTTPS as well as HTTP when both are supported because tunneling changes which intermediaries can inspect application headers.
Interpret Forwarded and X Forwarded For
The Forwarded field can contain a chain of elements. Each intermediary may append information, but only trusted hops should be used for security decisions. A public client can send a fake Forwarded or X-Forwarded-For value unless the first trusted reverse proxy removes or overwrites untrusted input.
If the echo endpoint shows the client's original public IP inside one of these fields only when the forward proxy is enabled, investigate the proxy or an upstream intermediary. If the value appears in both direct and proxied tests, a local corporate gateway, client extension, or manually configured header may be responsible.
Private addresses such as common internal ranges do not reveal a routable home address, but they can expose network structure or create an unnecessary identifier. Remove them unless the receiving service has a documented operational need.
Review Via and Proxy Specific Fields
The Via header records protocol intermediaries and can support loop detection or diagnostics. It may identify proxy software or a pseudonym. This is not the same as exposing the original IP, but it can tell the destination that an intermediary exists.
Non-standard fields with names such as Proxy-Connection, Client-IP, Remote-Addr, or X-Proxy-ID require context. Some are generated by the client, some by a gateway, and some by the diagnostic service itself. Compare multiple controlled endpoints or server logs before assigning a cause.
A header name that contains the word proxy is not proof of a privacy failure. Focus on the value, its origin, and whether it violates the intended disclosure boundary.
Test Redirects and Multiple Destinations
Headers can change after a redirect. An HTTP client may preserve, remove, or recreate fields when the hostname changes. Authentication headers should not be forwarded to an unrelated host. Build a controlled redirect from one approved test hostname to another and inspect both requests.
Test direct destination access and a destination behind a reverse proxy. The reverse proxy may add client-address fields for its origin, while the public echo page may display a processed interpretation rather than the raw inbound request.
Use at least two known endpoints under controlled conditions. Public checkers can be convenient, but their display logic, caching, and privacy policy are outside your control. A proxy checker can provide an initial observation that should be confirmed with application-specific testing.
Separate Headers from Other Leak Paths
DNS resolution can occur locally, at the proxy, or through another configured resolver. A correct header result does not prove that DNS follows the intended path. Test DNS separately with an authorized unique hostname and observe where the query arrives.
Browsers can expose network information through WebRTC, extensions, local APIs, or account synchronization. Cookies and login state can identify a user even when no address appears in an HTTP header. Device language, time zone, screen data, and automation behavior can also make a regional test inconsistent.
The useful output is a disclosure inventory. List what the destination can observe at the network, HTTP, browser, and account layers. Avoid a single pass-or-fail anonymity score that hides those differences.
Automate the Test Safely
Create a small test suite that sends a known request and compares returned fields against an allowlist. The allowlist might permit standard Accept, User-Agent, and trace fields while rejecting the direct public IP, proxy credentials, internal hostnames, and unauthorized routing parameters.
Normalize header names because HTTP field names are case-insensitive. Preserve multiple values and ordering where it affects the interpretation. Record the proxy session, client version, observed exit, destination, and timestamp without logging secrets.
Run the suite after client-library upgrades, proxy configuration changes, network migrations, and browser-profile changes. A test that passed six months ago does not describe a new deployment automatically.
Fixes by Cause
If the client adds a header manually, remove it from the default header set and add it only where required. If a browser extension injects it, disable the extension in the controlled profile. If a corporate gateway adds it, work with the network owner rather than attempting to hide an approved enterprise control.
If the forward proxy adds an unexpected original-address field, collect a redacted request sample, timestamp, endpoint identifier, and session information and raise it with the provider. Do not send credentials in the support ticket.
If the reverse proxy or echo service creates the field, adjust the test interpretation. The origin may legitimately need the client address for security or rate control. The question is whether the public application exposes that internal field to an unauthorized party.
Common Test Mistakes
Testing only an IP display page is the most common mistake. It confirms the observed peer address but may not show raw headers or redirects. Another mistake is sending a different user agent or cookie state in the direct and proxied runs, which makes the comparison noisy.
Teams also treat a private address as proof that a public home address leaked. Private values can still be unnecessary, but they require a different severity assessment. Finally, do not disable TLS verification to make the test work. That changes the security model and can expose content to interception.
Test Checklist
1. Use an endpoint you own or are authorized to test.
2. Capture a labeled direct baseline.
3. Repeat with the same client and request through the proxy.
4. Confirm the observed exit address and requested location.
5. Compare Forwarded, X-Forwarded-For, Via, and non-standard fields.
6. Test HTTP, HTTPS, redirects, and each production client type.
7. Test DNS and browser leak paths separately.
8. Redact credentials, cookies, tokens, and personal data.
9. Attribute each field to the hop that created it.
10. Add a regression test after configuration changes.

Frequently Asked Questions
Does X Forwarded For always reveal the real IP
No. The value can be added, removed, or spoofed by different hops. Trust it only when a documented, approved intermediary created it and the chain is parsed correctly.
Is Via a sign that the proxy failed
No. Via can be a normal protocol field for intermediaries. It may disclose that a proxy exists, but it does not necessarily contain the client's original address.
Does HTTPS prevent header leaks
HTTPS protects application headers inside the TLS connection between the client and destination. A tunneling forward proxy normally cannot read them, but the client, destination reverse proxy, and any authorized TLS inspection layer can still add or process fields.
How often should the test run
Run it after material changes to the client, browser profile, proxy route, enterprise network, or destination integration. Periodic checks can also detect drift in long-lived systems.
Conclusion
A proxy header leak test is a controlled comparison, not a one-page anonymity score. Capture a direct baseline, repeat the same request through the intended route, inspect forwarding and proxy-specific fields, and attribute each value to a known hop. Test DNS, browser, and account signals separately, then keep a redacted regression suite so future changes do not reopen the same exposure.



