Прокси сервис из VPN на Python + FastAPI

ZennoCat

Client
Регистрация
06.01.2020
Сообщения
67
Реакции
44
Баллы
18
Всем привет!
Я никогда раньше не писал подобные статьи, но всегда хотел что-то опубликовать на ZennoLab, так как очень люблю ZennoPoster и реализовал на нём достаточно много проектов. Считаю его одним из лучших инструментов для автоматизации самых разных задач, а сам форум — очень ценным источником информации для каждого автоматизатора, независимо от того, создаёт он проекты на ZennoPoster, Python или чём-то ещё.

На создание данного проекта меня вдохновила статья из прошлых конкурсов:
«В ZennoPoster VPN у нас, а у Вас? Или использование VPN в многопотоке».

Какую же проблему решает мой проект? Я думаю что у многих автоматизаторов возникала потребность парсить какие-то данные откуда либо и часто мы получаем блокировки по IP и по итогу не можем получить необходимые нам данные. Я сделал этот API так как мне показалось что это хорошее решение для обхода блокировок и мне хотелось бы сделать это доступным из коробки любому автоматизатору. Уже сейчас мне удалось парсить Google и еще некоторые более простые веб-сайты.
Честно говоря я считаю VPN имеет ряд своих преимуществ перед простыми прокси, к примеру тариф на ProtonVPN обойдется намного дешевле чем аренда прокси (особенно если взять его по скидке) и VPN имеет очень не плохой траст так как много живых людей используют эти IP.
Также прикладываю небольшую гифку, в которой можно увидеть, как всё это работает.
131691


Проект написан на Python. Хочу подчеркнуть, что не являюсь «сильным» программистом, и программирование — это скорее моё хобби, поэтому, если в теме будут опытные коллеги, прошу отнестись с пониманием к моему коду. Он, конечно, не без багов. И в этом проекте я впервые использовал FastAPI по рекомендации своих коллег автоматизаторов.
Кому интересен код самого проекта, вы можете посмотреть его здесь: https://github.com/tyshchenko-dev/proxy_api

Сейчас я кратко опишу алгоритм работы данного проекта.
Для правильной работы API нам нужны 2 программы:
1. OpenVPN
2. 3proxy

Далее я буду часто использовать понятие OVPN-конфиг. Потому наверное было бы лучше написать что имеется ввиду.
OVPN-конфиг — это обычный текстовый файл с инструкциями для программы OpenVPN о том, как подключаться к VPN-серверу. В нём указаны все необходимые параметры: адрес сервера, способы шифрования, пути к сертификатам, логин/пароль и т.д. Когда вы запускаете OpenVPN и указываете ему этот файл, программа читает настройки и устанавливает зашифрованное VPN-соединение согласно всем прописанным параметрам.

Внутри API я создал класс которые отвечает за работу с OpenVPN и назвал его OpenVPNManager давайте посмотрим как работают некоторые его методы.
Метод который используется для запуска конфига:
Python:
Развернуть Свернуть Копировать
def start_openvpn(self, config_path: str):
        try:
            process = subprocess.Popen([
                "sudo",
                "openvpn",
                "--config",
                config_path,
                "--daemon"
            ])
            return process.pid
        except Exception as e:
            raise OpenVPNStartError("Failed to start OpenVPN") from e
на самом деле этот метод выполняет простую команду для linux которая запускает OVPN с необходимым нам конфигом, а в переменной config_path мы просто передаем путь к файлу ovpn конфига который мы выбрали для запуска.
Но для того чтобы конфиг работал правильно в него необходимо добавить определенные строки с этим нам помогает метод ниже
Python:
Развернуть Свернуть Копировать
    def prepare_ovpn_config(self, folder_name: str, file_name: str, tunnel: str) -> str:
        config_text = self.config.OVPN_CONFIG_TEMPLATE.replace('{{adapter_name}}', tunnel)

        logging.info(f"Copy config file to {self.config.TEMP_FOLDER}")
        config_full_path = os.path.join(self.config.CONFIGS_FOLDER, folder_name, file_name)
        shutil.copy(config_full_path, self.config.TEMP_FOLDER)
        ovpn_temp_path = os.path.join(self.config.TEMP_FOLDER, file_name)
        logging.info(f"Append ovpn config to {ovpn_temp_path}")
        with open(ovpn_temp_path, 'a') as f:
            f.write(config_text)

        return ovpn_temp_path

