Using the Proxy with SauceLabs and/or BrowserStack

567 views
Skip to first unread message

Joe Foulkes

unread,
Oct 5, 2016, 5:31:10 PM10/5/16
to BrowserMob Proxy
Is anyone using BrowserMob Proxy with SauceConnect from SauceLabs (or BrowserStack Local from BrowserStack)?

I'm able to run the proxy locally and it's working fine, i.e. I'm able to run a python script to capture HAR data... but when using either SauceConnect or BrowserStackLocal I'm finding that in both cases the Proxy is throwing exceptions and neither of those two apps will work. The problem is seemingly related to secure https connections.

This is happening on OS X and Win10.

I'm using it like this (with SauceConnect), pretty-much following the respective guides...

./browsermob-proxy -port 8080

 curl -X POST http://localhost:8080/proxy

Proxy is now running on localhost:8081 and locally is working fine.

So now I'm running SauceConnect like this...

./sc -u myuser -k mykey --proxy localhost:8081

These are the specific errors shown in the SauceConnect output...

ERROR: connecting to https://saucelabs.com/versions.json: Peer certificate cannot be authenticated with given CA certificates, reply: [empty].
ERROR: can't reach https://saucelabs.com/versions.json, please check your firewall and proxy settings.
ERROR: connecting to https://google.com: Peer certificate cannot be authenticated with given CA certificates, reply: [empty].
ERROR: failed to reach https://google.com.
ERROR: please check your firewall and proxy settings. 

When those errors are thrown, I see a couple of exceptions in the proxy, namely...

(LittleProxy-0-ProxyToServerWorker-2) (DISCONNECTED) [id: 0x8ddf19d7, L:0.0.0.0/0.0.0.0:34544]: Connection to upstream server failed javax.net.ssl.SSLException: Received close_notify during handshake
(LittleProxy-0-ClientToProxyWorker-4) (AWAITING_INITIAL) [id: 0x5e262cbe, L:0.0.0.0/0.0.0.0:8200 ! R:/192.168.99.1:56686]: Caught an exception on ClientToProxyConnection io.netty.handler.codec.DecoderException: javax.net.ssl.SSLException: Received close_notify during handshake


Has anyone managed to get the proxy working with either of these, if so am I missing something?


Here's the full output from the exceptions...

[INFO 2016-10-05T16:09:22,938 org.littleshoot.proxy.impl.ProxyToServerConnection] (LittleProxy-0-ProxyToServerWorker-2) (DISCONNECTED) [id: 0x8ddf19d7, L:0.0.0.0/0.0.0.0:34544]: Connection to upstream server failed javax.net.ssl.SSLException: Received close_notify during handshake
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1776) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781) ~[?:1.8.0_92-internal]
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[?:1.8.0_92-internal]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1094) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:966) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:900) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:571) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398) [browsermob-dist-2.1.2.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877) [browsermob-dist-2.1.2.jar:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92-internal] [ERROR 2016-10-05T16:09:22,945 org.littleshoot.proxy.impl.ClientToProxyConnection] (LittleProxy-0-ClientToProxyWorker-4) (AWAITING_INITIAL) [id: 0x5e262cbe, L:0.0.0.0/0.0.0.0:8200 ! R:/192.168.99.1:56686]: Caught an exception on ClientToProxyConnection io.netty.handler.codec.DecoderException: javax.net.ssl.SSLException: Received close_notify during handshake
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:442) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:571) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398) [browsermob-dist-2.1.2.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877) [browsermob-dist-2.1.2.jar:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92-internal]
Caused by: javax.net.ssl.SSLException: Received close_notify during handshake
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1776) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781) ~[?:1.8.0_92-internal]
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[?:1.8.0_92-internal]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1094) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:966) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:900) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) ~[browsermob-dist-2.1.2.jar:?]
... 15 more [ERROR 2016-10-05T16:09:23,581 org.littleshoot.proxy.impl.ClientToProxyConnection] (LittleProxy-0-ClientToProxyWorker-5) (NEGOTIATING_CONNECT) [id: 0xd3d87764, L:0.0.0.0/0.0.0.0:8200 ! R:/192.168.99.1:56689]: Caught an exception on ClientToProxyConnection io.netty.handler.codec.DecoderException: javax.net.ssl.SSLException: Received close_notify during handshake
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:442) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:571) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426) [browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398) [browsermob-dist-2.1.2.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877) [browsermob-dist-2.1.2.jar:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92-internal]
Caused by: javax.net.ssl.SSLException: Received close_notify during handshake
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1776) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781) ~[?:1.8.0_92-internal]
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[?:1.8.0_92-internal]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1094) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:966) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:900) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) ~[browsermob-dist-2.1.2.jar:?]
... 15 more [INFO 2016-10-05T16:09:23,583 org.littleshoot.proxy.impl.ProxyToServerConnection] (LittleProxy-0-ProxyToServerWorker-3) (HANDSHAKING) [id: 0xc3727628, L:0.0.0.0/0.0.0.0:34546 ! R:saucelabs.com/162.222.75.243:443]: Connection to upstream server failed javax.net.ssl.SSLException: Received close_notify during handshake
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1776) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907) ~[?:1.8.0_92-internal]
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781) ~[?:1.8.0_92-internal]
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[?:1.8.0_92-internal]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1094) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:966) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:900) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:571) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426) ~[browsermob-dist-2.1.2.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398) [browsermob-dist-2.1.2.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877) [browsermob-dist-2.1.2.jar:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92-internal]

Joe

unread,
Oct 6, 2016, 7:19:58 AM10/6/16
to BrowserMob Proxy
Found the solution. Have to use the browsermob.js detailed here https://wiki.saucelabs.com/plugins/servlet/mobile#content/view/64717562
Reply all
Reply to author
Forward
0 new messages