通过另一个代理从一个代理连接到互联网

Connecting to the Internet from a Proxy via another Proxy

我正在构建一个简单的代理服务器。它不直接连接到互联网,而是通过其他代理服务器使用某种算法动态选择最合适的代理服务器。该代理服务器连接到 Internet。这是一个要求。 所以它看起来像这样:

Client ---> My Main Proxy ---> Proxy1 ----> Internet

Client ---> My Main Proxy ---> Proxy2 ----> Internet

Client ---> My Main Proxy ---> Proxy3 ----> Internet

我知道如何构建 My Main Proxy 的代理。但是如何将 My Main Proxy 连接到 ProxyX? 或者更确切地说,我如何通过 ProxyXMy Main Proxy 连接到 Internet(并将 return 结果连接到 Client)?

这取决于代理的类型(Socket 或 HTTP),但是 SocketURL 类 都有设置代理服务器的方法(设置它们以创建通过代理连接)。

例如:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.host", 8080));
HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection(proxy);

对于 TCP 套接字连接

Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("proxy.host", 80));
Socket socket = new Socket(proxy);
InetSocketAddress socketAddress = new InetSocketAddress(address, port);
socket.connect(socketAddress, 1000);