「HTTP」- 代理 | HTTP PROXY

认识

HTTP 代理是一种位于客户端和目标服务器之间的中间服务器,它充当两者之间的中介,转发客户端的 HTTP 请求并返回服务器的响应。HTTP代理是网络架构中重要的组成部分,在安全、隐私和性能优化方面发挥着关键作用。

组成

Client ⇒ Proxy Server ⇒ Destination Server

报文格式

在 IP 和 TCP 中,DST IP Address 为 Proxy Server 地址,DST Port Number 为 Proxy Server 端口。

在 HTTP 中,报文也存在差异:

  • REQUEST URI 为完整地址;
  • 存在多个与 Proxy 相关的头部,例如 Proxy-Connection、X-Forwarded-For、……
GET http://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8

交互原理

  1. 客户端配置代理服务器地址和端口
  2. 客户端发送请求到代理服务器
  3. 代理服务器解析请求并转发到目标服务器
  4. 目标服务器响应代理服务器
  5. 代理服务器将响应返回给客户端

在 HTTP Proxy 中,DNS 解析发生在代理服务器。

构建

– Squid
– Nginx (可作为反向代理)
– Apache (mod_proxy)
– TinyProxy
– CCProxy (Windows平台)

性质

  1. 请求转发:接收客户端请求并转发给目标服务器
  2. 响应返回:接收服务器响应并返回给客户端
  3. 缓存功能:可缓存常用资源以减少带宽使用和提高响应速度
  4. 内容过滤:可过滤特定内容或网站
  5. 访问控制:可限制或允许特定用户/设备的访问
  6. 日志记录:记录用户访问信息

## 类型分类

### 按匿名程度分类
透明代理:不隐藏客户端IP,服务器知道请求经过代理
匿名代理:隐藏客户端IP但会表明是代理访问
高匿代理:完全隐藏代理特征,服务器无法检测

### 按协议支持分类
HTTP代理:仅支持HTTP协议
HTTPS代理:支持加密的HTTPS连接
SOCKS代理:支持多种协议,不限于HTTP

应用

  1. 企业网络管理:控制员工上网行为
  2. 突破网络限制:访问被封锁的网站
  3. 网络加速:通过缓存提高访问速度
  4. 隐私保护:隐藏真实IP地址
  5. 网络爬虫:防止IP被封锁
  6. 负载均衡:分发网络请求

参考

At a Glance: HTTP Proxy Packets vs. Normal HTTP Packets
How does a HTTP Proxy utilize the HTTP protocol? a Proxy RFC?