monkeyWie / proxyee

HTTP proxy server,support HTTPS&websocket.MITM impl,intercept and tamper HTTPS traffic.
MIT License
1.54k stars 574 forks source link

connect方法直接返回,没有做对应的处理 #16

Open wenjianping opened 6 years ago

wenjianping commented 6 years ago

从方法实现看是直接返回成功,没有代理做socket连接。 实际测试socket协议走http代理不能连接

monkeyWie commented 6 years ago

没有太懂你的意思,有对应的代码贴出来吗

Babagilo commented 5 years ago

我猜他的意思是,按照 RFC7231 4.3.6 CONNECT 的要求,当proxy接收到CONNECT后,不应该不管三七二十一都发一个200 回去。而是应该根据具体情况相应处理。比如如果有设置使用二级代理的话, 那就应该把CONNECT转发给二级代理做处理。

JustUse commented 5 years ago

大佬我觉得应该是这里有问题(无论是否连接到后台服务器,就直接返回200了),HttpProxyServerHandle的channelRead方法。https代理应该是要等和后台服务器成功建立tcp连接才返回的 if ("CONNECT".equalsIgnoreCase(request.method().name())) {// 建立代理握手 status = 2; HttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpProxyServer.SUCCESS); ctx.writeAndFlush(response); ctx.channel().pipeline().remove("httpCodec"); // fix issue #42 ReferenceCountUtil.release(msg); return; }