Kāpēc Java jūsu HTTP pieprasījumam izvēlējās SOCKS starpniekserveri
Pirms veco Windows starpniekservera risinājumu lietošanas pārbaudiet ProxySelector rezultātu un faktiskos JVM iestatījumus.
Java pieprasījums var saskarties ar vairākiem starpniekservera avotiem: skaidru klienta konfigurāciju, noklusējuma selektoru, JVM tīkla īpašībām un atbalstītiem operētājsistēmas iestatījumiem. Kad žurnālā negaidīti minēts SOCKS, noskaidrojiet, kurš avots to izvēlējās.
Kodam, kas izmanto noklusējuma selektoru, pārbaudiet lēmumu konkrētajam galamērķim:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
Tas parāda selektora kandidātus. Tas nepierāda, kurš savienojums galu galā izdevās, un klients ar savu skaidru maršrutu var izvēlēties citādi.
Pārbaudiet faktiskos iestatījumus
Pārskatiet http.proxyHost, https.proxyHost, socksProxyHost, to portus un java.net.useSystemProxies. JDK tīkla īpašību dokumentācija apraksta to tvērumu un prioritāti. Sistēmas starpniekservera noteikšana tiek pārbaudīta palaišanas laikā; iestatiet to apzināti, palaižot JVM.
Vēsturiskās atbildes apraksta konkrētas vecu Windows dialoglodziņu un vecu JDK kombinācijas. Šie ziņojumi var izskaidrot risinājuma izcelsmi, bet nepierāda, ka pašreizējai izpildlaika videi ir tā pati kļūda. Pirms operētājsistēmas iestatījumu maiņas visām lietojumprogrammām pierakstiet izpildlaika versiju un selektora izvadi.
Ja lietojumprogrammai vienam klientam nepieciešams HTTP starpniekserveris, skaidra starpniekservera konfigurācija var padarīt šo prasību skaidrāku. Ja tai nepieciešama centralizēta automātiska maršrutēšana, izmeklējiet, kāpēc selektors saņēma vai atgrieza negaidīto SOCKS ierakstu.
Pielāgotam selektoram jāsaglabā apzināti apiešanas gadījumi un kļūdu apstrāde. Visu SOCKS kandidātu filtrēšana bez izšķirības var pārtraukt savienojumus, kuriem viens bija jāizmanto. Izlabojiet nepareizo noteikumu ar mazāko tvērumu, ko varat noteikt.