# ProxyServer **Repository Path**: camingo/ProxyServer ## Basic Information - **Project Name**: ProxyServer - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-25 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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. 关闭套接字 博客原文: - [CSDN:简单的HTTP代理服务器的实现(基本功能+拓展功能)](https://blog.csdn.net/qq_33003797/article/details/80246070) - [个人博客:简单的HTTP代理服务器的实现(基本功能+拓展功能)](https://salanghei.github.io/2018/05/08/%E7%AE%80%E5%8D%95%E7%9A%84HTTP%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E5%AE%9E%E7%8E%B0%EF%BC%88%E5%9F%BA%E6%9C%AC%E5%8A%9F%E8%83%BD-%E6%8B%93%E5%B1%95%E5%8A%9F%E8%83%BD%EF%BC%89/)