Наладжванне SOCKS5-проксі NWConnection на iOS 17+
Далучыце iOS 17 SOCKSv5 ProxyConfiguration да NWParameters.PrivacyContext перад стварэннем NWConnection.
У 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.