Định tuyến WebSocket của URLSession qua SOCKS5 trên iOS 17+
Cấu hình URLSessionWebSocketTask qua proxy SOCKSv5 ở cấp phiên trên iOS 17 trở lên và tách việc định tuyến khỏi việc giải mã WSS.
Các yêu cầu HTTPS thông thường của ứng dụng iOS có thể xuất hiện trong proxy gỡ lỗi trong khi lưu lượng WebSocket của nó lại mất tích. Trước tiên hãy xác định hình thức vận chuyển WebSocket: URLSessionWebSocketTask có thể dùng cấu hình proxy ở cấp phiên, còn thư viện tự mở socket của riêng nó cần tích hợp được hỗ trợ riêng. Với kết nối Network.framework thô trên iOS 17+, hãy cấu hình ngữ cảnh proxy riêng của NWConnection.
Trên iOS 17 trở lên, hãy tạo phiên với một proxy SOCKSv5 rõ ràng:
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)
}Thay địa chỉ và cổng trong tài liệu bằng trình lắng nghe SOCKS có thể tiếp cận của proxy gỡ lỗi hiện có. Bật trình lắng nghe đó trong ứng dụng proxy. Trình lắng nghe HTTP của nó có thể ở cổng khác.
Tạo webSocketTask từ phiên được trả về. Tác vụ được tạo qua một URLSession khác không kế thừa phần ghi đè của phiên này. Mảng proxyConfigurations rỗng dùng mặc định của hệ thống; đó không phải là lựa chọn tuyến trực tiếp rõ ràng.
Khả năng tiếp cận và thông điệp đọc được là hai cột mốc riêng
Điện thoại thật cần một địa chỉ tiếp cận được máy tính gỡ lỗi. Trên điện thoại đó, 127.0.0.1 chỉ chính điện thoại. Hãy kiểm tra giao diện của trình lắng nghe và quyền truy cập ứng dụng khách được proxy cho phép khi kết nối không bao giờ tới được đó.
Tuyến SOCKS mang kết nối. Đọc nội dung wss còn cần thiết lập kiểm tra TLS của công cụ gỡ lỗi và sự tin cậy phù hợp trên thiết bị. Ghim chứng chỉ hoặc một triển khai TLS riêng có thể ngăn việc kiểm tra đó ngay cả khi lưu lượng tới được trình lắng nghe.
Hãy tìm trao đổi WebSocket và các thông điệp sau khi kết nối được thiết lập. Chỉ thấy một yêu cầu thăm dò từ ứng dụng Socket.IO không phải bằng chứng rằng hình thức vận chuyển WebSocket sau đó đã dùng cùng tuyến. Hãy giữ cấu hình gỡ lỗi rõ ràng này trong môi trường phát triển dự kiến của ứng dụng.