กำหนดค่า 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 ที่เหมาะสมด้วย