данный метод подменяет {{adapter_name}} на tun1 либо любой другой свободный туннель и добавляет строки в ovpn конфиг:
Python:
Развернуть Свернуть Копировать
auth-user-pass userpass.txt
dev {{adapter_name}}
route 0.0.0.0 192.0.0.0 net_gateway
route 64.0.0.0 192.0.0.0 net_gateway
route 128.0.0.0 192.0.0.0 net_gateway
route 192.0.0.0 192.0.0.0 net_gateway

auth-user-pass userpass.txt
Говорит клиенту OpenVPN использовать файл userpass.txt для ввода учётных данных (логин и пароль от нашего ovpn конфига, дальше в статье и в видео вы сможете увидеть откуда его взять).
dev {{adapter_name}}
Определяет, на каком сетевом интерфейсе (адаптере) будет работать VPN-туннель. Переменная {{adapter_name}} сделана для удобства динамической подстановки имени адаптера так как мы будем поднимать много впн одновременно.
route проще говоря
Если убрать эти строки, весь интернет-трафик сервера пойдёт через VPN-туннель.
Благодаря этим строкам трафик сервера продолжит ходить через обычное интернет-соединение, а VPN будет запущен отдельно, и через него будет идти только тот трафик, для которого явно настроен маршрут или который нужен внутри самой VPN-сети.
После того как мы подняли конфиг, скрипт автоматически сохраняет PID этого процесса чтобы в дальнейшем его можно было остановить при потребности.

Теперь нам необходимо получить IP нашего туннеля, для этого есть отдельный метод который выполняет эту задачу
Python:
Развернуть Свернуть Копировать
def get_vpn_ip(self, tunnel: str):
        try:
            output = subprocess.check_output(['ip', '-4', 'addr', 'show', 'dev', tunnel]).decode()
            for line in output.splitlines():
                if 'inet ' in line:
                    return line.strip().split()[1].split('/')[0]
        except Exception as e:
            raise FindIPError(f"Failed to get IP from {tunnel}: {e}")
данный метод выполняет команду в linux, а именно ip -4 addr show dev tunnel вместо tunnel подставляется название туннеля на котором запущен OVPN конфиг к примеру tun1 либо tun10
Этот IP мы будем использовать для запуска 3proxy.

Теперь я немного опишу как мой скрипт работает с 3proxy, после того как мы подняли OVPN-конфиг, нам необходимо сделать из него прокси и в этом нам как раз и поможет 3proxy.
Также почитать документацию по 3proxy и по доступным настройкам можно на Github: https://github.com/3proxy/3proxy
В config.py моего проекта вы можете увидеть такой код:
Python:
Развернуть Свернуть Копировать
PROXY_CONFIG_TEMPLATE = """
daemon
nscache 65536
log /var/log/3proxy/3proxy.log
logformat "L%Y-%m-%d %H:%M:%S %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 7

auth strong

users {{proxy_login}}:CL:{{proxy_pass}}

allow {{proxy_login}}

"""

OPEN_PROXY_TEMPLATE = """
{{proxy_type}} -p{{proxy_port}} -i0.0.0.0 -e{{adapter_ip}}
"""

Эти две переменные содержат шаблоны которые дальше подставляются в файл proxy.cfg. Который и устанавливает правила запуска наших прокси.

Переменная PROXY_CONFIG_TEMPLATE содержит настройки для наших будующих прокси.
daemon запускает 3proxy в фоновом режиме (демон).
nscache 65536 Устанавливает размер DNS-кэша в 65536 записей.
rotate это какая-то доп. настройка для лог файла
log задает файл с логами (в этом файле можно видеть трафик который идет через прокси)
logformat здесь задан формат сохранения данных в лог
auth strong говорит о том что прокси будут использовать авторизацию
users {{proxy_login}}:CL:{{proxy_pass}}
задает логин и пароль для нашей прокси {{proxy_login}} и {{proxy_pass}}.

