NoDPI на Android
Сразу хочу предупредить, что данная статья расчитана на продвинутых пользователей, которые понимают что они делают и для чего.
Итак, попалась мне интересная статья про NoDPI на хабре. Если кратко, то это скрипт на python, который работает в режиме http proxy и позволяет манипулировать TLS пакетами для обхода DPI систем интернет провайдеров. Думаю не надо рассказывать для чего это нужно и почему из-за DPI систем тормозят популярные иностранные видохостинги.
Разумеется, есть готовые сборки под Windows. На Linux/MacOS оно запускается в 2 команды. В принципе, скрипт на Python можно запустить на любой системе, где, собственно есть Python. Разумеется, в списке ОС, где работает Python, есть и Android. Стало интересно, а можно ли запустить и использовать локально такой скрипт?
Первое, что нам потребуется, это приложение, которое может запускать Python на Android. При этом нам не надо GUI. Достаточно консоли.
Помимо этого нужно приложение, которое позволит настроить http proxy на Android. Лично у меня стоит Super proxy. Из минусов - в бесплатной версии нельзя указывать для каких приложений использовать или не использовать proxy, а это важно.
Стартовый набор выглядит так:
Termux + Платная версия Super proxy.
Терминал Linux из Android 15 и выше + Бесплатная версия Super proxy.
Возможно вместо Super proxy можно использовать какой-то другое приложения для проксирования траффика с белым/чёрным списком приложений.
Ну, понеслось...
Ставим Git и Python в Termux, качаем и запускаем:
pkg install git python -y
git clone https://github.com/GVCoder09/NoDPI.git
cd NoDPI
python3 ./src/main.py --blacklist ./blacklist.txt --port 10081
Тоже самое в терминале Linux:
apt install git python -y
git clone https://github.com/GVCoder09/NoDPI.git
cd NoDPI
python3 ./src/main.py --blacklist ./blacklist.txt --port 10081 --host 0.0.0.0
Разница только в менеджере пакетов и том, какой IP адрес будет "слушать" proxy. Termux работает локально и достаточно запустить proxy на 127.0.0.1:10081. Терминал Linux это фактически виртуальная машина и для доступа к proxy требуется "внешний" доступ из Android к гостевой системе.
При запуске в терминале понадобится разрешить использование порта.
Помимо этого для терминала необходимо знать IP адрес виртуальной машины. Скорее всего это будет 192.168.0.2. Посмотреть можно командой:
ip a
Далее настраиваем proxy на примере Терминал + Super proxy:
Для Termux необходимо указать адрес сервера 127.0.0.1 и добавить приложение Termux в исключения для проксирования траффика, иначе получится петля - траффик приходит в Termux и через системную proxy попадает обратно в него же. Для этого и нужна платная версия Super proxy.
Приложение Терминал является виртуальной машиной и не использует системные настройки proxy на Android. По этому для него достаточно и бесплатной версии Super proxy.
После всех настроек нажимаем "Старт" на proxy и наслаждаемся любимым видео-контентом.
Дополнения:
Порт можно выбрать любой от 10000 до 65535. Для портов меньше 10000 требуются права суперпользователя.
Скрипт работает по белому списку, так-что при работе он не заденет другие видеохостинги, например Rutube, который не любит вмешательств в траффик.
Терминал Linux можно включить в настройках для разработчиков. При первом старте будет скачан образ ARM версии Debian 12, весом чуть менее 600 мегабайт. Фича точно доступна на телефонах серии Pixel 6 и выше с Android 15 и выше.
Запуск NoDPI можно оформить в виде скрипта для быстрого запуска.