در iOS 17 و جدیدتر، Network.framework می‌تواند پروکسی SOCKSv5 را از طریق یک زمینه حریم خصوصی اعمال کند. پیش از ساخت اتصال، آن زمینه را به پارامترها متصل کنید:

import Network

@available(iOS 17.0, *)
func makeConnection() -> NWConnection {
    let parameters = NWParameters.tls
    let context = NWParameters.PrivacyContext(description: "Service route")
    let endpoint = NWEndpoint.hostPort(
        host: "proxy.example", port: 1080)
    context.proxyConfigurations = [
        ProxyConfiguration(socksv5Proxy: endpoint)
    ]
    parameters.setPrivacyContext(context)
    return NWConnection(
        host: "service.example", port: 443, using: parameters)
}

تابع یک اتصال TLS آغازنشده برمی‌گرداند. مدیریت وضعیت برنامه را نصب کنید، آن را روی صف موردنظر آغاز کنید و سپس پروتکل برنامه را از مسیر عادی ارسال و دریافت آن تبادل کنید.

proxy.example:1080 شنونده SOCKS است. برای اتصال‌های مجاز به سرویس‌های عمومی، فهرست پروکسی SOCKS5 نامزدهای میزبان و درگاه را فراهم می‌کند. service.example:443 مقصد باقی می‌ماند. زمینه حریم خصوصی پیکربندی‌های پروکسی خود را روی اتصال‌های مرتبط با آن زمینه اعمال می‌کند؛ ساخت یک اتصال نامرتبط با پارامترهای دیگر این تنظیم را به ارث نمی‌برد.

این رابط اتصال Network.framework است. بازنویسی پروکسی URLSession یا تنظیم انبار داده WKWebView آن مصرف‌کننده‌های جداگانه را پیکربندی می‌کند. برای WebSocket ساخته‌شده روی NWConnection، برنامه باید گزینه‌های مناسب پروتکل WebSocket را نیز فراهم کند.

مقالات مرتبط