Apache HttpClient 5.5 مسیر پیکربندی SOCKS را در تنظیمات سوکت مدیر اتصال گنجانده است. نمونه نگه‌داری‌شدهٔ آن از setSocksProxyAddress استفاده می‌کند:

InetSocketAddress socks =
    new InetSocketAddress("proxy.example.net", 1080);

PoolingHttpClientConnectionManager manager =
    PoolingHttpClientConnectionManagerBuilder.create()
        .setDefaultSocketConfig(
            SocketConfig.custom()
                .setSocksProxyAddress(socks)
                .build()
        )
        .build();

CloseableHttpClient client = HttpClients.custom()
    .setConnectionManager(manager)
    .build();

این قطعه از بسته‌های org.apache.hc در HttpClient 5 و SocketConfig در HttpCore استفاده می‌کند. درخواست‌هایی که با این کلاینت انجام می‌شوند از استخر پیکربندی‌شده در بالا استفاده می‌کنند. وقتی دامنهٔ مالکیت برنامه پایان یافت، کلاینت را ببندید.

نشانی واقعی وب‌سایت را مانند همیشه روی درخواست بگذارید. برای درخواست‌های مجاز به سایت‌های عمومی بدون احراز هویت پروکسی، فهرست پروکسی‌های SOCKS نشانی‌های نامزد را ارائه می‌دهد؛ نسخه‌ای از SOCKS را انتخاب کنید که محیط اجرای واقعی پشتیبانی می‌کند. نشانی SOCKS انتقالی را که برای رسیدن به آن استفاده می‌شود پیکربندی می‌کند؛ این یک مسیر پروکسی پیشرو HTTP که به‌صورت HttpHost داده شود نیست.

این‌ها تنظیمات سوکت پیش‌فرض این مدیر هستند. برنامه‌ای که از حل‌کنندهٔ SocketConfig برای هر مسیر استفاده می‌کند باید تنظیم SOCKS موردنظر را به‌جای آن از طریق همان سیاست اعمال کند. نمونه سیاست عادی DNS مقصد مدیر اتصال را حفظ می‌کند؛ حل نام از راه دور به پیکربندی جداگانهٔ تأییدشده نیاز دارد.

مقالات مرتبط