የ 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 ፕሮቶኮል አማራጮችም ማቅረብ አለበት።