Переменная OPEN_PROXY_TEMPLATE содержит шаблон который динамически подменяется и добавлятся в файл proxy.cfg
{{proxy_type}} это протокол прокси (мой скрипт поднимает прокси сразу на двух протоколах http, socks5)
-p{{proxy_port}} это порт на котором доступна наша прокся
-i0.0.0.0 говори что наши прокси будут доступны внешнему миру.
-e{{adapter_ip}} это и есть тот самый IP нашего OVPN-конфига который мы получили после его запуска.

Логику которая отвечает за работу с 3proxy я сохранил в proxy_manager.py.

Теперь я опишу краткий алгоритм поднятия прокси через API:
На наш сервер приходит POST запрос который хранит в body несколько значений: folder_name и config_name
folder_name
это папка в которой хранится наш конфиг, так как у нас может быть много разных стран для конфигов я решил что будет удобно их разделить на подпапки.
и config_name это полное имя ovpn-конфига который мы хотим запустить, пример запроса который запускает наш прокси:
url запроса: http://{{server_ip}}:{{server_port}}/proxy/start
body запроса: {
"folder_name": "austria"
"config_name": "au-1-protonvpn.ovpn"
}
апи принимает данный запрос и пытается найти свободный туннель для запуска нашего ovpn конфига.
Если мы уже подняли 10 прокси тогда скрипт автоматически выключит самый старый прокси из списка и поднимет новый.
Потом скрипт готовит ovpn-config перед запуском, а именно подставляет в этот шаблон данные необходимые для запуска конфига.
Python:
Развернуть Свернуть Копировать
auth-user-pass userpass.txt
dev {{adapter_name}}
route 0.0.0.0 192.0.0.0 net_gateway
route 64.0.0.0 192.0.0.0 net_gateway
route 128.0.0.0 192.0.0.0 net_gateway
route 192.0.0.0 192.0.0.0 net_gateway

Потом запускается подготовленный ovpn конфиг и сохраняется его IP.
После этого скрипт добавляет в proxy.cfg прокси которые будут доступны на двух протоколах на http, socks5.
И последнее это замер скорости прокси, это делается достаточно просто, а именно скрипт использует поднятый прокси для GET запроса к главной странице Google и общую скорость всего запроса в мс и сохраняет ее как ping данной прокси.

Несмотря на некоторые недочёты (а именно проблему с DNS, сейчас данная реализация не закрывает настоящий DNS сервера и к сожалению мне пока что не удалось решить ее), уже сейчас этот апи помогает мне парсить Google и некоторые другие интересующие меня сайты, обходя блокировки IP-адресов. Сам я использую премиум-версию ProtonVPN (там доступно более 9000 конфигов, причём многие IP-адреса у них уникальные, важно учитывать что сам ProtonVPN разрешает только 10 одновременно поднятых VPN, учитывайте что поднять сразу 100 IP не получится, только 10, но благодаря API вы сможете выполнять ротацию IP в процессе выполнения ваших скриптов).

Что нам нужно, чтобы развернуть этот небольшой прокси-сервис?

В примере я использую ProtonVPN. Возможно, кто-то сможет прикрутить конфиги других провайдеров — уверен, что это возможно, но сам я такую возможность не тестировал. (Дальше я прикреплю видео к проекту и вы сможете наглядно увидеть как настроить сервер и в какую папку на сервере вам необходимо добавить конфиги и логин с паролем от ProtonVPN).

Установка на Linux (Ubuntu) и запуск через PM2

Нам понадобится:
Сервер на Linux + Ubuntu;
Базовые навыки работы через SSH-клиент.
(Лично я использую MobaXterm, в котором есть и терминал, и удобный файловый менеджер.)

