# HTTP proxy

An HTTP proxy is a proxy server addressed with the HTTP protocol: the client sends it either a full-URL request for plain HTTP, or a CONNECT request that opens a tunnel for HTTPS and other TCP traffic. Almost every HTTP client, browser and scraping framework supports it natively, which makes it the default choice for web work; SOCKS5 is the alternative for non-HTTP protocols.


## Two modes

| Mode | How it works | What the proxy sees |
| --- | --- | --- |
| Plain HTTP | The client sends `GET http://example.com/path` to the proxy, which fetches it | The full request and response |
| HTTPS via CONNECT | The client sends `CONNECT example.com:443`, then negotiates TLS through the tunnel | Only the destination host and port, and encrypted bytes |


## Authentication

Credentials travel in the `Proxy-Authorization` header, base64-encoded; a proxy that wants them answers `407 Proxy Authentication Required`. With IP whitelisting no header is needed, but the username can still carry targeting parameters.


## Configuration

```text
http://USER-cc-us:PASS@res.proxshift.com:9000
```


## How it works at ProxShift

ProxShift gateways accept HTTP(S) on port 9000; dedicated addresses on port 8000. The same proxy URL works for http:// and https:// destinations.

## Questions

**Do I need a separate "HTTPS proxy"?**

No. An HTTP proxy handles HTTPS destinations through CONNECT. "HTTPS proxy" sometimes means a proxy you reach over TLS yourself; most providers, ProxShift included, do not offer TLS to the proxy port because the browser-to-site TLS already protects the content.

Source: https://proxshift.com/glossary/http-proxy
