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

标签 java proxy http-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(并将结果返回给 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);

关于java - 通过另一个代理从一个代理连接到互联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364517/

相关文章:

java - Java EE 7 属性文件配置的最佳实践建议是什么?

java - JComboBox 作为自定义 TableCellEditor

java - 在 jar 中找不到 KeyStore 文件,尽管存在于 jar 中

go - 由于 CLOSE_WAIT 和 TIME_WAIT 套接字上升导致代理服务器不稳定

linux - 从 TCP 连接获取 HTTP header

apache - 代理是否必须先完全加载所有内容才能将它们发回?

java - 在页面中集成 java applet

Apache 2.4 代理 AJP 服务于 Tomcat 8 的多个域

node.js - 如何从部署在AWS Elastic beanstalk上的node.js Express应用程序获取客户端IP?

proxy - X-Forwarded-For 和 X-Forwarded-IP 有什么区别?