Įdėkite Netty SOCKS derybas prieš savo programos protokolą
Sudėkite Netty SOCKS proxy apdorotoją prieš programos srautą ir išsaugokite neišspręstą paskirties vietą, kai DNS proxy pusėje yra numatytas.
Esamam Netty bootstrap/pipeline, kuriame SOCKS serveris turėtų išspręsti paskirties vietą:
bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);
pipeline.addFirst(
new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);
bootstrap.connect(
InetSocketAddress.createUnresolved("example.com", 443)
);Proxy galinis taškas yra vietinis 1080 prievadas; neišspręstas ryšio tikslas yra example.com:443. Nenaudokite proxy adreso abiem vaidmenims ir neišspręskite vardo prieš apdorotojui jį gaunant. Leidžiamame viešojo proxy maršrute esantiems viešiesiems tikslams SOCKS5 proxy sąrašas teikia kandidatus apdorotojo proxy galiniam taškui.
Įdėkite Socks5ProxyHandler prieš apdorotojus, kurie keičia paskirties srautą. Laukite jo proxy ryšio future, ne tik kanalo, pasiekiančio klausytoją. Atmestas metodas ar paskirties vieta priklauso šiam sąrankos etapui.
HTTPS atveju kitas TLS sluoksnis naudoja paskirties hosto vardą, reikiamą patikrinimą ir pasitikėjimą—ne SOCKS galinio taško tapatybę. Tik tada prasideda HTTP/programos mainai.
Fragmentas neteikia įvykių ciklų, kanalų tipų, TLS/HTTP apdorotojų ar įprasto klaidų apdorojimo. Pasirinkite autentifikavimo poreikius atitinkantį SOCKS konstruktorių; HTTP Basic apdorotojas yra kitas protokolas.
Naudokite no-op resolver tik ten, kur šis tolesnis apdorotojas valdo hosto vardo sprendimą. Kitiems ryšiams gali prireikti vietinės paieškos. Diagnozuodami gedimą laikykite atskirai resolver išvestį, proxy future, TLS ir programos rezultatą.