一问读懂并了解HTTP代理的基本原理

代理分类

  • 正向代理:代理客户端

  • 反向代理:代理服务器,cdn雏形

  • 透明代理:代理客户端

三种代理模式概览
详细对比表

通过curl分析HTTP代理

cpp 复制代码
curl -x https://127.0.0.1:31181 https://httpbin.org/get?abc=123
  • 正常访问httpbin.org

  • 通过代理访问httpbin.org

通过抓包分析,两个包的请求行分别是/get?abc=123和http://httpbin.org/get?abc=123。所以通过请求行,可以很清楚的知道客户端请求的目的url。

下面是代理服务伪代码:

cpp 复制代码
#通过代理,访问目的地址
if url.startwith('http'){
	#获取headers
	#获取cookies
	#获取url
	#检查授权
	if check_auth(){
		resp = request(url,heders,cookies)
		retrun resp
	}
	else{
		#授权失败
		return 403;//forbidden
	}
}

此时一个简单的HTTP代理即可完成。至于更多细节,例如请求头是否包含真实客户机IP等细节处理,根据实际业务需求处理即可。

通过浏览器代理分析

发现浏览器并未遵守上述规则,但是都有一个共同点:HOST,始终是目标HOST,所以代理服务进一步优化:

cpp 复制代码
#通过代理,访问目的地址
{
	#获取请求头的HOST 生成完整的URL
	#如果状态行的URL包含HOST(eg:curl 代理),则直接使用URL,如果不包含则从请求头获取HOST,拼接URL
	#获取cookies
	#检查授权
	if check_auth(){
		resp = request(url,heders,cookies)
		retrun resp
	}
	else{
		#授权失败
		return 403;//forbidden
	}
}
HTTP 代理之tunnel

HTTP tunnel,即CONNECT 方法,通过代理服务建立一条TCP通道,实现客户机和后端服务通讯。当Tunnel建立之后,代理服务只维护通道链接,并不需要解析包,此时传送数据可以是任何数据流,不在受HTTP协议限制。

cpp 复制代码
CONNECT httpbin.org:80 HTTP/1.1
Host: httpbin.org:80
Proxy-Authorization: basic *
相关推荐
盛世宏博智慧档案31 分钟前
TCP以太网温湿度传感器:从RS485痛点突围到工业组网实战
网络·网络协议·tcp/ip
富洋金锐34 分钟前
windows-winmtr与pathping命令-网络丢包排查
网络·windows
m0_547486661 小时前
《网络与信息安全》全套PPT课件2026
网络·网络安全
wdfk_prog1 小时前
LWIP教程 13:从 `dhcp_start()` 到 `DHCP_STATE_BOUND`——DHCPv4、ACD、Timer 与真实抓包
运维·网络协议
星云低代码开发平台1 小时前
AI 连接器运行健康度:指标、异常恢复和联调清单
大数据·运维·网络·数据库·人工智能·mcp
花间相见2 小时前
【计算基础|网络12】TCP 抓包与经典边界问题
网络·tcp/ip·策略模式
zoyation2 小时前
jrp 1.2.0 重磅发布|P2P打洞直连 · 端口自动分配 · 一端口多服务,这次全齐了!
网络·网络协议·p2p
励志师code2 小时前
RoCE 网络实战:从 NCCL 调优到 RDMA 硬件计数器排障
linux·运维·网络·云计算
砚凝霜2 小时前
【软考信息安全】第二十一章 网络设备安全增强技术与漏洞防护
网络·安全·web安全
Alinket3 小时前
毫米波雷达 vs 摄像头 vs 手环:养老跌倒监测三类方案怎么选
网络·数据库·健康医疗·信息与通信·iot