An intermediary program which acts as both an HTTP server and as an HTTP client for the purpose of making requests on behalf of other HTTP clients. HTTP requests are serviced internally or by passing them on, with possible translation, to other HTTP servers. An HTTP proxy must implement both the client and server requirements of this specification. A "transparent proxy" is a proxy that does not modify the HTTP request or the HTTP response beyond what is required for proxy authentication and identification. A "non-transparent proxy" is a proxy that modifies the HTTP request or HTTP response in order to provide some added service to the user agent, such as group annotation services, media type transformation, protocol reduction, or anonymity filtering. Except where either transparent or non-transparent behavior is explicitly stated, the HTTP proxy requirements apply to both types of proxies. This term was developed from the definition of proxy in Hypertext Transfer Protocol -- HTTP/1.1.