iOS 17+ ನಲ್ಲಿ SOCKS5 ಮೂಲಕ URLSession WebSocket ರೂಟ್ ಮಾಡಿ
iOS 17 ಅಥವಾ ನಂತರದ ಆವೃತ್ತಿಯಲ್ಲಿ ಸೆಷನ್-ಮಟ್ಟದ SOCKSv5 ಪ್ರಾಕ್ಸಿ ಮೂಲಕ URLSessionWebSocketTask ಅನ್ನು ಸಂರಚಿಸಿ ಮತ್ತು ರೂಟಿಂಗ್ ಅನ್ನು 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 ಸಾಗಣೆ ಅದೇ ಮಾರ್ಗವನ್ನು ಬಳಸಿತು ಎಂಬುದಕ್ಕೆ ಸಾಕ್ಷಿಯಲ್ಲ. ಈ ಸ್ಪಷ್ಟ ಡೀಬಗ್ ಸಂರಚನೆಯನ್ನು ಅಪ್ಲಿಕೇಶನ್ನ ಉದ್ದೇಶಿತ ಅಭಿವೃದ್ಧಿ ಪರಿಸರದೊಳಗೆ ಇರಿಸಿ.