Na iOS 17 i novijima Network.framework može primijeniti SOCKSv5 proxy kroz kontekst privatnosti. Povežite taj kontekst s parametrima prije stvaranja veze:

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)
}

Funkcija vraća nepokrenutu TLS vezu. Instalirajte rukovanje stanjem aplikacije, pokrenite je na predviđenom redu, a zatim razmijenite protokol aplikacije uobičajenim putem slanja i primanja.

proxy.example:1080 je SOCKS slušatelj. Za dopuštene veze s javnim uslugama popis SOCKS5 proxyja daje kandidate za host i port. service.example:443 ostaje odredište. Kontekst privatnosti primjenjuje svoje proxy konfiguracije na veze povezane s tim kontekstom; stvaranje nepovezane veze s drugim parametrima ne nasljeđuje ovu postavku.

Ovo je sučelje veza Network.framework. Zamjena proxyja u URLSession ili postavka spremišta podataka WKWebView konfiguriraju te odvojene potrošače. Za WebSocket izgrađen na NWConnection, aplikacija također mora dostaviti odgovarajuće opcije WebSocket protokola.

Povezani članci