Letakkan Negosiasi SOCKS Netty Sebelum Protokol Aplikasi Anda
Atur handler proxy SOCKS Netty sebelum lalu lintas aplikasi dan pertahankan tujuan yang belum diresolusi saat DNS di sisi proxy memang diinginkan.
Untuk bootstrap/pipeline Netty yang sudah ada di mana server SOCKS harus meresolusi tujuan:
bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);
pipeline.addFirst(
new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);
bootstrap.connect(
InetSocketAddress.createUnresolved("example.com", 443)
);Endpoint proxy adalah port lokal 1080; target koneksi yang belum diresolusi adalah example.com:443. Jangan gunakan alamat proxy untuk kedua peran dan jangan resolusi nama sebelum handler menerimanya. Untuk tujuan publik pada rute proxy publik yang diizinkan, daftar proxy SOCKS5 menyediakan kandidat untuk endpoint proxy handler.
Letakkan Socks5ProxyHandler sebelum handler yang bertukar lalu lintas tujuan. Tunggu future koneksi proxy-nya, bukan sekadar channel yang mencapai listener. Metode atau tujuan yang ditolak termasuk dalam tahap penyiapan ini.
Untuk HTTPS, lapisan TLS berikutnya menggunakan nama host tujuan, verifikasi dan kepercayaan yang diperlukan—bukan identitas endpoint SOCKS. Baru setelah itu pertukaran HTTP/aplikasi dimulai.
Fragmen ini tidak menyediakan event loop, tipe channel, handler TLS/HTTP, atau penanganan kesalahan normal. Pilih konstruktor SOCKS yang sesuai kebutuhan autentikasi; handler HTTP Basic adalah protokol lain.
Gunakan resolver no-op hanya di tempat handler hilir ini memiliki resolusi nama host. Koneksi lain mungkin memerlukan pencarian lokal. Pisahkan keluaran resolver, future proxy, TLS, dan hasil aplikasi saat mendiagnosis kegagalan.