Все действия я выполнял в корневой директории (/root), но вы можете использовать другую — просто не забудьте менять пути в командах.
  • Подключитесь к серверу по SSH.
  • Выполните команду:
    Код:
    Развернуть Свернуть Копировать
    sudo apt-get update
  • Установите OpenVPN:
    Код:
    Развернуть Свернуть Копировать
    sudo apt-get install openvpn
  • Установите необходимые утилиты для компиляции проекта:
    Код:
    Развернуть Свернуть Копировать
    sudo apt install -y git build-essential
  • Скачиваем репозиторий 3proxy с GitHub:
    Код:
    Развернуть Свернуть Копировать
    sudo git clone https://github.com/z3APA3A/3proxy.git
  • Переходим в папку репозитория:
    Код:
    Развернуть Свернуть Копировать
    cd 3proxy
  • Выполняем команду сборки:
    Код:
    Развернуть Свернуть Копировать
    sudo make -f Makefile.Linux
  • Устанавливаем 3proxy:
    Код:
    Развернуть Свернуть Копировать
    sudo make -f Makefile.Linux install
  • Проверяем, где находится бинарник 3proxy:
    Код:
    Развернуть Свернуть Копировать
    which 3proxy
    (должен показать путь к исполняемому файлу).
  • Открываем порты на сервере. Сначала устанавливаем ufw:
    Код:
    Развернуть Свернуть Копировать
    sudo apt install ufw
  • Проверяем статус ufw:
    Код:
    Развернуть Свернуть Копировать
    ufw status
    (должно отобразиться Status: inactive).
  • Разрешаем доступ по SSH (иначе может «отрубить» при включении ufw):
    Код:
    Развернуть Свернуть Копировать
    sudo ufw allow ssh
  • Открываем порт для нашего веб-приложения:
    Код:
    Развернуть Свернуть Копировать
    sudo ufw allow 3000/tcp
  • Открываем порты для прокси:
    Код:
    Развернуть Свернуть Копировать
    sudo ufw allow 8000:8020/tcp
  • Запускаем ufw с добавленными правилами:
    Код:
    Развернуть Свернуть Копировать
    sudo ufw enable
  • Устанавливаем Python 3 и необходимые инструменты:
    Код:
    Развернуть Свернуть Копировать
    sudo apt install python3 python3-venv python3-pip
  • Возвращаемся в /root:
    Код:
    Развернуть Свернуть Копировать
    cd /root/
  • Скачиваем репозиторий с моим проектом:
    Код:
    Развернуть Свернуть Копировать
    git clone https://github.com/tyshchenko-dev/proxy_api.git
  • Переходим в папку проекта:
    Код:
    Развернуть Свернуть Копировать
    cd /root/proxy_api
  • Создаём виртуальное окружение:
    Код:
    Развернуть Свернуть Копировать
    python3 -m venv venv
  • Активируем его:
    Код:
    Развернуть Свернуть Копировать
    source venv/bin/activate
  • Устанавливаем зависимости:
    Код:
    Развернуть Свернуть Копировать
    pip install -r requirements.txt
  • Затем можем деактивировать окружение:
    Код:
    Развернуть Свернуть Копировать
    deactivate
  • Устанавливаем PM2 для удобного контроля работы проекта (это не обязательно, но я привык к PM2). Сначала ставим Node.js:
    Код:
    Развернуть Свернуть Копировать
    sudo apt install nodejs npm
  • Устанавливаем pm2:
    Код:
    Развернуть Свернуть Копировать
    npm install pm2 -g
  • В проекте найдите папку static, в ней — файл index.js.
    Внутри файла нужно вписать IP вашего сервера в переменную и указать порт (по умолчанию там 3000).
  • Тоже самое сделайте в файле .env, добавьте адрес своего сервера.
  • В файл userpass.txt в перенесите логин и пароль от protonvpn. https://account.protonvpn.com/account-password131692131693
  • И в папку vpn_configs добавьте свои протон конфиги (старые конфиги которые загружаются из гитхаба думаю будет лучше удалить). Важно все конфиги нужно хранить в подпапке, к примеру я храню конфиги примерно так /root/proxy_api/vpn_configs/netherlands/и сюда добавляем все конфиги для netherlands, если у нас есть конфиги другой страны то для нее делаем отдельную папку и в нее сохраняем конфиги, пример /root/proxy_api/vpn_configs/united_states/
    Конфиги можно найти по ссылке https://account.protonvpn.com/downloads
    (Для того чтобы скачать конфиги вы должны быть зарегистрированы на сайте ProtonVPN, после регистрации на сайте будет доступно небольшое количество фришных конфигов, установите все настройки как на скрине ниже и скачайте их)
    131703
  • Запускаем проект через pm2:
    Код:
    Развернуть Свернуть Копировать
    pm2 start /root/proxy_api/main.py --interpreter /root/proxy_api/venv/bin/python
  • В будующем если вы захотите посмотреть больше различных команд для pm2, посмотрите их на этой страничке https://pm2.keymetrics.io/docs/usage/quick-start/
  • Теперь приложение должно начать работать.
  • Можно перейти по адресу: http://<IP_сервера>:3000/login
  • По умолчанию в БД (SQLITE) добавлен юзер с логином root и паролем 12345. Используйте эти данные для входа в панель управления.

