NWConnection-ի SOCKS5 պրոքսիի կարգավորումը iOS 17+-ում
NWConnection ստեղծելուց առաջ միացրեք iOS 17 SOCKSv5 ProxyConfiguration-ը NWParameters.PrivacyContext-ին։
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 արձանագրության ընտրանքներ։