Ang mga karaniwang HTTPS na kahilingan ng isang iOS app ay maaaring lumitaw sa debugging proxy habang kulang ang trapiko ng WebSocket nito. Tukuyin muna ang transport ng WebSocket: ang URLSessionWebSocketTask ay maaaring gumamit ng proxy configuration sa antas ng session, samantalang ang aklatang nagbubukas ng sarili nitong mga socket ay nangangailangan ng sarili nitong sinusuportahang integrasyon. Para sa hilaw na koneksyon ng Network.framework sa iOS 17+, i-configure ang sariling proxy context ng NWConnection.

Sa iOS 17 o mas bago, gumawa ng session na may tahasang SOCKSv5 proxy:

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)
}

Palitan ang address at port mula sa dokumentasyon ng naaabot na SOCKS listener ng umiiral na debugging proxy. I-enable ang listener na iyon sa proxy app. Ang HTTP listener nito ay maaaring nasa ibang port.

Gumawa ng webSocketTask mula sa ibinalik na session. Ang gawaing nilikha sa pamamagitan ng ibang URLSession ay hindi nagmamana ng override ng session na ito. Ang walang laman na proxyConfigurations array ay gumagamit ng mga default ng system; hindi ito tahasang pagpili ng direktang ruta.

Magkaibang milyahe ang maabot at nababasang mensahe

Ang pisikal na telepono ay nangangailangan ng address na umaabot sa debugging computer. Sa teleponong iyon, ang 127.0.0.1 ay tumutukoy sa telepono mismo. Suriin ang interface ng listener at ang pinapayagang client access ng proxy kapag hindi ito naaabot ng koneksyon.

Ang rutang SOCKS ay nagdadala ng koneksyon. Ang pagbasa ng nilalamang wss ay nangangailangan din ng setup ng TLS inspection ng debugging tool at angkop na pagtitiwala sa device. Ang certificate pinning o hiwalay na implementasyon ng TLS ay maaaring humadlang sa inspection na iyon kahit na umabot ang trapiko sa listener.

Hanapin ang pagpapalitan ng WebSocket at ang mga mensahe pagkatapos maitatag ang koneksyon. Ang makita lamang ang isang polling request mula sa isang Socket.IO app ay hindi patunay na ginamit ng huli nitong WebSocket transport ang parehong ruta. Panatilihin ang tahasang debugging configuration na ito sa loob ng inilaan na development setup ng app.

Kaugnay na mga artikulo