После авторизации в дашборде вы можете выбрать страну (прокси) в выпадающем меню и нажать Proxy Search, а затем выбрать любой из доступных конфигов и нажать Turn On.
131726


После этого прокси запустится. По умолчанию он доступен в двух протоколах: socks5 и http. В списке прокси вы можете выбрать нужный протокол через выпадающее меню, скопировать адрес и добавить его в ZennoPoster. Затем протестировать, например, на whoer.net.

На этом процесс установки и запуска проекта завершён!

Пример проекта для ZennoPoster
131724


Я также прикрепляю пример Zennoposter-проекта для взаимодействия с API. В настройках этого проекта укажите IP вашего сервера, чтобы всё корректно работало. Документация доступна по адресу (конечно в данный момент ее необходимо сделать более информативной) - http://<IP_сервера>:3000/docs
131725


Еще хотел бы добавить, если вы захотите создать свой аккаунт вместо root,12345 тогда вам необходимо удалить файл proxy.db в главной директории проекта.
И на вашем сервере необходимо расскоментировать код который показан на скриншоте ниже он находится по пути /routes/user.py и перезапустить апишку командой
Код:
Развернуть Свернуть Копировать
pm2 restart main
131762

далее перейдите в документацию, как это сделать я рассказывал выше, там вы сможете найти новый endpoint /user/signup он и поможет вам зарегистрировать нового пользователя. Если вы хотите закрыть регистрацию обратно, просто закоментируйте данный код и еще раз перезапустите апи.

Логин и пароль прокси, JWT ключ для шифрования и другие настройки находятся в файле .env вы можете их заменить так как вам удобно :-)

Вот и всё. Надеюсь, данная статья и мой скрипт будут вам полезны! Если возникнут вопросы или пожелания по улучшению проекта, буду рад услышать ваши комментарии либо же вы можете самостоятельно улучшить код проекта и отправить ваши улучшения в гит репозиторий. Спасибо за внимание!:az:

Update: Важно чтобы сервер был настроен так чтобы он не запрашивал пароль для команд в терминале иначе сервис не сможет поднять прокси. + выяснилось что можно использовать OVPN конфиги других VPN провайдеров).

 

Вложения

Последнее редактирование:
Статья однозначно очень полезная!

Можно настройку сервера сделать например в Зеннопостере, после чего продавать настройку как услугу через какой-то Кворк - думаю спрос должен был бы быть (изучать тонкости всех команд людям сложно - проще $10 заплатить и получить готовый настроенный сервис).

Закладку себе на эту инструкцию сохраню!
 
  • Спасибо
Реакции: spbalexpiter и ZennoCat
Статья однозначно очень полезная!

Можно настройку сервера сделать например в Зеннопостере, после чего продавать настройку как услугу через какой-то Кворк - думаю спрос должен был бы быть (изучать тонкости всех команд людям сложно - проще $10 заплатить и получить готовый настроенный сервис).

Закладку себе на эту инструкцию сохраню!
Большое спасибо за оценку), очень старался).
 
  • Спасибо
Реакции: BAZAg
Большое спасибо за оценку), очень старался).
Даже описать весь процесс, не говоря уже вникнуть, оттестировать и запустить чтобы работало - это нужно было потратить огромное количество времени - и по Вашей статье это видно с первого взгляда.
 
  • Спасибо
Реакции: ZennoCat
Спасибо за статью.
Есть ли ограничения в данном методе на количество потоков? Т.е. могу ли я использовать сразу 100 проксей одновременно скажем?
 
  • Спасибо
