Java 通过预先存在的套接字路由Http(s)URL连接
我花了几个小时研究javax.net和sun.net的SSL实现以及apachehttpclient 4.3ssl处理(默认情况下使用javax.net工具作为其核心),但进展甚微,令人沮丧。我正试图通过先前创建的输入/输出流对来自HttpsURLConnection的流量进行隧道传输,以便能够访问HTTP java.net实用程序,同时能够通过我自己的流发送数据。我最初认为我可以通过使用这些输入/输出流的SocketImpl的自定义套接字实例恶意路由HttpsURLConnection,但似乎我必须更改默认的HttpsURLConnection SSLFactory才能实现这一点,这是不可行的,因为应用程序是多线程的。我对其他库和黑客修复开放Java 通过预先存在的套接字路由Http(s)URL连接,java,sockets,http,ssl,apache-httpclient-4.x,Java,Sockets,Http,Ssl,Apache Httpclient 4.x,我花了几个小时研究javax.net和sun.net的SSL实现以及apachehttpclient 4.3ssl处理(默认情况下使用javax.net工具作为其核心),但进展甚微,令人沮丧。我正试图通过先前创建的输入/输出流对来自HttpsURLConnection的流量进行隧道传输,以便能够访问HTTP java.net实用程序,同时能够通过我自己的流发送数据。我最初认为我可以通过使用这些输入/输出流的SocketImpl的自定义套接字实例恶意路由HttpsURLConnection,但似乎
我希望实现的最终目标是:Http(s)URLRequest(或支持SSL的等效Http功能)->我的自定义套接字->Internet在我看来,您最好的选择是在每个相关的
HttpsURLConnection
实例上安装您自己的SSLSocketFactory
。它可以创建一个SSLSocket
实例,该实例将委托给一个真实的实例,但返回环绕委托流的流
如果出于某种原因需要访问密码文本,可以将其颠倒过来,并将自己的
Socket
提供给SSLSocketFactory.createSocket(Socket…)
,我用于创建Tor隧道,我需要发出一些HTTPS请求,所以它们必须通过兰花的Stream类进行隧道传输。我没有意识到我能够设置一个HttpsURLConnection实例的SSLSocketFactory!非常感谢。底层普通套接字似乎是在调用SSLSocketFactory#createSocket
之前创建的。