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 프로토콜 옵션도 제공해야 합니다.

관련 글