@Override public Socket createSocket(final String host, final int port) { return createSocks5ProxySocket(host, port); }
@Override public Socket createSocket(final String host, final int port, final InetAddress localHost, final int localPort) { return createHttpProxySocket(host, port); }
@Override public Socket createSocket(final String host, final int port) { return createSocks4ProxySocket(host, port); }
SSLSocket sslSocket = createSSLSocket( httpRequest.host(), httpRequest.port(), ); httpConnection = new SocketHttpSecureConnection(sslSocket); Socket socket = createSocket(httpRequest.host(), httpRequest.port(), httpRequest.connectionTimeout()); httpConnection = new SocketHttpConnection(socket); httpConnection.setTimeout(httpRequest.timeout()); httpConnection.init(); httpConnection.close();
/** * Returns socket factory based on proxy type and SSL requirements. */ protected SocketFactory getSocketFactory(final ProxyInfo proxy, final boolean ssl, final boolean trustAllCertificates) throws IOException { switch (proxy.getProxyType()) { case NONE: if (ssl) { return getDefaultSSLSocketFactory(trustAllCertificates); } else { return SocketFactory.getDefault(); } case HTTP: return new HTTPProxySocketFactory(proxy); case SOCKS4: return new Socks4ProxySocketFactory(proxy); case SOCKS5: return new Socks5ProxySocketFactory(proxy); default: return null; } } }
@Test @Disabled void testHttpProxy() { SocketHttpConnectionProvider s = new SocketHttpConnectionProvider(); s.useProxy(ProxyInfo.httpProxy("localhost", 1090, null, null)); HttpResponse response = HttpRequest.get("http://localhost:1080/get_books") .withConnectionProvider(s) .send(); assertEquals(200, response.statusCode()); assertTrue(response.body().contains("Tatum")); }
final boolean trustAll, final boolean verifyHttpsHost) throws IOException { SocketFactory socketFactory = getSocketFactory(proxy, true, trustAll); sslSocket = (SSLSocket) (getDefaultSSLSocketFactory(trustAll)).createSocket(socket, host, port, true);
@Override public void init() throws IOException { super.init(); sslSocket.startHandshake(); } }
/** * Creates a socket using socket factory. */ protected Socket createSocket(final String host, final int port, final int connectionTimeout) throws IOException { SocketFactory socketFactory = getSocketFactory(proxy, false, false); if (connectionTimeout < 0) { return socketFactory.createSocket(host, port); } else { // creates unconnected socket Socket socket = socketFactory.createSocket(); socket.connect(new InetSocketAddress(host, port), connectionTimeout); return socket; } }
@Test void testSocks5Proxy() { SocketHttpConnectionProvider s = new SocketHttpConnectionProvider(); s.useProxy(ProxyInfo.socks5Proxy("localhost", 1090, null, null)); HttpResponse response = HttpRequest.get("http://localhost:1080/get_books") .withConnectionProvider(s) .send(); assertEquals(200, response.statusCode()); assertTrue(response.body().contains("Tatum")); proxy.verify(request().withPath("/get_books"), exactly(1)); }
@Override public Socket createSocket(final String host, final int port, final InetAddress localHost, final int localPort) { return createSocks5ProxySocket(host, port); }
@Override public Socket createSocket(final String host, final int port) { return createHttpProxySocket(host, port); }
@Override public Socket createSocket(final String host, final int port, final InetAddress localHost, final int localPort) { return createSocks4ProxySocket(host, port); }
@Test void testSocks5ProxyWithHttps() { SocketHttpConnectionProvider s = new SocketHttpConnectionProvider(); s.useProxy(ProxyInfo.socks5Proxy("localhost", 1090, null, null)); HttpResponse response = HttpRequest.get("https://localhost:1080/get_books") .withConnectionProvider(s) .trustAllCerts(true) .send(); assertEquals(200, response.statusCode()); assertTrue(response.body().contains("Tatum")); proxy.verify(request().withPath("/get_books"), exactly(1)); }
@Override public Socket createSocket(final InetAddress host, final int port) { return createSocks5ProxySocket(host.getHostAddress(), port); }
@Override public Socket createSocket(final InetAddress host, final int port) { return createHttpProxySocket(host.getHostAddress(), port); }
@Override public Socket createSocket(final InetAddress host, final int port) { return createSocks4ProxySocket(host.getHostAddress(), port); }
@Override public Socket createSocket(final InetAddress address, final int port, final InetAddress localAddress, final int localPort) { return createSocks5ProxySocket(address.getHostAddress(), port); }
@Override public Socket createSocket(final InetAddress address, final int port, final InetAddress localAddress, final int localPort) { return createHttpProxySocket(address.getHostAddress(), port); }
@Override public Socket createSocket(final InetAddress address, final int port, final InetAddress localAddress, final int localPort) { return createSocks4ProxySocket(address.getHostAddress(), port); }