Реакции: seodamage и ZennoCat
Спасибо за статью.
Есть ли ограничения в данном методе на количество потоков? Т.е. могу ли я использовать сразу 100 проксей одновременно скажем?
Конкретно в данном скрипте который я написал можно поднять одновременно только 10 прокси. И сам ProtonVPN разрешает только 10 одновременно поднятых VPN, но количество подключений к прокси неограниченно, к примеру можно подключаться к одной проксе сразу с нескольких устройств, главное чтобы VPN выдерживал нагрузку.
Рад что статья понравилась), возможно я не все смог описать правильно, так как этой первый опыт написания статьи и тема достаточно сложная. В следующий раз постараюсь лучше:-)
 
Последнее редактирование:
Друзья, отпишите кто-то, кто пытался повторить инструкцию, получилось ли у вас что то?) просто фидбек на будущее. Спасибо;-)
 
Последнее редактирование:
Спасибо, то что искал! Осталось сделать список впн провайдеров кто предоставляет много конфигов
 
  • Спасибо
Реакции: ZennoCat
Хотелось бы иметь возможно подключать одновременно разные сервисы, каким образом можно указать в userpass.txt доступы к разным сервисам и есть ли вообще такая возможность?
 
Хотелось бы иметь возможно подключать одновременно разные сервисы, каким образом можно указать в userpass.txt доступы к разным сервисам и есть ли вообще такая возможность?
К сожалению нет(, я планировал это доработать в будущем но для конкурса успел сделать только базовую версию
 
К сожалению нет(, я планировал это доработать в будущем но для конкурса успел сделать только базовую версию
Ну тогда ждем по возможности обновления, у проекта огромный потенциал
 
  • Спасибо
Реакции: ZennoCat
Ну тогда ждем по возможности обновления, у проекта огромный потенциал
Рад что вы это поняли, я тоже думал об этом, почему и поделился своими наработками. Мне хотелось чтобы этот проект мог использовать каждый автоматизатор и также чтобы все могли внести свой вклад при желании, потому для всех открыт доступ на гитхабе :-)
 
Надо потестить, как раз то, что надо будет через пару дней, хотел как раз писать сам, немного другой вариант без панели и с shadowsocks, что как раз решило бы проблему с анонимностью, но, в целом, думаю, меня устроит и такой вариант, может получится потом поменять 3proxy на shadowsocks. Если все окей, то однозначно знаю за какую статью голосовать)
 
  • Спасибо
Реакции: ZennoCat
Надо потестить, как раз то, что надо будет через пару дней, хотел как раз писать сам, немного другой вариант без панели и с shadowsocks, что как раз решило бы проблему с анонимностью, но, в целом, думаю, меня устроит и такой вариант, может получится потом поменять 3proxy на shadowsocks. Если все окей, то однозначно знаю за какую статью голосовать)
Большое спасибо, очень рад что решение понравилось). Надеюсь получится настроить под ваши нужды)
 
а могу ли я на бесплатном аккаунте от proton vpn это проделать? И подскажите, какой именно тариф вы брали на proton vpn (VPN Plus, Proton Unlimited, Proton Duo). И сервер подойдет такой htk.ge (или посоветуйте где сами берете с оплатой для ру пользователей). я просто никогда не делал ничего подобного, сорри за глупые вопросы
 
  • Спасибо
Реакции: ZennoCat
а могу ли я на бесплатном аккаунте от proton vpn это проделать? И подскажите, какой именно тариф вы брали на proton vpn (VPN Plus, Proton Unlimited, Proton Duo). И сервер подойдет такой htk.ge (или посоветуйте где сами берете с оплатой для ру пользователей). я просто никогда не делал ничего подобного, сорри за глупые вопросы
Вы можете сделать на бесплатном аккаунте но там будет меньшее количество ovpn конфигов доступно. У меня VPN Plus.
По поводу оплаты к сожалению не смогу помочь так как я не из РФ, я покупал сервер здесь - https://www.mvps.net/
В целом я купил базовый сервер linux + ubuntu 1 ядро 2гб RAM. Вы можете задавать любые вопросы, глупых вопросов не бывает).
Прикладываю скрин с конфигами сервера который я использовал для статьи).
132174
 
  • Спасибо
Реакции: volody00
Протон ВПН вроде можно купить на барахолках готовый акк задешево.
Кстати а там есть впнки в РФ? Чтоб на ру прокси сделать?
 
  • Спасибо
