【问题标题】:Connecting to the Internet from a Proxy via another Proxy通过另一个代理从一个代理连接到 Internet
【发布时间】:2015-07-12 04:59:23
【问题描述】:

我正在构建一个简单的代理服务器。它不直接连接到互联网,而是通过其他代理服务器使用某种算法动态选择最合适的代理服务器。该代理服务器连接到 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? 或者更确切地说,我如何通过ProxyX 将My Main Proxy 连接到Internet(并将结果返回给Client)?

【问题讨论】:

    标签: java proxy http-proxy


    【解决方案1】:

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

    例如:

    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);
    

    【讨论】:

    • 第二个例子第三行的new InetSocketAddress(address, port); 是什么?如果我们要连接到代理,为什么还需要一对地址和端口?
    • @AlexanderSupertramp 那是目的地址和端口,你需要告诉代理到哪个地址转发你的连接。
    • 但我是通过将标头发送到代理来告诉它的,不是吗?
    • @AlexanderSupertramp Socket 类有多个构造函数,在这个例子中我使用一个接受Proxydocs.oracle.com/javase/7/docs/api/java/net/…的构造函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2018-11-16
    • 2016-11-30
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多