我已經構建了用於捕獲所有HTTP請求的Android代理服務器。我也收到HTTPS,其中我不感興趣,但我只是想通過它們。Android的代理服務器 - 處理HTTPS
根據http://muffin.doit.org/docs/rfc/tunneling_ssl.html 當SSL連接通過代理進入時,HTTP方法是CONNECT。爲此,我送響應客戶端:
if (request.startsWith("CONNECT")) {
proxyOutputStream.write(("HTTP/1.1 200 Connection established" + CRLF + CRLF).getBytes());
proxyOutputStream.flush();
,然後啓用雙向連接:
DirectionalConnectionHandler client = new DirectionalConnectionHandler(mProxySocket, mOutsideSocket);
client.start();
DirectionalConnectionHandler server = new DirectionalConnectionHandler(mOutsideSocket, mProxySocket);
server.start();
但是「建立連接」原因「ERR_SSL_PROTOCOL_ERROR」錯誤的瀏覽器。 如果我不發送「建立連接」響應,錯誤是ERR_TUNNEL_CONNECTION_FAILED
應該做些什麼來啓用正常的HTTPS連接並且不會中斷瀏覽器?
您需要先建立上游連接。然後將其成功或失敗狀態交付給客戶。目前,你只是向客戶說謊,連接成功,當你還沒有嘗試過。 – EJP