
Система HTTP-прокси на основе BLE, маршрутизирующая трафик браузера через устройство iOS. Поддерживает HTTP/HTTPS, сжатие данных и режим эмуляции для тестирования без аппаратного обеспечения.
Система HTTP-прокси на базе Bluetooth с низким энергопотреблением (BLE), которая направляет трафик веб-браузера через устройство iOS. Это позволяет просматривать веб-страницы через интернет-соединение устройства iOS, используя BLE в качестве транспортного уровня.
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 (по умолчанию)mock-ios-service/)127.0.0.1:9999 (по умолчанию)Терминал 1 — Запуск имитации iOS-сервиса:
cd mock-ios-service
npm install
npm start
Терминал 2 — Запуск Windows Proxy в режиме имитации:
cd windows-proxy
npm install
npm run mock
Настройка браузера:
127.0.0.1:8080Терминал 1 — Запуск Windows Proxy:
cd windows-proxy
npm install
npm start
Устройство iOS:
Настройка браузера:
127.0.0.1:8080Все данные передаются в сжатом, чанковом формате:
[4-байтовый заголовок длины][сжатый JSON-полезный груз]
// Запрос
{
id: "uuid", // Уникальный ID запроса
method: "GET", // HTTP-метод
url: "https://...", // Целевой URL
headers: {}, // HTTP-заголовки
body: "base64...", // Тело запроса (base64)
isConnect: false // Флаг HTTPS CONNECT
}
// Ответ
{
id: "uuid", // Соответствующий ID запроса
statusCode: 200, // HTTP-статус
headers: {}, // Заголовки ответа
body: "base64...", // Тело ответа (base64)
success: true // Для CONNECT-запросов
}
// windows-proxy/config.js
{
proxy: {
host: "127.0.0.1",
port: 8080,
timeout: 30000
},
ble: {
serviceUUID: "a1b2c3d4-...",
// ... другие UUID
}
}
# Режим имитации
MOCK_MODE=true
# Настройки прокси
PROXY_HOST=127.0.0.1
PROXY_PORT=8080
# BLE UUID
BLE_SERVICE_UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef
# Имитационный сервис
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 Порт: 8080127.0.0.1 Порт: 8080ble_proxy/
├── windows-proxy/ # Windows BLE Central + HTTP Proxy
│ ├── proxy.js # Основной прокси-сервер
│ ├── ble-client.js # Реальный BLE-клиент
│ ├── mock-ble-client.js # Имитационный BLE-клиент (TCP)
│ ├── config.js # Конфигурация
│ └── demo.js # Демонстрационный скрипт
├── mock-ios-service/ # Имитационное BLE-периферийное устройство iOS
│ ├── mock-ios.js # Основной TCP-сервер
│ ├── http-client.js # Обработчик HTTP-запросов
│ └── demo.js # Демонстрационный скрипт
└── ios-app/ # Нативное iOS-приложение (в будущем)
Модульные тесты:
# Тестирование Windows Proxy
cd windows-proxy
npm test
# Тестирование имитационного сервиса
cd mock-ios-service
npm test
Интеграционное тестирование:
# Запустите оба сервиса и протестируйте с помощью curl
curl -x http://127.0.0.1:8080 https://httpbin.org/ip
Включение отладочного логирования:
# Windows Proxy
NODE_ENV=development npm start
# Имитационный сервис
NODE_ENV=development npm start
Отладка BLE (Windows):
# Проверка статуса BLE-адаптера
Get-PnpDevice | Where-Object {$_.Name -like "*Bluetooth*"}
# Мониторинг BLE-трафика (требуются инструменты)
# BLE не работает
npm run mock # Вместо этого используйте режим имитации
# Порт уже занят
netstat -ano | findstr :8080
# Ошибки зависимостей
npm run install-build-tools
# Порт 9999 занят
netstat -ano | findstr :9999
# Отказ в соединении
# Убедитесь, что имитационный сервис запущен до прокси
# Очистите настройки прокси
# Проверьте настройки прокси Windows
# Отключите другие VPN/прокси
⚠️ Это инструмент для разработки/тестирования. Учтите последствия для безопасности:
git checkout -b feature/name)Лицензия MIT — подробности в файле LICENSE