مسیریابی WebSocket های URLSession از طریق SOCKS5 در iOS 17+
URLSessionWebSocketTask را از طریق پروکسی SOCKSv5 در سطح نشست در iOS 17 یا جدیدتر پیکربندی کنید و مسیریابی را از رمزگشایی WSS جدا کنید.
درخواستهای HTTPS معمول یک برنامه iOS میتوانند در پروکسی اشکالزدایی دیده شوند در حالی که ترافیک WebSocket آن غایب است. ابتدا حامل WebSocket را مشخص کنید: URLSessionWebSocketTask میتواند از پیکربندی پروکسی در سطح نشست استفاده کند، در حالی که کتابخانهای که سوکتهای خودش را باز میکند به یکپارچهسازی پشتیبانیشده خودش نیاز دارد. برای یک اتصال خام Network.framework در iOS 17+، زمینه پروکسی خود 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 بعدی آن از همان مسیر استفاده کرده است. این پیکربندی صریح اشکالزدایی را در محیط توسعه مورد نظر برنامه نگه دارید.