Skip to content

Latest commit

 

History

History
73 lines (61 loc) · 3.88 KB

File metadata and controls

73 lines (61 loc) · 3.88 KB

Proxy Switcher

Мобильное приложение для Android, позволяющее запускать локальный HTTP прокси-сервер, который перенаправляет трафик через цепочку внешних прокси (HTTP, HTTPS, SOCKS5).

🎯 Цели проекта

  1. Локальный Прокси: Запуск HTTP прокси-сервера на устройстве (localhost).
  2. Управление Прокси: CRUD (создание, чтение, обновление, удаление) список внешних прокси-серверов.
  3. Поддержка протоколов: Поддержка upstream (внешних) прокси типов HTTP, HTTPS и SOCKS5.
  4. Персистентность: Сохранение настроек и списка прокси в базе данных.
  5. UX/UI: Современный интерфейс на Jetpack Compose (Material 3).

🚀 Как запустить

Вариант 1: Через Android Studio

  1. Откройте проект в Android Studio.
  2. Подключите телефон по USB (убедитесь, что включена "Отладка по USB").
  3. Нажмите кнопку Run (зеленый треугольник).

Вариант 2: Через командную строку (Gradle)

  1. Подключите телефон по USB.
  2. В корне проекта выполните команду:
    ./gradlew installDebug
  3. Приложение будет установлено на телефон. Ищите иконку Proxy Switcher.

Вариант 3: Сборка APK

  1. Выполните команду:
    ./gradlew assembleDebug
  2. Заберите APK файл по пути: app/build/outputs/apk/debug/app-debug.apk
  3. Перекиньте файл на телефон и установите.

📱 Как пользоваться

  1. Настройка прокси в приложении:
    • Запустите приложение.
    • Нажмите иконку шестеренки (справа сверху).
    • Нажмите + и добавьте внешний прокси (Host, Port, Type).
    • Сохраните.
  2. Запуск сервера:
    • На главном экране выберите созданный прокси.
    • Нажмите START PROXY.
  3. Настройка телефона:
    • Перейдите в настройки Wi-Fi текущей сети.
    • Установите Прокси: Вручную.
    • Хост: 127.0.0.1 (или localhost).
    • Порт: 8080.

🛠 Технический стек

  • Язык: Kotlin
  • UI: Jetpack Compose (Material 3)
  • Архитектура: MVVM + Clean Architecture
  • DI: Hilt
  • DB: Room
  • Network: Java Sockets (Custom Proxy Core)
  • Background: Foreground Service

🧩 Ключевые компоненты

ProxyServerCore

Класс, отвечающий за:

  1. Открытие ServerSocket на локальном порту.
  2. Прием соединений (accept).
  3. Парсинг первого HTTP заголовка для определения цели.
  4. Установление соединения с целевым сервером (напрямую или через Upstream Proxy).
  5. Передача данных (Piping) между клиентом и целью (InputStream <-> OutputStream).

ProxyManager

Репозиторий для управления списком прокси (Room Database).

ProxyService

Android Service (Foreground), который держит ProxyServerCore запущенным и показывает уведомление "Proxy is running".