یک اتصال SOCKS می‌تواند پیش از آنکه پروکسی فرصت حل مقصد را بیابد، به‌صورت محلی شکست بخورد. بررسی کنید آیا کد شما هنگام ساخت نشانی سوکت، هدف را حل کرده است.

برای سوکت Java SOCKS، نام میزبان هدف را با نشانی مقصد حل‌نشده نگه دارید:

Proxy proxy = new Proxy(Proxy.Type.SOCKS,
    new InetSocketAddress("203.0.113.10", 1080));
Socket socket = new Socket(proxy);
socket.connect(InetSocketAddress.createUnresolved(
    "destination.example", 443), 5000);

نقطه پایانی و نام میزبان جای‌نگهدار هستند؛ از سرویس SOCKS5 خود یا نامزدی از فهرست پروکسی SOCKS5 برای آزمون‌های مجاز مقصدهای عمومی استفاده کنید. تمایز مهم میان حل پروکسی برای دسترسی به آن و حفظ نام مقصد برای تبادل SOCKS است.

پس از اتصال، یک کلاینت HTTPS هنوز به نشست TLS برای نام میزبان مقصد نیاز دارد. پوشش TLS نباید از نام میزبان پروکسی به‌عنوان هویت همتا استفاده کند.

کد سطح بالاتر را نیز بررسی کنید: یک کتابخانه می‌تواند پیش از فراخوانی اتصال‌دهنده شما جست‌وجوی خود را انجام دهد. حفظ نام میزبان در این نشانی سوکت نمی‌تواند جست‌وجویی را که جای دیگری در برنامه انجام شده است بی‌اثر کند.

مقالات مرتبط