關(guān)泰超
2016-05-19
1. HTTPS代理問題很大,正常的代理應(yīng)該是建立一個隧道,proxy 收到請求之后,向 server 發(fā)送HTTP/1.1 200 Connection established,然后直接轉(zhuǎn)發(fā)雙方通信。這樣 server 一定會知道 client 在 proxy 后面。
如果 proxy 假裝是 client,那就是中間人攻擊了。正常來講,你不可能獲得 client 訪問的 URL 到底是什么。解決方法也許可以自簽一個證書?
2. 瀏覽器使用代理服務(wù)器設(shè)置時候,發(fā)給 proxy 的內(nèi)容和沒有使用發(fā)給 server 的內(nèi)容是不同的。起碼據(jù)我所知,直接訪問一般會是 GET / HTTP/1.1而發(fā)給 proxy 的會帶著域名。題主所說 header 那個不知道。所以需要確認(rèn)一下。而且,HOST 那個字段具體什么含義我現(xiàn)在還搞不清楚,正確的 proxy 到底要根據(jù)請求的 path 建立連接還是HOST?有知道的請告訴我。。。而且坑爹的是不同瀏覽器的 HOST 還有點不同。記得https時候 Firefox 還是 Opera 的 HOST 里會帶:443。。。所以不能確定到底有多少坑
3. 有一種和題主需求類似的實現(xiàn),Interception proxying,Interception proxying 對 client 來說假裝是 server,對 server 來說假裝是 client。但是據(jù) polipo 的作者說法,這種實現(xiàn)問題很大,不好說是不是能保證和協(xié)議兼容:
Interc...