I need to configure the socks proxy in the Netty client (request different sites through socks4 or 5 proxies). I tried a lot of proxies from free sock lists (for example, www.socks-proxy.net, http://sockslist.net/ , etc.), but no luck:
@Test public void testProxy() throws Exception { final String ua = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"; final String host = "www.main.de"; final int port = 80; Bootstrap b = new Bootstrap(); b.group(new NioEventLoopGroup()) .channel(NioSocketChannel.class) .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); p.addLast(new HttpClientCodec()); p.addLast(new HttpContentDecompressor()); p.addLast(new HttpObjectAggregator(10_485_760)); p.addLast(new ChannelInboundHandlerAdapter() { @Override public void channelActive(final ChannelHandlerContext ctx) throws Exception { HttpRequest request = new DefaultFullHttpRequest(HTTP_1_1, GET, "/"); request.headers().set(HOST, host + ":" + port); request.headers().set(USER_AGENT, ua); request.headers().set(CONNECTION, CLOSE); ctx.writeAndFlush(request); System.out.println("!sent"); } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { System.out.println("!answer"); if (msg instanceof FullHttpResponse) { FullHttpResponse httpResp = (FullHttpResponse) msg; ByteBuf content = httpResp.content(); String strContent = content.toString(UTF_8); System.out.println("body: " + strContent); finish.countDown(); return; } super.channelRead(ctx, msg); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(System.err); ctx.close(); finish.countDown(); } }); p.addLast(new Socks4ProxyHandler(new InetSocketAddress("149.202.68.167", 37678))); } }); b.connect(host, port).awaitUninterruptibly(); System.out.println("!connected"); finish.await(1, MINUTES); }
The connection hangs, resets, or receives some strange exceptions. What's wrong? Proxy support was added to Netty with 4.1 (now there is 4.1CR, I tried 4.1b7-8 before)
source share