HTTPS代理是一种用于保护网络通信安全的代理方式,主要是用于在客户端与服务器之间建立一个安全的加密通道。在HTTPS代理的工作流程中,客户端首先发起请求,然后与代理服务器建立安全的加密连接,代理服务器将请求转发给服务器,获得响应后再将响应返回给客户端,在通信过程中对传输的数据进行加密。
HTTPS代理的工作流程如下:
- 客户端发起HTTPS请求。客户端通过向代理服务器发送一个CONNECT请求,用于请求建立一个HTTPS代理连接。
CONNECT www.example.com:443 HTTP/1.1
Host: www.example.com:443
Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
- 代理服务器建立安全的连接。 代理服务器接收到请求后,会建立一个与目标服务器的加密连接。如果证书验证成功,则返回以下响应消息。
HTTP/1.1 200 Connection established
Proxy-agent: ProxyAgent/1.0
-
客户端通过加密的通道发送业务请求。建立连接成功后,客户端通过加密的连接与服务器进行通信,传输加密数据。
-
代理服务器接收处理业务请求。代理服务器接收到从客户端发来的请求后,会解密请求,同时会对请求的目的地进行校验,确认请求已经通过验证的TLS链路传输到了代理服务器,接着向目的服务器发起请求。
-
目标服务器返回响应。 目标服务器将HTTP响应传输回代理服务器,由代理服务器将HTTP响应传递回客户端。
示例一:
假设客户端需要访问一个受保护的网站,网站被部署在443端口上(HTTPS协议),代理服务器的地址为192.168.1.100,端口为3128。客户端向代理服务器发出请求,请求代理服务器建立一条代理链路。
$ telnet 192.168.1.100 3128
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
CONNECT www.example.com:443 HTTP/1.1
Host: www.example.com:443
Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
HTTP/1.1 200 Connection established
Proxy-agent: ProxyAgent/1.0
示例二:
同理,我们假设代理服务器需要向另一个HTTP服务器发送请求并返回响应。代理服务器通过以下方式请求目标服务器:
CONNECT api.example.com:80 HTTP/1.1
Host: api.example.com:80
Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
目标服务器将HTTP响应传回客户端:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 364
<!DOCTYPE html>
<html>
...
</html>
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:什么是HTTPS代理? - Python技术站