說到HTTPS代理很多人瞬間就會聯想到HTTPS的各種證書和各種加密,覺得很高端很復雜的樣子。其實不然,代理服務器不需要配置證書、也不需要處理任何加密。因為HTTPS代理是通過Web隧道(Web tunnel)工作的。
Web隧道允許用戶通過HTTP連接發送非HTTP流量(例如FTP,Telnet,SMTP),這就使得那些使用非HTTP協議的應用程序可以通過HTTP代理工作了。你現在應該就明白了為什么QQ可用設置使用HTTP代理工作。Web隧道這么強大,但它并不復雜。
Web隧道是用HTTP協議的CONNECT方法建立起來的。CONNECT方法不是HTTP/1.1核心規范的一部分,但確是一種得到廣泛應用的擴展。客戶端通過CONNECT方法請求代理服務器創建一條到達任意目的服務器和端口的TCP鏈接,代理服務器僅對客戶端和服務器之間的后續數據進行盲轉發(只是轉發,不關心、也不懂發送的內容是什么)。
建立Web隧道的詳細步驟如下:
1) 客戶端通過HTTP協議發送一條CONNECT方法的請求給代理服務器,告知代理服務器需要連接的主機和端口。
例如:
CONNECT www.alipay.com:443 HTTP/1.1
User-agent: Mozilla/5.0
在本例中客戶端通過CONNECT方法請求代理服務器打開一條到www.alipay.com主機443端口的TCP鏈接。
2) 代理服務器一旦建立了和目標主機(上例中的www.alipay.com:443)TCP連接,就會回送一條HTTP 200 Connection Established應答給客戶端。
例如:
HTTP/1.1 200 Connection Established
Poryx-Agent: Squid/3.2
3) 此時隧道就建立起來了。客戶端通過該HTTP隧道發送的所有數據都會被代理服務器(通過之前建立起來的與目標主機的TCP連接)原封不動的轉發給目標服務器。目標服務器發送的所有數據也會被代理服務器原封不動的轉發給客戶端。注意:是原封不動的轉發,代理服務器并不需要知道內容的含義,也不會嘗試去對內容進行解析。

http://www.site-digger.com/html/articles/20151203/107.html