Glossary

What Is an HTTP Proxy?

An HTTP proxy is a proxy server that understands and forwards HTTP (and via the CONNECT method, HTTPS) traffic, operating at the application layer and able to inspect, modify, or cache request and response data for plain HTTP.

Understand how HTTP proxies differ from SOCKS5, what HTTP CONNECT does, and why HTTP proxies are the default protocol most scrapers and HTTP clients support.

Explained

An HTTP proxy is the most common type of proxy server. It understands HTTP at the application layer: when your client sends a request, the proxy can read the URL, headers, and (for plain HTTP) the body, before forwarding the request to the destination. For HTTPS, the proxy uses the CONNECT method to establish a TCP tunnel to the destination, after which it just relays encrypted bytes without seeing the content.

Most commercial proxy services — including residential, ISP, and datacenter providers — expose HTTP proxy endpoints because every HTTP client and library natively supports them. Setting `HTTP_PROXY` and `HTTPS_PROXY` environment variables, passing `proxies={...}` to Python's `requests`, or configuring a launch flag in Playwright all work out-of-the-box with HTTP proxy URLs like `http://user:pass@gate.shifter.io:10000`.

The difference between HTTP and SOCKS5 is mostly architectural. HTTP proxies operate at the application layer (can parse HTTP); SOCKS5 operates at the transport layer (just forwards TCP/UDP bytes). For HTTPS scraping the difference is mostly cosmetic — both end up tunneling encrypted bytes — and HTTP proxy support is more universal across tooling.

How It Works

For plain HTTP, your client sends the full request to the proxy (`GET http://example.com/path HTTP/1.1` with absolute URL), the proxy reads the URL, opens a connection to the destination, forwards the request, and relays the response back. For HTTPS, the client first sends a `CONNECT example.com:443` request to the proxy, the proxy opens a TCP tunnel to the destination, and from that point on the client and server speak TLS end-to-end through the proxy, which just shuffles encrypted bytes.

Authentication usually happens via the `Proxy-Authorization` header (Basic auth with username:password) or by encoding credentials in the proxy URL (`http://user:pass@host:port`). Geo-targeting and session parameters in commercial services are typically encoded in the username (`customer-USER-country-us-session-12345`).

Types

Forward HTTP Proxy

The shape commercial proxy services use. Sits in front of clients, represents them to the wider internet. Clients explicitly configure the proxy address.

Reverse HTTP Proxy

Sits in front of backend servers. Used for load balancing, caching, and SSL termination (Nginx, HAProxy, Cloudflare). Clients don't know the reverse proxy is there.

HTTP CONNECT Tunnel

The mechanism HTTP proxies use to handle HTTPS. The client asks the proxy to open a tunnel to the destination, then speaks TLS through the tunnel end-to-end with the destination.

HTTPS Proxy

An HTTP proxy you talk to over TLS. The client-to-proxy connection is encrypted (in addition to the end-to-end TLS through the CONNECT tunnel). Less common; used in privacy-focused configurations.

Common Use Cases

Scraping HTTP/HTTPS content (the dominant use case)
API access through a fixed-IP egress
Internal corporate egress filtering
Caching static content for bandwidth savings
Authenticating outbound traffic centrally
Per-application HTTP routing in dev / test environments
FAQ

Frequently asked questions

Common questions about http proxy.

An HTTP proxy operates at the application layer and can parse HTTP requests; a SOCKS5 proxy operates at the transport layer and forwards raw TCP/UDP. For HTTPS the difference is mostly cosmetic — both end up tunneling encrypted bytes. SOCKS5 wins when you need to proxy non-HTTP protocols (FTP, SMTP, BitTorrent, gaming).

No, not the content. For HTTPS the proxy opens a TCP tunnel via CONNECT and then just shuffles encrypted bytes between client and destination. The proxy can see the destination hostname (via the CONNECT request and TLS SNI) and the byte volume, but not the request body, headers, or response.

`proxies={'http': 'http://user:pass@gate.shifter.io:10000', 'https': 'http://user:pass@gate.shifter.io:10000'}; requests.get(url, proxies=proxies)`. Same proxy URL for both http and https — Python handles the CONNECT flow automatically when scheme is https.

Yes. Shifter exposes residential and ISP (static residential) proxy endpoints over HTTP/HTTPS (and SOCKS5). Use the same credentials and geo-targeting parameters across both protocols. Most customers use HTTP because of broader client support.

The mechanism HTTP proxies use to handle HTTPS. The client sends `CONNECT host:port HTTP/1.1` to the proxy, the proxy opens a TCP socket to the destination, and from that point on the client and destination speak TLS end-to-end through the tunnel. The proxy can't see the encrypted content.

HTTP to the proxy is fine for most commercial use. The end-to-end TLS for HTTPS targets stays encrypted regardless. HTTPS to the proxy adds one extra encryption layer between you and the proxy, which protects against passive observation of the CONNECT line and Proxy-Authorization header on untrusted networks. Worth it on public WiFi; usually overkill from a server.