I-configure ang NWConnection SOCKS5 proxy sa iOS 17+
Ikabit ang iOS 17 SOCKSv5 ProxyConfiguration sa NWParameters.PrivacyContext bago gumawa ng NWConnection.
Sa iOS 17 at mas bago, maaaring maglapat ang Network.framework ng SOCKSv5 proxy sa pamamagitan ng isang privacy context. Ikabit ang context na iyon sa mga parameter bago gawin ang koneksyon:
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)
}
Nagbabalik ang function ng TLS connection na hindi pa nasisimulan. I-install ang state handling ng app, simulan ito sa nilalayong queue, pagkatapos ay palitan ang protocol ng app sa normal nitong daanan ng pagpapadala at pagtanggap.
Ang proxy.example:1080 ay ang SOCKS listener. Para sa mga pinapayagang koneksyon sa pampublikong serbisyo, nagbibigay ang listahan ng SOCKS5 proxy ng mga kandidatong host at port. Nananatiling destinasyon ang service.example:443. Inilalapat ng privacy context ang mga proxy configuration nito sa mga koneksyong nauugnay sa context na iyon; ang paggawa ng walang kaugnayang koneksyon gamit ang ibang mga parameter ay hindi nagmamana ng setup na ito.
Ito ang interface ng koneksyon ng Network.framework. Ang pag-override ng proxy sa URLSession o setting ng data store ng WKWebView ay nagko-configure sa mga hiwalay na mamimiling iyon. Para sa WebSocket na binuo sa NWConnection, kailangan ding magbigay ng angkop na mga opsyon sa WebSocket protocol ang app.