Ուղղորդել URLSession WebSocket-ները SOCKS5-ով iOS 17+ համակարգում
Կարգավորեք URLSessionWebSocketTask-ը նստաշրջանի մակարդակի SOCKSv5 փոխարինիչի միջոցով iOS 17 կամ ավելի նոր տարբերակում և առանձնացրեք ուղղորդումը WSS ապակոդավորումից։
iOS հավելվածի սովորական HTTPS հարցումները կարող են երևալ վրիպազերծման փոխարինիչում, մինչդեռ դրա WebSocket երթևեկությունը բացակայում է։ Նախ որոշեք WebSocket-ի փոխադրամիջոցը. URLSessionWebSocketTask-ը կարող է օգտագործել նստաշրջանի մակարդակի փոխարինիչի կարգավորում, իսկ սեփական սոկետներ բացող գրադարանին անհրաժեշտ է իր աջակցվող ինտեգրումը։ iOS 17+ համակարգում չմշակված Network.framework կապի համար կարգավորեք NWConnection-ի սեփական փոխարինիչի համատեքստը։
iOS 17 կամ ավելի նոր տարբերակում ստեղծեք նստաշրջանը բացահայտ SOCKSv5 փոխարինիչով.
import Foundation
import Network
@available(iOS 17.0, *)
func makeDebugSession() -> URLSession {
let configuration = URLSessionConfiguration.default
let endpoint = NWEndpoint.hostPort(
host: "192.0.2.10", port: 8889)
configuration.proxyConfigurations = [
ProxyConfiguration(socksv5Proxy: endpoint)
]
return URLSession(configuration: configuration)
}Փոխարինեք փաստաթղթի հասցեն և պորտը գոյություն ունեցող վրիպազերծման փոխարինիչի հասանելի SOCKS լսիչով։ Միացրեք այդ լսիչը փոխարինիչի հավելվածում։ Դրա HTTP լսիչը կարող է լինել այլ պորտում։
Ստեղծեք webSocketTask-ը վերադարձված նստաշրջանից։ Այլ URLSession-ով ստեղծված առաջադրանքը չի ժառանգում այս նստաշրջանի վերագրանցումը։ Դատարկ proxyConfigurations զանգվածը օգտագործում է համակարգի լռելյայնները. դա ուղիղ երթուղու բացահայտ ընտրություն չէ։
Հասանելիությունը և ընթեռնելի հաղորդագրությունները առանձին նշաձողեր են
Ֆիզիկական հեռախոսին անհրաժեշտ է հասցե, որը հասնում է վրիպազերծման համակարգչին։ Այդ հեռախոսում 127.0.0.1-ը նշանակում է հենց հեռախոսը։ Ստուգեք լսիչի միջերեսը և փոխարինիչի թույլատրված հաճախորդի հասանելիությունը, երբ կապը երբեք չի հասնում այնտեղ։
SOCKS երթուղին կրում է կապը։ wss բովանդակությունը կարդալը լրացուցիչ պահանջում է վրիպազերծման գործիքի TLS ստուգման կարգավորում և համապատասխան վստահություն սարքում։ Վկայագրերի ամրացումը կամ առանձին TLS իրականացումը կարող են խոչընդոտել այդ ստուգմանը նույնիսկ երբ երթևեկությունը հասնում է լսիչին։
Փնտրեք WebSocket փոխանակումը և հաղորդագրությունները կապի հաստատումից հետո։ Socket.IO հավելվածից միայն մեկ հարցման հայտ տեսնելը ապացույց չէ, որ դրա հետագա WebSocket փոխադրամիջոցն օգտագործել է նույն երթուղին։ Պահեք այս բացահայտ վրիպազերծման կարգավորումը հավելվածի նախատեսված մշակման միջավայրում։