ਤੁਹਾਡੀ HTTP ਬੇਨਤੀ ਲਈ Java ਨੇ SOCKS ਪ੍ਰੌਕਸੀ ਕਿਉਂ ਚੁਣੀ
ਪੁਰਾਣੇ Windows ਪ੍ਰੌਕਸੀ ਹੱਲ ਲਾਗੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ProxySelector ਨਤੀਜਾ ਅਤੇ ਪ੍ਰਭਾਵੀ JVM ਸੈਟਿੰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ।
ਇੱਕ Java ਬੇਨਤੀ ਕਈ ਪ੍ਰੌਕਸੀ ਇਨਪੁਟਾਂ ਨਾਲ ਮਿਲ ਸਕਦੀ ਹੈ: ਸਪਸ਼ਟ ਕਲਾਇੰਟ ਕੌਨਫਿਗਰੇਸ਼ਨ, ਡਿਫ਼ਾਲਟ ਚੋਣਕਰਤਾ, JVM ਨੈੱਟਵਰਕਿੰਗ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਸਮਰਥਿਤ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ। ਜਦੋਂ ਲੌਗ ਅਚਾਨਕ SOCKS ਦਾ ਜ਼ਿਕਰ ਕਰਦਾ ਹੈ, ਪਛਾਣੋ ਕਿ ਕਿਹੜੇ ਇਨਪੁਟ ਨੇ ਇਸਨੂੰ ਚੁਣਿਆ।
ਡਿਫ਼ਾਲਟ ਚੋਣਕਰਤਾ ਵਰਤਣ ਵਾਲੇ ਕੋਡ ਲਈ, ਸਹੀ ਮੰਜ਼ਿਲ ਲਈ ਫ਼ੈਸਲੇ ਦੀ ਜਾਂਚ ਕਰੋ:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
ਇਹ ਚੋਣਕਰਤਾ ਦੇ ਉਮੀਦਵਾਰਾਂ ਦੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ। ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ ਕਿ ਅੰਤ ਵਿੱਚ ਕਿਹੜਾ ਕਨੈਕਸ਼ਨ ਸਫਲ ਹੋਇਆ, ਅਤੇ ਆਪਣੇ ਸਪਸ਼ਟ ਰਸਤੇ ਵਾਲਾ ਕਲਾਇੰਟ ਵੱਖਰੀ ਚੋਣ ਕਰ ਸਕਦਾ ਹੈ।
ਪ੍ਰਭਾਵੀ ਸੈਟਿੰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ
http.proxyHost, https.proxyHost, socksProxyHost, ਉਹਨਾਂ ਦੇ ਪੋਰਟ ਅਤੇ java.net.useSystemProxies ਦੀ ਸਮੀਖਿਆ ਕਰੋ। JDK ਨੈੱਟਵਰਕਿੰਗ-ਵਿਸ਼ੇਸ਼ਤਾ ਦਸਤਾਵੇਜ਼ ਉਹਨਾਂ ਦੇ ਦਾਇਰੇ ਅਤੇ ਤਰਜੀਹ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ। ਸਿਸਟਮ ਪ੍ਰੌਕਸੀ ਖੋਜ ਸ਼ੁਰੂਆਤ ਵੇਲੇ ਜਾਂਚੀ ਜਾਂਦੀ ਹੈ; JVM ਸ਼ੁਰੂ ਕਰਦਿਆਂ ਇਸਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਸੈੱਟ ਕਰੋ।
ਇਤਿਹਾਸਕ ਜਵਾਬ ਪੁਰਾਣੇ Windows ਡਾਇਲਾਗਾਂ ਅਤੇ ਪੁਰਾਣੇ JDK ਦੇ ਖਾਸ ਸੁਮੇਲ ਦੱਸਦੇ ਹਨ। ਉਹ ਰਿਪੋਰਟਾਂ ਹੱਲ ਦੀ ਸ਼ੁਰੂਆਤ ਦੀ ਵਿਆਖਿਆ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਪਰ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦੀਆਂ ਕਿ ਮੌਜੂਦਾ ਰਨਟਾਈਮ ਵਿੱਚ ਉਹੀ ਬੱਗ ਹੈ। ਸਾਰੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਰਨਟਾਈਮ ਵਰਜਨ ਅਤੇ ਚੋਣਕਰਤਾ ਆਉਟਪੁੱਟ ਦਰਜ ਕਰੋ।
ਜੇ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਇੱਕ ਕਲਾਇੰਟ ਲਈ HTTP ਪ੍ਰੌਕਸੀ ਚਾਹੀਦੀ ਹੈ, ਤਾਂ ਸਪਸ਼ਟ ਪ੍ਰੌਕਸੀ ਕੌਨਫਿਗਰੇਸ਼ਨ ਉਸ ਲੋੜ ਨੂੰ ਸਪਸ਼ਟ ਕਰ ਸਕਦੀ ਹੈ। ਜੇ ਇਸਨੂੰ ਕੇਂਦਰੀ ਸਵੈਚਾਲਿਤ ਰਾਊਟਿੰਗ ਚਾਹੀਦੀ ਹੈ, ਤਾਂ ਜਾਂਚੋ ਕਿ ਚੋਣਕਰਤਾ ਨੂੰ ਅਚਾਨਕ SOCKS ਐਂਟਰੀ ਕਿਉਂ ਮਿਲੀ ਜਾਂ ਵਾਪਸ ਭੇਜੀ ਗਈ।
ਕਸਟਮ ਚੋਣਕਰਤਾ ਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਕੀਤੇ ਬਾਈਪਾਸ ਅਤੇ ਅਸਫਲਤਾ ਸੰਭਾਲ ਬਚਾਉਣੀ ਚਾਹੀਦੀ ਹੈ। ਹਰ SOCKS ਉਮੀਦਵਾਰ ਨੂੰ ਬਿਨਾਂ ਭੇਦਭਾਵ ਫਿਲਟਰ ਕਰਨਾ ਉਹਨਾਂ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਤੋੜ ਸਕਦਾ ਹੈ ਜੋ ਵਰਤਣੇ ਚਾਹੀਦੇ ਸਨ। ਗਲਤ ਨਿਯਮ ਨੂੰ ਸਭ ਤੋਂ ਛੋਟੇ ਦਾਇਰੇ ਨਾਲ ਠੀਕ ਕਰੋ ਜੋ ਤੁਸੀਂ ਪਛਾਣ ਸਕਦੇ ਹੋ।