我已经构建了用于捕获所有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