
Sistema de proxy HTTP baseado em BLE que roteia o tráfego do navegador através de um dispositivo iOS. Suporta HTTP/HTTPS, compressão de dados e modo simulado para testes sem hardware.
Um sistema proxy HTTP baseado em Bluetooth Low Energy (BLE) que roteia o tráfego do navegador da web através de um dispositivo iOS. Isso permite navegar na web utilizando a conexão de internet do dispositivo iOS usando BLE como camada de transporte.
Navegador → Proxy Windows → BLE/TCP → iOS/Mock Service → WiFi → Internet
← Proxy Windows ← BLE/TCP ← iOS/Mock Service ← WiFi ←
windows-proxy/)127.0.0.1:8080 (padrão)mock-ios-service/)127.0.0.1:9999 (padrão)Terminal 1 - Iniciar Mock iOS Service:
cd mock-ios-service
npm install
npm start
Terminal 2 - Iniciar Proxy Windows no Modo Mock:
cd windows-proxy
npm install
npm run mock
Configurar Navegador:
127.0.0.1:8080Terminal 1 - Iniciar Proxy Windows:
cd windows-proxy
npm install
npm start
Dispositivo iOS:
Configurar Navegador:
127.0.0.1:8080Todos os dados são transmitidos em formato compactado e fragmentado:
[cabeçalho de 4 bytes de comprimento][payload JSON compactado]
// Requisição
{
id: "uuid", // ID único da requisição
method: "GET", // Método HTTP
url: "https://...", // URL alvo
headers: {}, // Cabeçalhos HTTP
body: "base64...", // Corpo da requisição (base64)
isConnect: false // Flag HTTPS CONNECT
}
// Resposta
{
id: "uuid", // ID da requisição correspondente
statusCode: 200, // Status HTTP
headers: {}, // Cabeçalhos da resposta
body: "base64...", // Corpo da resposta (base64)
success: true // Para requisições CONNECT
}
// windows-proxy/config.js
{
proxy: {
host: "127.0.0.1",
port: 8080,
timeout: 30000
},
ble: {
serviceUUID: "a1b2c3d4-...",
// ... outros UUIDs
}
}
# Modo mock
MOCK_MODE=true
# Configurações do proxy
PROXY_HOST=127.0.0.1
PROXY_PORT=8080
# UUIDs BLE
BLE_SERVICE_UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef
# Mock service
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/ # Proxy Windows BLE Central + HTTP
│ ├── proxy.js # Servidor proxy principal
│ ├── ble-client.js # Cliente BLE real
│ ├── mock-ble-client.js # Cliente BLE mock (TCP)
│ ├── config.js # Configuração
│ └── demo.js # Script de demonstração
├── mock-ios-service/ # Periférico BLE iOS mock
│ ├── mock-ios.js # Servidor TCP principal
│ ├── http-client.js # Manipulador de requisições HTTP
│ └── demo.js # Script de demonstração
└── ios-app/ # App iOS Nativo (futuro)
Testes Unitários:
# Testar proxy Windows
cd windows-proxy
npm test
# Testar mock service
cd mock-ios-service
npm test
Teste de Integração:
# Iniciar ambos os serviços e testar com curl
curl -x http://127.0.0.1:8080 https://httpbin.org/ip
Ativar Registro de Depuração:
# Proxy Windows
NODE_ENV=development npm start
# Mock service
NODE_ENV=development npm start
Depuração BLE (Windows):
# Verificar status do adaptador BLE
Get-PnpDevice | Where-Object {$_.Name -like "*Bluetooth*"}
# Monitorar tráfego BLE (requer ferramentas)
# BLE não está funcionando
npm run mock # Use o modo mock como alternativa
# Porta já está em uso
netstat -ano | findstr :8080
# Dependências falhando
npm run install-build-tools
# Porta 9999 em uso
netstat -ano | findstr :9999
# Conexão recusada
# Certifique-se de que o mock service inicia antes do proxy
# Limpar configurações de proxy
# Verificar configurações de proxy do Windows
# Desabilitar outras VPNs/proxies
⚠️ Esta é uma ferramenta de desenvolvimento/teste. Considere as implicações de segurança:
git checkout -b feature/nome)Licença MIT - consulte o arquivo LICENSE para detalhes