The exchange of information on the Internet is carried out on a client-server model. The client sends a request (what files he needs) and the server sends a reply (what files he needs). For close cooperation (full understanding) between the client and the server, the client sends additional information about itself: the version and name of the operating system, the configuration of the browser (including its name and version), etc.
This information is required by the server to know which web page to provide to the client. There are several different web page variants for different browser configurations. However, web pages usually do not depend on the browser, so it is quite possible to hide this information from the web server.

Data that the browser sends to the web server
- Operating system name and version
- Browser name and version
- Browser configuration (display resolution, color depth, java/javascript support)
- Client IP address
- Other information
The most important part of such information and not required by the web server is information about the IP address. From the IP, the following information can be obtained:
- Country where IP originates
- The city where the IP originated
- Service provider name and email
- The physical address of the IP owner
Environment Variables
The information sent by the client to the server can be accessed by the server as environment variables. Each unit of information is the value of some variable. If any unit of information is not passed, then the corresponding variable will be empty (the value is not specified).
The following are some environment variables:
REMOTE_ADDR ? TheIP address of the client
HTTP_VIA ? If it is not empty, then a proxy is used. Value is the address (or addresses) of the proxy server, this variable is added by the proxy server itself if you use it.
HTTP_X_FORWARDED_FOR ? If it is not empty, then a proxy is used. The value is the client’s original IP address (your IP), this variable is also added by the proxy server if you use it.
HTTP_ACCEPT_LANGUAGE ? What language is used in the browser (what language should be displayed on the page)
HTTP_USER_AGENT ? Also called “user agent”. For all browsers, this is Mozilla. In addition, the name and version of the browser (e.g. MSIE 5.5) and operating system (e.g. Windows 10) are also mentioned here.
HTTP_HOST ? is the name of the web server
In addition to the variables mentioned above, there are many other environmental variables such as DOCUMENT_ROOT, HTTP_ACCEPT_ENCODING, HTTP_CACHE_CONTROL, HTTP_CONNECTION, SERVER_ADDR, SERVER_SOFTWARE, SERVER_PROTOCOL, and others. The number of variables depends on server and client settings.
The following are examples of variable values:
REMOTE_ADDR = 194.5.1.1
HTTP_ACCEPT_LANGUAGE = ru
HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 5.0; Windows XP)
HTTP_HOST = www.webserver.ru
HTTP_VIA = 194.5.1.1 (Squid/2.4.STABLE7)
HTTP_X_FORWARDED_FOR = 194.5.5.5
Proxy Anonymity on the Internet
Anonymity on the Internet is determined by environment variables that are hidden from web servers. If a proxy server is not used, then the environment variables will look as follows:
REMOTE_ADDR = Your IP
HTTP_VIA = not specified
HTTP_X_FORWARDED_FOR = not specified
According to how environment variables are “hidden” by proxy servers, there are several types of proxies