
Sistema de proxy HTTP basado en BLE que enruta el tráfico del navegador a través de un dispositivo iOS. Soporta HTTP/HTTPS, compresión de datos y modo simulación para pruebas sin hardware.
Un sistema de proxy HTTP basado en Bluetooth Low Energy (BLE) que enruta el tráfico del navegador web a través de un dispositivo iOS. Esto permite navegar por internet usando la conexión del dispositivo iOS mediante BLE como capa de transporte.
Browser → Windows Proxy → BLE/TCP → iOS/Mock Service → WiFi → Internet
← Windows Proxy ← BLE/TCP ← iOS/Mock Service ← WiFi ←
windows-proxy/)127.0.0.1:8080 (predeterminado)mock-ios-service/)127.0.0.1:9999 (predeterminado)Terminal 1 - Iniciar el Servicio iOS Simulado:
cd mock-ios-service
npm install
npm start
Terminal 2 - Iniciar el Proxy de Windows en Modo Simulado:
cd windows-proxy
npm install
npm run mock
Configurar el Navegador:
127.0.0.1:8080Terminal 1 - Iniciar el Proxy de Windows:
cd windows-proxy
npm install
npm start
Dispositivo iOS:
Configurar el Navegador:
127.0.0.1:8080Todos los datos se transmiten en un formato comprimido y fragmentado:
[encabezado de longitud de 4 bytes][carga útil JSON comprimida]
// Solicitud
{
id: "uuid", // ID único de solicitud
method: "GET", // Método HTTP
url: "https://...", // URL de destino
headers: {}, // Encabezados HTTP
body: "base64...", // Cuerpo de la solicitud (base64)
isConnect: false // Indicador de CONNECT HTTPS
}
// Respuesta
{
id: "uuid", // ID de solicitud correspondiente
statusCode: 200, // Estado HTTP
headers: {}, // Encabezados de respuesta
body: "base64...", // Cuerpo de la respuesta (base64)
success: true // Para solicitudes CONNECT
}
// windows-proxy/config.js
{
proxy: {
host: "127.0.0.1",
port: 8080,
timeout: 30000
},
ble: {
serviceUUID: "a1b2c3d4-...",
// ... otros UUIDs
}
}
# Modo simulado
MOCK_MODE=true
# Ajustes del proxy
PROXY_HOST=127.0.0.1
PROXY_PORT=8080
# UUIDs de BLE
BLE_SERVICE_UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef
# Servicio simulado
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 Puerto: 8080127.0.0.1 Puerto: 8080ble_proxy/
├── windows-proxy/ # BLE Central de Windows + Proxy HTTP
│ ├── proxy.js # Servidor proxy principal
│ ├── ble-client.js # Cliente BLE real
│ ├── mock-ble-client.js # Cliente BLE simulado (TCP)
│ ├── config.js # Configuración
│ └── demo.js # Script de demostración
├── mock-ios-service/ # Periférico BLE iOS simulado
│ ├── mock-ios.js # Servidor TCP principal
│ ├── http-client.js # Manejador de solicitudes HTTP
│ └── demo.js # Script de demostración
└── ios-app/ # App nativa iOS (futuro)
Pruebas Unitarias:
# Probar el proxy de Windows
cd windows-proxy
npm test
# Probar el servicio simulado
cd mock-ios-service
npm test
Prueba de Integración:
# Iniciar ambos servicios y probar con curl
curl -x http://127.0.0.1:8080 https://httpbin.org/ip
Habilitar el Registro de Depuración:
# Proxy de Windows
NODE_ENV=development npm start
# Servicio simulado
NODE_ENV=development npm start
Depuración BLE (Windows):
# Verificar el estado del adaptador BLE
Get-PnpDevice | Where-Object {$_.Name -like "*Bluetooth*"}
# Monitorear el tráfico BLE (requiere herramientas)
# BLE no funciona
npm run mock # Usar el modo simulado en su lugar
# Puerto ya en uso
netstat -ano | findstr :8080
# Fallo de dependencias
npm run install-build-tools
# Puerto 9999 en uso
netstat -ano | findstr :9999
# Conexión rechazada
# Asegurarse de que el servicio simulado se inicie antes que el proxy
# Limpiar la configuración de proxy
# Revisar la configuración de proxy de Windows
# Desactivar otras VPN/proxies
⚠️ Esta es una herramienta de desarrollo/pruebas. Considere las implicaciones de seguridad:
git checkout -b feature/nombre)Licencia MIT - consulte el archivo LICENSE para más detalles
Estado: ✅ Pruebas simuladas listas | 🚧 App iOS en desarrollo | 📋 Características de producción planificadas