ב-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 המתאימות.

מאמרים קשורים