/ProxyServer

简单的HTTP代理服务器

Primary LanguageC++

ProxyServer

简单的HTTP代理服务器

实现功能:

  • 在指定端口(例如 8080)接收来自客户的 HTTP 请求并且根据其中的 URL 地址访问该地址所指向的 HTTP 服务器(原服务器),接收 HTTP 服务器的响应报文,并将响应报文转发给对应的客户进行浏览
  • 支持 Cache 功能:求能缓存原服务器响应的对象,并能够通过修改请求报文(添加 If-Modified-Since 头行),向原服务器确认缓存对象是否是最新版本**
  • 网站过滤:允许/不允许重点内容访问某些网站
  • 用户过滤:支持/不支持某些用户访问外部网站
  • 网站引导:将用户对某个网站的访问引导至一个模拟网站(钓鱼)

实现步骤

  1. 加载套接字库,创建套接字
  2. 初始化套接字:设置 IP 地址和端口等属性
  3. 代理服务器接收客户端发送的 TCP 请求报文,并解析 HTTP 头部(method, url, host 等信息)
  4. 拓展功能:网站过滤,用户过滤,网站引导,检查是否有本地缓存(改造HTTP头添加 If-Modified-Since 字段)
  5. 代理连接到服务器,并将客户端发送的 HTTP 数据报文转发给目标服务器
  6. 接收目标服务器的响应报文 ,解析报文头信息:状态码为304时不需要更新缓存,并将本地缓存转发给客户端;否则直接将响应报文转发给客户端,并进行缓存
  7. 关闭套接字

博客原文: