Java 独立代理程序
Java standalone proxy program
我正在为浏览器制作代理应用程序。它必须只使用标准库。到目前为止,我已经成功地创建了服务器。尝试从客户端访问网页时,我得到以下信息:
连接 gmail.com:443 HTTP/1.1
用户代理:Mozilla/5.0 Firefox/49.0
代理连接:保持活动状态
连接:保持活动状态
主持人:gmail.com:443
我的问题是:使用什么来处理请求?如何处理文件下载?
代理的一般行为如下:
- 从浏览器接收请求
- 向实际服务器发出请求,必要时解析所有重定向
- 从服务器获取响应并传递给客户端
我不会陷入更改 request/response headers、缓存等的复杂情况
现在,从上面可以看出,您正在建立到 gmail.com refer 的 SSL 连接。
浏览器实际上发送了正确的请求,在这种情况下,您需要实施握手并使用 HTTPS 连接到 gmail,在您这边卸载 SSL,并通过与浏览器协商的 SSL 将收到的响应发送到浏览器。
建议使用 HTTP 而不是 HTTPS,如果这不是生产评分系统并先尝试这个概念
获得 CONNECT
命令后,执行要求的操作:创建上游连接,并 return 适当的 success/failure 响应。如果上游连接成功,您现在要做的就是同时在两个方向上复制字节。端点将处理所有 SSL 问题、上传、下载等。您无需扮演其他角色。
我正在为浏览器制作代理应用程序。它必须只使用标准库。到目前为止,我已经成功地创建了服务器。尝试从客户端访问网页时,我得到以下信息:
连接 gmail.com:443 HTTP/1.1 用户代理:Mozilla/5.0 Firefox/49.0 代理连接:保持活动状态 连接:保持活动状态 主持人:gmail.com:443
我的问题是:使用什么来处理请求?如何处理文件下载?
代理的一般行为如下:
- 从浏览器接收请求
- 向实际服务器发出请求,必要时解析所有重定向
- 从服务器获取响应并传递给客户端
我不会陷入更改 request/response headers、缓存等的复杂情况
现在,从上面可以看出,您正在建立到 gmail.com refer 的 SSL 连接。
浏览器实际上发送了正确的请求,在这种情况下,您需要实施握手并使用 HTTPS 连接到 gmail,在您这边卸载 SSL,并通过与浏览器协商的 SSL 将收到的响应发送到浏览器。
建议使用 HTTP 而不是 HTTPS,如果这不是生产评分系统并先尝试这个概念
获得 CONNECT
命令后,执行要求的操作:创建上游连接,并 return 适当的 success/failure 响应。如果上游连接成功,您现在要做的就是同时在两个方向上复制字节。端点将处理所有 SSL 问题、上传、下载等。您无需扮演其他角色。