2015-10-13 134 views
0

我在RemoteWebDriver中使用BrowserMob代理接口版本2.1.0-beta-3(最新版本),並在運行時經常看到以下警告/異常它。當驅動程序試圖導航到URL時,似乎遠程終端停止/崩潰/關閉連接。不過,我真的不知道會導致什麼結果。BrowserMob代理警告和異常java.io.IOException:由對等重置的連接

LittleProxy-0-ClientToProxyWorker-1é WARN org.littleshoot.proxy.impl.ClientToProxyConnection - (AWAITING_INITIAL) °id: 0x6d0bba70, /162.222.73.15:18708 => /<ip>:13000é: Caught an exception on ClientToProxyConnection 
java.io.IOException: Connection reset by peer 
    at sun.nio.ch.FileDispatcherImpl.read0(Native Method) 
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) 
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 
    at sun.nio.ch.IOUtil.read(IOUtil.java:192) 
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) 
    at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:447) 
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:881) 
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:242) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at java.lang.Thread.run(Thread.java:745) 
°LittleProxy-0-ClientToProxyWorker-0é WARN org.littleshoot.proxy.impl.ClientToProxyConnection - (NEGOTIATING_CONNECT) °id: 0xead90d4d, /162.222.73.15:19770 => /<ip>:13000é: Caught an exception on ClientToProxyConnection 
java.io.IOException: Connection reset by peer 
    at sun.nio.ch.FileDispatcherImpl.read0(Native Method) 
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) 
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 
    at sun.nio.ch.IOUtil.read(IOUtil.java:192) 
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) 
    at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:447) 
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:881) 
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:242) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at java.lang.Thread.run(Thread.java:745) 
°LittleProxy-0-ClientToProxyWorker-2é WARN org.littleshoot.proxy.impl.ClientToProxyConnection - (NEGOTIATING_CONNECT) °id: 0x79fa97f4, /162.222.73.15:9147 => /<ip>:13000é: Caught an exception on ClientToProxyConnection 
java.io.IOException: Connection reset by peer 
    at sun.nio.ch.FileDispatcherImpl.read0(Native Method) 
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) 
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 
    at sun.nio.ch.IOUtil.read(IOUtil.java:192) 
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) 
    at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:447) 
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:881) 
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:242) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at java.lang.Thread.run(Thread.java:745) 
°LittleProxy-0-ClientToProxyWorker-3é WARN org.littleshoot.proxy.impl.ClientToProxyConnection - (AWAITING_INITIAL) °id: 0xaa25c51b, /162.222.73.15:19720 => /<ip>:13000é: Caught an exception on ClientToProxyConnection 
java.io.IOException: Connection reset by peer 
    at sun.nio.ch.FileDispatcherImpl.read0(Native Method) 
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) 
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 
    at sun.nio.ch.IOUtil.read(IOUtil.java:192) 
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) 
    at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:447) 
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:881) 
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:242) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at java.lang.Thread.run(Thread.java:745) 

大部分時間繼續執行,它實際上定位到所需的URL並捕獲HAR但有時它只是掛起後,我要殺死進程。

另外,如果我讓這個進程繼續運行一段時間,請不斷收到這些錯誤。這看起來像是一個SSL證書問題,但它通常是從第一個捎帶出來的。

°LittleProxy-0-ClientToProxyWorker-3é ERROR org.littleshoot.proxy.impl.ClientToProxyConnection - (AWAITING_INITIAL) °id: 0x71209d6c, /162.222.73.15:6210 => /<ip>:13000é: Caught an exception on ClientToProxyConnection 
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLException: Received fatal alert: certificate_unknown 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:358) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:230) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.net.ssl.SSLException: Received fatal alert: certificate_unknown 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) 
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1639) 
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1607) 
    at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1776) 
    at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1068) 
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:890) 
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:764) 
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) 
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1135) 
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1025) 
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:965) 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:327) 
    ... 11 more 

一直在觀察這些例外情況也是如此,雖然我不認爲他們是broswermob相關或可能是

[LittleProxy-0-ClientToProxyWorker-0] ERROR org.littleshoot.proxy.impl.ClientToProxyConnection - (NEGOTIATING_CONNECT) [id: 0x2ea1eced, /162.222.73.13:7919 => /<ip>:13000]: Caught an exception on ClientToProxyConnection 
io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record: 802e0100020015000000100100800700c00300800600400200800400800000ff322036ba42651dc8aa28877107bb772c 
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:977) 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:327) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:230) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at java.lang.Thread.run(Thread.java:745) 
[LittleProxy-0-ClientToProxyWorker-2] ERROR org.littleshoot.proxy.impl.ClientToProxyConnection - (NEGOTIATING_CONNECT) [id: 0xcee6232c, /162.222.73.13:31136 :> 0.0.0.0/0.0.0.0:13000]: Caught an exception on ClientToProxyConnection 
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: Client requested protocol SSLv3 not enabled or not supported 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:358) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:230) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.net.ssl.SSLHandshakeException: Client requested protocol SSLv3 not enabled or not supported 
    at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1348) 
    at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:519) 
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:796) 
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:764) 
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) 
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1135) 
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1025) 
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:965) 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:327) 
    ... 11 more 
Caused by: javax.net.ssl.SSLHandshakeException: Client requested protocol SSLv3 not enabled or not supported 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1639) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:281) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:269) 
    at sun.security.ssl.ServerHandshaker.clientHello(ServerHandshaker.java:431) 
    at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:167) 
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913) 
    at sun.security.ssl.Handshaker$1.run(Handshaker.java:853) 
    at sun.security.ssl.Handshaker$1.run(Handshaker.java:851) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1285) 
    at io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1161) 
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1064) 
    ... 13 more 

我試圖尋找和網上搜索,但似乎並不具備良好的解。任何建議或指導將非常有幫助。

+0

你能澄清你的意思嗎?「有時它只是掛起後,我不得不殺死進程」?你最終會殺死瀏覽器/ HTTP客戶端,還是瀏覽器代理實例? –

+0

我必須殺掉髮出請求的Http客戶端。 – Programmer

回答

0

您已經提出了您在日誌中看到的幾個不同例外。在連接重置由對等,這也是我也看到很多。我還沒有能夠證實這一點,但我確實有一個理論是什麼導致這一點。

我正在運行加載多個頁面的測試套件。當第一頁測試完成時,它會加載下一頁。但是,當它這樣做時,可能仍然有網絡請求正在進行。當瀏覽器請求一個新頁面時,那些仍然打開的連接會發生什麼?我懷疑瀏覽器在移動之前關閉了這些連接。這會導致BrowserMob Proxy發生意外的關閉連接事件。當它發生時,它可能會拋出由對等方重置連接異常,然後被記錄。

如果是這種情況,那麼這可能是一個非問題。應該可以創建一些測試場景來證明這一點。

相關問題