# HTTP 代理

HTTP 代理是使用 HTTP 协议访问的代理服务器：客户端可以向它发送用于明文 HTTP 的完整 URL 请求，也可以发送 CONNECT 请求，为 HTTPS 和其他 TCP 流量建立隧道。几乎所有 HTTP 客户端、浏览器和抓取框架都原生支持它，因此它是网页任务的默认选择；对于非 HTTP 协议，则可以选择 SOCKS5。


## 两种模式

| 模式 | 工作方式 | 代理看到的内容 |
| --- | --- | --- |
| 明文 HTTP | 客户端向代理发送 `GET http://example.com/path`，由代理获取内容 | 完整的请求和响应 |
| 通过 CONNECT 的 HTTPS | 客户端发送 `CONNECT example.com:443`，然后通过隧道协商 TLS | 只有目标主机、端口和加密字节 |


## 身份验证

凭据经过 base64 编码后放在 `Proxy-Authorization` 请求头中传输；要求凭据的代理会返回 `407 Proxy Authentication Required`。使用 IP 白名单时不需要该请求头，但用户名仍可携带定位参数。


## 配置

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


## 在 ProxShift 中的工作方式

ProxShift 网关通过端口 9000 接受 HTTP(S)，专用地址则使用端口 8000。同一个代理 URL 同时适用于 http:// 和 https:// 目标。

## 问题

**我需要单独的“HTTPS 代理”吗？**

不需要。HTTP 代理通过 CONNECT 处理 HTTPS 目标。“HTTPS 代理”有时是指客户端自身通过 TLS 连接的代理；包括 ProxShift 在内的大多数服务商不为代理端口提供 TLS，因为浏览器与网站之间的 TLS 已经保护了内容。

来源：https://proxshift.com/zh/glossary/http-proxy
