browserup / browserup-proxy

BrowserUp Proxy is a free utility to watch, test, and manipulate web application network traffic and performance.
https://browserup.com
Apache License 2.0
164 stars 41 forks source link

CONNECT host:port request produces MalformedURLException: unknown protocol: ... #258

Open vlsi opened 4 years ago

vlsi commented 4 years ago

Describe the bug A clear and concise description of what the bug is.

url = new URL(httpRequest.uri()); throws exceptions because the URI does not always include the protocol.

I suggest that the proxy should recognize such URIs and handle them appropriately (e.g. by adding a dummy https:// if missing)

To Reproduce Steps to reproduce the behavior:

        val selenideConfig = SelenideConfig()
        val seleniumProxy = Proxy().setHttpProxy("${proxy.host}:${proxy.port}")
        val selenideProxy = SelenideProxyServer(selenideConfig, seleniumProxy)
        selenideProxy.proxy.chainedProxyAuthorization("username", "password", AuthType.BASIC)
        selenideProxy.start()
        val lazyDriver = LazyDriver(selenideConfig, selenideProxy.createSeleniumProxy(), Collections.emptyList())
        val selenideDriver = SelenideDriver(selenideConfig, lazyDriver)
        selenideDriver.open("https://www.google.com/")

Expected behavior

There should be no errors (and stacktraces) in case of successful operation.

Please complete the following information:

Additional context

java.net.MalformedURLException: unknown protocol: accounts.google.com
    at java.base/java.net.URL.<init>(URL.java:664) ~[na:na]
    at java.base/java.net.URL.<init>(URL.java:553) ~[na:na]
    at java.base/java.net.URL.<init>(URL.java:500) ~[na:na]
    at com.browserup.bup.BrowserUpProxyServer$2.lookupChainedProxies(BrowserUpProxyServer.java:412) ~[browserup-proxy-core-2.1.0.jar:na]
    at org.littleshoot.proxy.impl.ProxyToServerConnection.create(ProxyToServerConnection.java:178) ~[littleproxy-2.0.0-beta-5.jar:na]
    at org.littleshoot.proxy.impl.ClientToProxyConnection.doReadHTTPInitial(ClientToProxyConnection.java:281) ~[littleproxy-2.0.0-beta-5.jar:na]
    at org.littleshoot.proxy.impl.ClientToProxyConnection.readHTTPInitial(ClientToProxyConnection.java:187) ~[littleproxy-2.0.0-beta-5.jar:na]
    at org.littleshoot.proxy.impl.ClientToProxyConnection.readHTTPInitial(ClientToProxyConnection.java:55) ~[littleproxy-2.0.0-beta-5.jar:na]
    at org.littleshoot.proxy.impl.ProxyConnection.readHTTP(ProxyConnection.java:144) ~[littleproxy-2.0.0-beta-5.jar:na]
    at org.littleshoot.proxy.impl.ProxyConnection.read(ProxyConnection.java:122) ~[littleproxy-2.0.0-beta-5.jar:na]
    at org.littleshoot.proxy.impl.ProxyConnection.channelRead0(ProxyConnection.java:582) ~[littleproxy-2.0.0-beta-5.jar:na]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[netty-transport-4.1.48.Final.jar:4.1.48.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.48.Final.jar:4.1.48.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.48.Final.jar:4.1.48.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.48.Final.jar:4.1.48.Final]
mrbaco commented 3 years ago

Additional info: bug appears when using a chain of proxy.