Установка MTProxy на Python в ЕЕ-режиме
GrooshaПредисловие
Коли ты пользователь Рунета, проходи, присаживайся. Коли ты варвар из Российского Консорциума Неадекватов, то пошёл прочь отсюда!
Disclaimer: я не гарантирую, что этот способ 100% рабочий. Я также не гарантирую, что этот способ оптимальный, всегда есть пространство для оптимизации процессов.
Поехали!
Что нам понадобится:
1) Сервер или компьютер, работающий 24/7.
2) Доменное имя.
3) Базовые знания ОС семейства Linux.
Для начала, залогиньтесь на свой сервер (я использую Ubuntu 18.04) и выполните:
sudo apt update && sudo apt upgrade -y
sudo apt install -y gcc libffi-dev git
Пока всё обновляется, пропишите IP вашего сервера в DNS-записи доменного имени (у разных провайдеров процесс будет немного отличаться). Здесь и далее подразумевается, что ваш IP 100.100.100.100, а доменное имя digital.resistance
Скачайте и соберите Python 3.7 (даю ссылку на 3.7.4):
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
tar zxf Python-3.7.4.tgz
cd Python-3.7.4
./configure
make
# Сходите на кухню, налейте чаю, отдохните, посмотрите в окно и т.д.
# В общем, ждите, пока соберётся Питон и пройдут тесты
sudo make altinstall
Выполните команду "python3.7" (без кавычек), если ошибка, то выполните:
ln -s /usr/local/bin/python3.7 /usr/bin/python3.7
Склонируйте репозиторий с mtprotoproxy, создайте внутри virtual environment и установите некоторые библиотеки:
git clone -b stable https://github.com/alexbers/mtprotoproxy.git
python3.7 -m venv mtprotoproxy/
cd mtprotoproxy
source bin/activate
# в этом месте строка ввода должна чуть измениться
pip install cryptography uvloop
deactivate
# строка ввода вернётся к первоначальному виду
Сгенерируйте «секрет» для прокси (32 символа) и пропишите его в файл config.py:
head -c 16 /dev/urandom | xxd -ps
Прописали? Прекрасно, время запустить и проверить:
bin/python mtprotoproxy.py
В консольку выплюнется две ссылки, одна покороче (с префиксом dd), другая подлиннее (с префиксом ee). Скопируйте вторую, отправьте себе в Telegram и попробуйте подключиться. Всё должно работать.
Бонус: пример systemd-службы
В качестве WorkingDirectory и первой части ExecStart укажите путь к каталогу с mtprotoproxy!
[Unit]
Description=Telegram MTProxy on Python
After=network.target
[Service]
Type=simple
WorkingDirectory=/root/mtprotoproxy
ExecStart=/root/mtprotoproxy/bin/python mtprotoproxy.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
Дополнительное чтение
Я не пробовал, но очень хочется:
1) Проксировать проксю (ага) через nginx, чтобы одновременно отдавать разный контент. См. https://github.com/alexbers/mtprotoproxy/pull/119
2) Разобраться с MASK_HOST для снижения детектируемости: https://github.com/alexbers/mtprotoproxy/issues/130