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 ਦੀ ਬਦਲਵੀਂ ਸਪੈਲਿੰਗ ਨਹੀਂ। ਮੰਜ਼ਿਲ URL ਰੱਖੋ ਤਾਂ ਜੋ HTTPS ਲੋੜੀਂਦੀ ਵੈੱਬਸਾਈਟ ਦੀ ਪਛਾਣ ਕਰਦਾ ਰਹੇ।
ਜਿਸ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ java.net.http ਰੱਖਣਾ ਹੀ ਹੈ, ਉਹ ਇਸ ਦੀ ਬਜਾਏ ਅਨੁਕੂਲ HTTP ਪ੍ਰੌਕਸੀ ਐਂਡਪੁਆਇੰਟ ਵਰਤ ਸਕਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਅੱਗੇ ਦੀ SOCKS ਕਨੈਕਸ਼ਨ ਸੰਭਾਲਣ ਵਾਲਾ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਅਡੈਪਟਰ ਵੀ ਸ਼ਾਮਲ ਹੈ। ਇਹ ਇੱਕ ਅਸਲੀ ਹਿੱਸਾ ਅਤੇ ਇੱਕ ਹੋਰ ਪਹੁੰਚ ਸੀਮਾ ਜੋੜਦਾ ਹੈ; ਪੋਰਟ 8080 ਨੂੰ 1080 ਕਰਨਾ ਉਹ ਤਰਜਮਾ ਨਹੀਂ ਦਿੰਦਾ।
ਚੋਣ ਅਤੇ ਅਪਣਾਉਣ ਨੂੰ ਦਿੱਖਦਾ ਰੱਖੋ
ਚੋਣਕਾਰ ਦਾ ਨਤੀਜਾ ਅਤੇ ਕਲਾਇੰਟ ਵੱਲੋਂ ਅਸਲ ਵਿੱਚ ਖੋਲ੍ਹਿਆ ਕਨੈਕਸ਼ਨ ਦੋਵੇਂ ਦਰਜ ਕਰੋ। ਪਹਿਲਾ ਨੀਤੀ ਦਾ ਆਉਟਪੁੱਟ ਦੱਸਦਾ ਹੈ; ਦੂਜਾ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਕਾਰਜਾਨਵਿਤਨ ਨੇ ਇਸਨੂੰ ਅਪਣਾਇਆ ਜਾਂ ਨਹੀਂ।
ਸਿੱਟਿਆਂ ਨੂੰ ਵਰਤੇ ਜਾ ਰਹੇ ਰਨਟਾਈਮ ਅਤੇ ਟ੍ਰਾਂਸਪੋਰਟ ਨਾਲ ਬੰਨ੍ਹੋ। ਇੱਕ ਸਾਕਟ ਕਾਰਜਾਨਵਿਤਨ ਵੱਲੋਂ ਵਰਤੀਆਂ ਜਾਂਦੀਆਂ JVM SOCKS ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਇਹ ਵਾਅਦਾ ਨਹੀਂ ਕਿ ਹਰ HTTP ਲਾਇਬ੍ਰੇਰੀ ਉਨ੍ਹਾਂ ਨੂੰ ਪੁੱਛਦੀ ਹੈ। ਜਦੋਂ ਮਾਰਗ ਲਾਜ਼ਮੀ ਹੋਵੇ, ਤਾਂ ਦਿਖਣ ਵਿੱਚ ਸਫਲ ਸਿੱਧੀ ਬੇਨਤੀ ਸਵੀਕਾਰ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਅਸਮਰਥਿਤ ਪ੍ਰੌਕਸੀ ਕਿਸਮ ਦਾ ਪਤਾ ਲਗਾਇਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।