Реакции: ZennoCat
Протон ВПН вроде можно купить на барахолках готовый акк задешево.
Кстати а там есть впнки в РФ? Чтоб на ру прокси сделать?
Да,там есть локация РФ.
Если можно купить таким образом как вы говорите то это прям круто), спасибо за подсказку
 
Сделал все по инструкции, кроме того, что у меня установлено на виртуалке на насе, т.е. локальный ip. К панели подключился, все вроде работает, но при выборе прокси и нажатии на Turn on крутится кружок, но прокси не хочет активироваться. И еще момент, что у меня не протон, а сурфшарк, но по идее не должно быть проблемы, я в ручную через консоль уже активировал конфиг и все работало, без панели и 3proxy, я через шэдоусокс руками запускал. Он же по идее просто загружает конфиг и при запросе отдает данные для авторизации, не может же тут быть как-то жестко настроено чисто под протон?) Естественно, логин и пароль я прописал нужные.
А, еще я устанавливал не в root, а в /home/srv, а то он на права сильно ругался, я решил, что не буду все от рута ставить, но везде, при запуске и установке в командах я поменял пути. Может где-то в файлах жестко прописан путь на root?
 
Последнее редактирование:
Сделал все по инструкции, кроме того, что у меня установлено на виртуалке на насе, т.е. локальный ip. К панели подключился, все вроде работает, но при выборе прокси и нажатии на Turn on крутится кружок, но прокси не хочет активироваться. И еще момент, что у меня не протон, а сурфшарк, но по идее не должно быть проблемы, я в ручную через консоль уже активировал конфиг и все работало, без панели и 3proxy, я через шэдоусокс руками запускал. Он же по идее просто загружает конфиг и при запросе отдает данные для авторизации, не может же тут быть как-то жестко настроено чисто под протон?) Естественно, логин и пароль я прописал нужные.
А, еще я устанавливал не в root, а в /home/srv, а то он на права сильно ругался, я решил, что не буду все от рута ставить, но везде, при запуске и установке в командах я поменял пути. Может где-то в файлах жестко прописан путь на root?
я обязательно пересмотрю сейчас пути, может действительно где-то оставил хардкод. А вы пробовали фришные конфиги протона, очень интересно как они себя будут вести. А в .env файле заменяли путь? этот - PROXY_FOLDER="/root/3proxy/"
 
я обязательно пересмотрю сейчас пути, может действительно где-то оставил хардкод. А вы пробовали фришные конфиги протона, очень интересно как они себя будут вести. А в .env файле заменяли путь? этот - PROXY_FOLDER="/root/3proxy/"
Тут забыл поменять. Стопнул, поменял, запустил заново, но все равно крутится кружок и все.
 

Вложения

  • Снимок экрана 2025-03-31 195129.png
    Снимок экрана 2025-03-31 195129.png
    38 KB · Просмотры: 107
  • Спасибо
Реакции: ZennoCat
Тут забыл поменять. Стопнул, поменял, запустил заново, но все равно крутится кружок и все.
кажется нам удалось найти решение), проблема была в том что скрипт не мог выполнять команды в терминале так как сервер обязательно запрашивал пароль после каждой команды, решилось тем что удалось отключить запрос пароля и прокси начали работать. Также можно использовать конфиги не только protonvpn но и других впн провайдеров)
 
Последнее редактирование:
  • Спасибо
Реакции: merlin74
А почему интересно после удаления проксей нужно ждать 1-2 минуты перед созданием новых? это можно пофиксить?
 
  • Спасибо
Реакции: ZennoCat
А почему интересно после удаления проксей нужно ждать 1-2 минуты перед созданием новых? это можно пофиксить?
тоже заметил это переодически, пока что не понял как пофиксить, буду искать причину). У вас конфиги протона?
 
Заметил что все ломается когда быстро выключаешь все прокси в админке, в итоге перестает работать веб морда
 
  • Спасибо
Реакции: ZennoCat
Заметил что все ломается когда быстро выключаешь все прокси в админке, в итоге перестает работать веб морда
Спасибо за фидбек, попробую исправить проблему. Я отпишу в эту тему когда получится пофиксить баг
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)