SOCKS barta ugu dambeysa waxay kuu geysaa websaydhka. TLS lammaanaha gudaha xiriirkaas waa websaydhka laftiisa, marka u gudbi magaca martigeliyaha goobta loo socdo warshadda socket-ka lakabka leh:

String destination = "example.com";
int destinationPort = 443;
Proxy proxy = new Proxy(
    Proxy.Type.SOCKS,
    new InetSocketAddress("127.0.0.1", 1080)
);

try (Socket transport = new Socket(proxy)) {
    transport.connect(
        InetSocketAddress.createUnresolved(destination, destinationPort),
        5000
    );
    SSLSocketFactory factory =
        (SSLSocketFactory) SSLSocketFactory.getDefault();
    try (SSLSocket tls = (SSLSocket) factory.createSocket(
            transport, destination, destinationPort, true)) {
        SSLParameters parameters = tls.getSSLParameters();
        parameters.setEndpointIdentificationAlgorithm("HTTPS");
        tls.setSSLParameters(parameters);
        tls.setSoTimeout(15000);
        tls.startHandshake();
        // Send the application's HTTPS request through tls.
    }
}

Qaybtan waxay u qaadanaysaa soo-galinta caadiga ah ee Java networking iyo TLS, habaynta kalsoonida caadiga ah ee jirta iyo xiriir SOCKS oo aan u baahnayn aqoonsiga proxy. Waxay sameysaa gacan-qabashada; barnaamijku wali waa inuu diraa codsi HTTP qaabka uu serverka filayo. Bartilmaameedyada HTTPS ee dadweynaha ee waddooyinka dadweynaha ee la ogol yahay, liiska proxy-yada SOCKS wuxuu bixiyaa barta ugu dambeysa ee mushaharrada; la jaan-qaad nooca serverka iyo taageerada magaca martigeliyaha waddadan socket-ka Java.

Akhri labada aqoonsi ee tusaalaha

127.0.0.1:1080 waa barta ugu dambeysa ee proxy-ga, laga gaari karo habka Java. destination iyo destinationPort waxay aqoonsadaan websaydhka. createUnresolved waxay hayaan magaca martigeliyahaas waddada SOCKS halkii ay si degdeg ah u xallin lahaayeen macmiilka.

createSocket lakabka leh wuxuu helaa aqoonsiga goobta loo socdo. setEndpointIdentificationAlgorithm("HTTPS") wuxuu si cad u codsadaa hubintiisa magaca martigeliyaha. Kalsoonida silsiladda shahaadooyinka SSLSocket ceyriin keliya ma caddeyso in xaqiijinta magaca martigeliyaha daaran tahay. Beddelka magaca proxy-ga ama loopback si loo xakameeyo is-waafajin la'aan ayaa laga yaabaa inuu xaqiijiyo barta khaldan.

Hay kalsoonida iyo nadiifinta marxaladahooda

Warshadda caadiga ah waxay isticmaashaa habaynta kalsoonida JVM. Barnaamij leh shuruudo gaar ah wuxuu beddelkeeda isticmaali karaa warshaddiisa SSLContext oo si habboon loo bilaabay. Doorashadaas way ka duwan tahay waddada SOCKS; maareeyaha kalsoonida ee aqbala shahaad kasta ma hagaajiyo magac lammaane khaldan.

Diidmada SOCKS waxay dhacdaa TLS ka hor; shahaado aan la aamini karin ama magac martigeliyaha khaldan ayaa guuldarraysta inta lagu jiro TLS; khalad HTTP ayaa daboolli kara. Gelitaanka proxy-ga wuxuu ogolaansho siiyaa codsiga tunnel-ka halkii uu xaqiijin lahaa websaydhka gudaha.

Xiritaanka socket-ka lakabka leh iyada oo xiritaanka otomaatigga ah daaran waxay xirtaa gaadiidkiisa. Baaxadda kheyraadka dibadda sidoo kale waxay xirtaa gaadiidkaas haddii duubista ama gacan-qabashada ay guuldarraystaan ka hor dhamaystirka caadiga ah.

Maqaallo la xiriira