HTTP headers: what a website learns from your visit
Every header your browser attached to this visit, shown unchanged as our server got it. Useful when a site shows the wrong language, or when you need to confirm a proxy isn’t adding headers of its own.
This visit carries proxy headers
Detected: X-Forwarded-Proto, X-Real-Ip. Each one signals to the site that a proxy handled the visit, and X-Forwarded-For may even pass along your office IP. For confidential research, the proxy should remove them.
| Header | Value |
|---|---|
| Accept | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
| Accept-Encoding | zstd, br, gzip |
| Accept-Language | en-US,en;q=0.5 |
| Host | cheapest-proxies.com |
| User-Agent | CCBot/2.0 (https://commoncrawl.org/faq/) |
| X-Forwarded-Proto | https |
| X-Real-Ip | 18.97.9.172 |
Why headers matter to your team
With every page request, the browser sends a set of HTTP request headers. The site uses them to decide which language and format to serve, whether to compress the response, and what kind of browser and device it is dealing with.
For proxy users, they are also where a misconfigured setup most often shows.
Headers that announce a proxy
Scan the table above for these:
X-Forwarded-For- records the address of the device behind the proxy. If the proxy forwards it, the site you are researching receives your office IP.Via- logs each proxy the request passed through, often with its software;Via: 1.1 squid/3.5, for instance, points to a Squid server.Forwarded- RFC 7239’s standard header for the details X-Forwarded-For carries, with the same effect.
Any site that looks for these headers can tell at once that the visit was relayed. Proxies marketed as “high anonymity” are meant to leave all three out, so if they appear here, take it up with the provider before the next project.
Consistency checks on everyday headers
Beyond proxy headers, sites and bot-management services check whether the rest of the request is consistent:
- User-Agent - names the browser and version; an outdated or unusual one stands out.
- Accept-Language - the languages the user reads, in order of preference, for example
en-US,en;q=0.9; many sites choose the page language from it. An empty value, or*/*, suggests a script. - Accept - a browser asks for
text/html,application/xhtml+xml,...and more; a bare*/*is typical of scripts. - Sec-Fetch-* - three context headers (Sec-Fetch-Site, Sec-Fetch-Mode, Sec-Fetch-Dest) sent by Chrome and Edge. A visit labelled as Chrome without them looks inconsistent.
- Sec-Ch-Ua - the Client Hints header of Chrome 90+, which needs to tell the same story as the User-Agent.
- DNT, Upgrade-Insecure-Requests - lesser headers whose presence varies by browser.
The three anonymity levels, compared
Proxies are usually grouped into three levels by what they do with these headers:
- Transparent - forwards your own IP in X-Forwarded-For and announces itself in Via. Unsuitable for any research you want kept confidential.
- Anonymous - keeps your address back yet still sends Via: the site learns that a proxy sits in between, but not whose visit it is.
- Elite (high anonymity) - removes all of them, leaving no header-level sign of a proxy.
All our proxies are configured as elite: Via, Forwarded, X-Forwarded-For and Client-IP are stripped before any request is passed to the site.
Checking a proxy your team just received
Load this page twice in the browser your team will use, first with the proxy off, then with it on. If X-Forwarded-For or Via appears only on the second visit, the proxy is adding them; ask the provider to fix it or switch to an elite proxy. If the two tables match, the proxy adds nothing of its own.