Установка MTProxy на Python в ЕЕ-режиме

Установка 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

Report Page