15

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 можно оформить в виде скрипта для быстрого запуска.

Android

975 постов7.8K подписчиков

Правила сообщества

Сообщество посвящено обсуждению и обмену опытом использования устройств, работающих под управлением ОС Android/Linux, а также программного обеспечения для них. Обсуждение других операционных систем (в том числе GNU/Linux) - только в рамках их взаимодействия с Android.


В сообществе запрещены:

* заведомо деструктивные рекомендации

* бессодержательная переписка, особенно с переходом на личности собеседников

* обсуждение нужности рутового доступа (он нужен, и если у вас его нет - мы вам искренне посочувствуем, но искать другие способы решения вашей проблемы не будем)

* обсуждение нужности ПО от Google (необходимости в нем нет, и если вам этот функционал не нужен - смело запускайте pm disable-user или даже pm uninstall, только не забудьте предварительно сделать полную резервную копию)


Если вы просите о помощи, обязательно укажите максимально полную информацию об используемом вами устройстве, чего вы хотите добиться и какие шаги для этого предпринимали - это существенно ускорит получение ответа, так как из обсуждения будут исключены диалоги вида "попробуй вот так - пробовал, не помогает". Соответственно, и при ответе следует давать рекомендации, подходящие для любого устройства. Если вы не уверены в универсальности решения, напишите об этом явно: "у меня %s и мне помогло %s".


Данная редакция правил действует с момента ее публикации: 2022-01-27 22:00:00 +03:00