JDK 25 HttpClient SOCKS ProxySelector പാതകൾ ഉപയോഗിക്കുന്നില്ല
ProxySelector നൽകുന്ന തരത്തിൽ മാത്രം ആശ്രയിക്കാതെ SOCKS യഥാർത്ഥത്തിൽ പിന്തുണയ്ക്കുന്ന Java HTTP ട്രാൻസ്പോർട്ട് തിരഞ്ഞെടുക്കുക.
ഒരു Java പ്രോക്സി ഒബ്ജക്ട് ഒരു പാത വിവരിക്കുന്നു. ഏത് തരം പാതകൾ ഉപയോഗിക്കാമെന്ന് നെറ്റ്വർക്കിംഗ് ക്ലയന്റ് ഇപ്പോഴും തീരുമാനിക്കുന്നു. ലഭ്യമായ എൻഡ്പോയിന്റ് SOCKS സംസാരിക്കുകയും അപ്ലിക്കേഷൻ java.net.http.HttpClient ഉപയോഗിക്കുകയും ചെയ്യുമ്പോൾ ഇത് പ്രധാനമാണ്.
ഇവിടെ പരിശോധിക്കുന്ന JDK 25 നടപ്പാക്കലിൽ, HTTP ക്ലയന്റിന്റെ അഭ്യർത്ഥന കോഡ് സെലക്ടറിൽ നിന്ന് ഒരു HTTP സ്ഥാനാർത്ഥിയെ സ്വീകരിക്കുന്നു. SOCKS സ്ഥാനാർത്ഥി അതിനെ SOCKS ചർച്ച നടത്താൻ പ്രേരിപ്പിക്കുന്നില്ല; പ്രോക്സി ഇല്ലാതെ നടപ്പാക്കൽ തുടരാം. അതിനാൽ വിജയകരമായ പ്രതികരണം ഇഷ്ടാനുസൃത സെലക്ടറിന്റെ SOCKS എൻട്രി ഉപയോഗിച്ചു എന്നതിന് മതിയായ തെളിവല്ല.
ആദ്യം ട്രാൻസ്പോർട്ട് തിരഞ്ഞെടുക്കുക
നിലവിലുള്ള URLConnection അടിസ്ഥാനമാക്കിയ അപ്ലിക്കേഷനായി, കണക്ഷൻ തുറക്കുമ്പോൾ പ്രോട്ടോക്കോൾ ഹാൻഡ്ലറിന് പിന്തുണയുള്ള വ്യക്തമായ പ്രോക്സി നൽകാം:
Proxy route = new Proxy(Proxy.Type.SOCKS,
new InetSocketAddress("proxy.example", 1080));
URLConnection connection = URI.create("https://service.example/")
.toURL().openConnection(route);
connection.setConnectTimeout(5000);
connection.setReadTimeout(15000);
അനുവദനീയമായ പൊതു-ലക്ഷ്യ പരിശോധനകൾക്ക്, നിങ്ങളുടെ സേവനത്തിൽ നിന്നോ SOCKS പ്രോക്സി പട്ടികയിൽ നിന്നോ പൊരുത്തപ്പെടുന്ന SOCKS എൻഡ്പോയിന്റ് ഉപയോഗിക്കുക. ഇത് വേറിട്ട ക്ലയന്റ് API ആണ്, HttpClient.Builder.proxy യുടെ ബദൽ അക്ഷരവിന്യാസമല്ല. HTTPS ഉദ്ദേശിച്ച വെബ്സൈറ്റ് തിരിച്ചറിയാൻ ലക്ഷ്യ URL നിലനിർത്തുക.
java.net.http നിലനിർത്തേണ്ട അപ്ലിക്കേഷന് പകരം അനുയോജ്യമായ HTTP പ്രോക്സി എൻഡ്പോയിന്റ് ഉപയോഗിക്കാം, തുടർന്നുള്ള SOCKS കണക്ഷൻ കൈകാര്യം ചെയ്യുന്ന അംഗീകൃത അഡാപ്റ്റർ ഉൾപ്പെടെ. അത് യഥാർത്ഥ ഘടകവും മറ്റൊരു ആക്സസ് അതിരും ചേർക്കുന്നു; പോർട്ട് 8080 മുതൽ 1080 വരെ മാറ്റുന്നത് ആ വിവർത്തനം നൽകുന്നില്ല.
തിരഞ്ഞെടുപ്പും സ്വീകരണവും ദൃശ്യമാക്കുക
സെലക്ടറിന്റെ ഫലവും ക്ലയന്റ് യഥാർത്ഥത്തിൽ തുറക്കുന്ന കണക്ഷനും രേഖപ്പെടുത്തുക. ആദ്യത്തേത് നയ ഔട്ട്പുട്ട് വിവരിക്കുന്നു; രണ്ടാമത്തേത് നടപ്പാക്കൽ അത് സ്വീകരിച്ചോ എന്ന് നിർണ്ണയിക്കുന്നു.
നിഗമനങ്ങൾ ഉപയോഗിക്കുന്ന റൺടൈമിലും ട്രാൻസ്പോർട്ടിലും ബന്ധിപ്പിക്കുക. ഒരു സോക്കറ്റ് നടപ്പാക്കൽ ഉപയോഗിക്കുന്ന JVM SOCKS ഗുണങ്ങൾ എല്ലാ HTTP ലൈബ്രറിയും അവയെ സമീപിക്കും എന്ന വാഗ്ദാനമല്ല. പാത നിർബന്ധമാകുമ്പോൾ, പ്രത്യക്ഷത്തിൽ വിജയകരമായ നേരിട്ടുള്ള അഭ്യർത്ഥന സ്വീകരിക്കുന്നതിന് മുമ്പ് പിന്തുണയില്ലാത്ത പ്രോക്സി തരം കണ്ടെത്തണം.