Java 带 Socks5 代理的 SSLSocket

Java SSLSocket with Socks5 Proxy

如何将 SSLSocket 与 socks5 代理一起使用?我使用带有代理的普通套接字作为底层。

此代码无效:

public void debugIP(Proxy proxy) throws IOException, NoSuchAlgorithmException, KeyManagementException {
      SSLContext sslContext = SSLContext.getInstance("SSL");
      sslContext.init(null, null, null);

      Socket underlying = new Socket(proxy);
      InetSocketAddress proxyAddress = (InetSocketAddress) proxy.address();

      underlying.connect(new InetSocketAddress("checkip.amazonaws.com", 80));

      SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket(
              underlying,
              proxyAddress.getHostName(),
              proxyAddress.getPort(),
              true);

      printInputStream(socket.getInputStream());
  }

  private void printInputStream(InputStream inputStream) throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));

      String line;

      while ((line = br.readLine()) != null) {
          System.out.println(line);
      }
  }

此代码抛出异常:

线程 "main" 中出现异常 javax.net.ssl.SSLException:无法识别 SSL 消息,纯文本连接?

没有 SSL,代码可以工作。

您正在将 SSL 与明文端口通信。

正如错误信息所说。

要么修复端口,要么不使用 SSL。