How wanghongenpin/proxypin works
ProxyPin is a Flutter-based, cross-platform HTTP(S) traffic capture and inspection app. Its principal runtime path is a device VPN capturing packets, translating them into per-flow connections, and forwarding traffic through socket services; the README also documents filtering, rewriting, scripting, mapping, decryption, blocking, search, and history. The supplied tree and excerpts chiefly expose Android and iOS VPN plumbing, not the Flutter inspection UI or those feature implementations, so the graph focuses on evidenced packet-forwarding stages and notes that limit.
Main entry points: ConnectionHandler.swift iOS packet handler · SocketIOService.swift iOS socket service · ConnectionManager.kt Android flow manager · VpnServicePlugin.kt Android VPN bridge
Components 15
VPN platform entry
- Android VPN bridge
android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt - Android VPN service
android/app/src/main/kotlin/com/network/proxy/ProxyVpnService.kt - iOS tunnel provider
ios/ProxyPin/PacketTunnelProvider.swift
Packet processing
- iOS packet handler
ios/ProxyPin/vpn/ConnectionHandler.swift - Packet formats
ios/ProxyPin/vpn/transport/protocol/TCPPacketFactory.swift - Packet utilities
ios/ProxyPin/vpn/utils/PacketUtil.swift
Flow management
- Android flow manager
android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt - Android flow state
android/app/src/main/kotlin/com/network/proxy/vpn/Connection.kt - iOS flow manager
ios/ProxyPin/vpn/ConnectionManager.swift - iOS flow state
ios/ProxyPin/vpn/Connection.swift
Network I/O
- Android socket service
android/app/src/main/kotlin/com/network/proxy/vpn/socket/SocketNIODataService.java - Client packet writer
android/app/src/main/kotlin/com/network/proxy/vpn/socket/ClientPacketWriter.kt - iOS socket service
ios/ProxyPin/vpn/socket/SocketIOService.swift - iOS packet writer
ios/ProxyPin/vpn/socket/ClientPacketWriter.swift
Other components
- App user
Connections 14
- App user → Android VPN bridge: starts VPN
android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt - Android VPN bridge → Android VPN service: starts service
android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt - Android VPN service → Android flow manager: manages flows
android/app/src/main/kotlin/com/network/proxy/ProxyVpnService.kt - Android flow manager → Android flow state: creates flows
android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt - Android socket service → Client packet writer: writes packets
android/app/src/main/kotlin/com/network/proxy/vpn/socket/SocketNIODataService.java - Android flow manager → Android flow state: looks up flows
android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt - iOS tunnel provider → iOS packet handler: dispatches packets
- iOS packet handler → iOS flow manager: manages flows
ios/ProxyPin/vpn/ConnectionHandler.swift - iOS flow manager → iOS flow state: creates flows
ios/ProxyPin/vpn/ConnectionManager.swift - iOS packet handler → Packet formats: builds packets
ios/ProxyPin/vpn/ConnectionHandler.swift - iOS packet handler → Packet utilities: uses utilities
ios/ProxyPin/vpn/ConnectionHandler.swift - iOS socket service → iOS flow state: reads flow state
ios/ProxyPin/vpn/socket/SocketIOService.swift - iOS socket service → Packet formats: builds responses
ios/ProxyPin/vpn/socket/SocketIOService.swift - iOS socket service → iOS packet writer: writes packets