
Sistema proxy HTTP basato su BLE che instrada il traffico del browser attraverso un dispositivo iOS. Supporta HTTP/HTTPS, compressione dei dati e modalità mock per test senza hardware.
Un sistema proxy HTTP basato su Bluetooth Low Energy (BLE) che instrada il traffico del browser web attraverso un dispositivo iOS. Permette di navigare sul web usando la connessione internet del dispositivo iOS tramite BLE come livello di trasporto.
Browser → Proxy Windows → BLE/TCP → iOS/Mock Service → WiFi → Internet
← Proxy Windows ← BLE/TCP ← iOS/Mock Service ← WiFi ←
windows-proxy/)127.0.0.1:8080 (predefinita)mock-ios-service/)127.0.0.1:9999 (predefinita)Terminale 1 - Avvia il Servizio iOS Mock:
cd mock-ios-service
npm install
npm start
Terminale 2 - Avvia il Proxy Windows in Modalità Mock:
cd windows-proxy
npm install
npm run mock
Configura il Browser:
127.0.0.1:8080Terminale 1 - Avvia il Proxy Windows:
cd windows-proxy
npm install
npm start
Dispositivo iOS:
Configura il Browser:
127.0.0.1:8080Tutti i dati vengono trasmessi in formato compresso e chunked:
[Intestazione lunghezza 4 byte][Payload JSON compresso]
// Richiesta
{
id: "uuid", // ID univoco richiesta
method: "GET", // Metodo HTTP
url: "https://...", // URL di destinazione
headers: {}, // Intestazioni HTTP
body: "base64...", // Corpo richiesta (base64)
isConnect: false // Flag CONNECT HTTPS
}
// Risposta
{
id: "uuid", // ID richiesta corrispondente
statusCode: 200, // Stato HTTP
headers: {}, // Intestazioni risposta
body: "base64...", // Corpo risposta (base64)
success: true // Per richieste CONNECT
}
// windows-proxy/config.js
{
proxy: {
host: "127.0.0.1",
port: 8080,
timeout: 30000
},
ble: {
serviceUUID: "a1b2c3d4-...",
// ... altri UUID
}
}
# Modalità mock
MOCK_MODE=true
# Impostazioni proxy
PROXY_HOST=127.0.0.1
PROXY_PORT=8080
# UUID BLE
BLE_SERVICE_UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef
# Servizio mock
MOCK_SERVICE_HOST=127.0.0.1
MOCK_SERVICE_PORT=9999
127.0.0.1:8080127.0.0.1:8080localhost, 127.0.0.1127.0.0.1 Porta: 8080127.0.0.1 Porta: 8080ble_proxy/
├── windows-proxy/ # Central BLE Windows + Proxy HTTP
│ ├── proxy.js # Server proxy principale
│ ├── ble-client.js # Client BLE reale
│ ├── mock-ble-client.js # Client BLE mock (TCP)
│ ├── config.js # Configurazione
│ └── demo.js # Script demo
├── mock-ios-service/ # Periferica BLE iOS mock
│ ├── mock-ios.js # Server TCP principale
│ ├── http-client.js # Gestore richieste HTTP
│ └── demo.js # Script demo
└── ios-app/ # App iOS nativa (futura)
Test Unitari:
# Test proxy Windows
cd windows-proxy
npm test
# Test servizio mock
cd mock-ios-service
npm test
Test di Integrazione:
# Avvia entrambi i servizi e testa con curl
curl -x http://127.0.0.1:8080 https://httpbin.org/ip
Abilita Logging di Debug:
# Proxy Windows
NODE_ENV=development npm start
# Servizio mock
NODE_ENV=development npm start
Debug BLE (Windows):
# Controlla stato adattatore BLE
Get-PnpDevice | Where-Object {$_.Name -like "*Bluetooth*"}
# Monitora traffico BLE (richiede strumenti)
# BLE non funziona
npm run mock # Usa invece modalità mock
# Porta già in uso
netstat -ano | findstr :8080
# Dipendenze che falliscono
npm run install-build-tools
# Porta 9999 in uso
netstat -ano | findstr :9999
# Connessione rifiutata
# Assicurati che il servizio mock parta prima del proxy
# Pulisci impostazioni proxy
# Controlla impostazioni proxy di Windows
# Disabilita altre VPN/proxy
⚠️ Questo è uno strumento di sviluppo/test. Considera le implicazioni di sicurezza:
git checkout -b feature/nome)Licenza MIT - vedi file LICENSE per i dettagli
Stato: ✅ Test mock pronto | 🚧 App iOS in sviluppo | 📋 Funzionalità di produzione pianificate