Java яагаад таны HTTP хүсэлтэд 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 нэр дэвшигчийг ялгаваргүй шүүх нь ашиглах ёстой байсан холболтыг тасалдуулж болно. Буруу дүрмийг таньж болох хамгийн бага хамрах хүрээгээр засна уу.