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-ի տվյալների պահոցի կարգավորումը կարգավորում են այդ առանձին սպառողներին։ NWConnection-ի վրա կառուցված WebSocket-ի համար հավելվածը պետք է տրամադրի նաև համապատասխան WebSocket արձանագրության ընտրանքներ։

Առնչվող հոդվածներ