- Регистрация
- 06.01.2020
- Сообщения
- 61
- Благодарностей
- 32
- Баллы
- 18
Всем привет!
Я никогда раньше не писал подобные статьи, но всегда хотел что-то опубликовать на ZennoLab, так как очень люблю ZennoPoster и реализовал на нём достаточно много проектов. Считаю его одним из лучших инструментов для автоматизации самых разных задач, а сам форум — очень ценным источником информации для каждого автоматизатора, независимо от того, создаёт он проекты на ZennoPoster, Python или чём-то ещё.
На создание данного проекта меня вдохновила статья из прошлых конкурсов:
«В ZennoPoster VPN у нас, а у Вас? Или использование VPN в многопотоке».
Какую же проблему решает мой проект? Я думаю что у многих автоматизаторов возникала потребность парсить какие-то данные откуда либо и часто мы получаем блокировки по IP и по итогу не можем получить необходимые нам данные. Я сделал этот API так как мне показалось что это хорошее решение для обхода блокировок и мне хотелось бы сделать это доступным из коробки любому автоматизатору. Уже сейчас мне удалось парсить Google и еще некоторые более простые веб-сайты.
Честно говоря я считаю VPN имеет ряд своих преимуществ перед простыми прокси, к примеру тариф на ProtonVPN обойдется намного дешевле чем аренда прокси (особенно если взять его по скидке) и VPN имеет очень не плохой траст так как много живых людей используют эти IP.
Также прикладываю небольшую гифку, в которой можно увидеть, как всё это работает.
Проект написан на Python. Хочу подчеркнуть, что не являюсь «сильным» программистом, и программирование — это скорее моё хобби, поэтому, если в теме будут опытные коллеги, прошу отнестись с пониманием к моему коду. Он, конечно, не без багов. И в этом проекте я впервые использовал FastAPI по рекомендации своих коллег автоматизаторов.
Кому интересен код самого проекта, вы можете посмотреть его здесь: https://github.com/tyshchenko-dev/proxy_api
Сейчас я кратко опишу алгоритм работы данного проекта.
Для правильной работы API нам нужны 2 программы:
1. OpenVPN
2. 3proxy
Далее я буду часто использовать понятие OVPN-конфиг. Потому наверное было бы лучше написать что имеется ввиду.
OVPN-конфиг — это обычный текстовый файл с инструкциями для программы OpenVPN о том, как подключаться к VPN-серверу. В нём указаны все необходимые параметры: адрес сервера, способы шифрования, пути к сертификатам, логин/пароль и т.д. Когда вы запускаете OpenVPN и указываете ему этот файл, программа читает настройки и устанавливает зашифрованное VPN-соединение согласно всем прописанным параметрам.
Внутри API я создал класс которые отвечает за работу с OpenVPN и назвал его OpenVPNManager давайте посмотрим как работают некоторые его методы.
Метод который используется для запуска конфига:
на самом деле этот метод выполняет простую команду для linux которая запускает OVPN с необходимым нам конфигом, а в переменной config_path мы просто передаем путь к файлу ovpn конфига который мы выбрали для запуска.
Но для того чтобы конфиг работал правильно в него необходимо добавить определенные строки с этим нам помогает метод ниже
данный метод подменяет {{adapter_name}} на tun1 либо любой другой свободный туннель и добавляет строки в ovpn конфиг:
auth-user-pass userpass.txt
Говорит клиенту OpenVPN использовать файл userpass.txt для ввода учётных данных (логин и пароль от нашего ovpn конфига, дальше в статье и в видео вы сможете увидеть откуда его взять).
dev {{adapter_name}}
Определяет, на каком сетевом интерфейсе (адаптере) будет работать VPN-туннель. Переменная {{adapter_name}} сделана для удобства динамической подстановки имени адаптера так как мы будем поднимать много впн одновременно.
route проще говоря
Если убрать эти строки, весь интернет-трафик сервера пойдёт через VPN-туннель.
Благодаря этим строкам трафик сервера продолжит ходить через обычное интернет-соединение, а VPN будет запущен отдельно, и через него будет идти только тот трафик, для которого явно настроен маршрут или который нужен внутри самой VPN-сети.
После того как мы подняли конфиг, скрипт автоматически сохраняет PID этого процесса чтобы в дальнейшем его можно было остановить при потребности.
Теперь нам необходимо получить IP нашего туннеля, для этого есть отдельный метод который выполняет эту задачу
данный метод выполняет команду в 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 моего проекта вы можете увидеть такой код:
Эти две переменные содержат шаблоны которые дальше подставляются в файл 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 перед запуском, а именно подставляет в этот шаблон данные необходимые для запуска конфига.
Потом запускается подготовленный 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), но вы можете использовать другую — просто не забудьте менять пути в командах.
После авторизации в дашборде вы можете выбрать страну (прокси) в выпадающем меню и нажать Proxy Search, а затем выбрать любой из доступных конфигов и нажать Turn On.
После этого прокси запустится. По умолчанию он доступен в двух протоколах: socks5 и http. В списке прокси вы можете выбрать нужный протокол через выпадающее меню, скопировать адрес и добавить его в ZennoPoster. Затем протестировать, например, на whoer.net.
На этом процесс установки и запуска проекта завершён!
Пример проекта для ZennoPoster
Я также прикрепляю пример Zennoposter-проекта для взаимодействия с API. В настройках этого проекта укажите IP вашего сервера, чтобы всё корректно работало. Документация доступна по адресу (конечно в данный момент ее необходимо сделать более информативной) - http://<IP_сервера>:3000/docs
Еще хотел бы добавить, если вы захотите создать свой аккаунт вместо root,12345 тогда вам необходимо удалить файл proxy.db в главной директории проекта.
И на вашем сервере необходимо расскоментировать код который показан на скриншоте ниже он находится по пути /routes/user.py и перезапустить апишку командой
далее перейдите в документацию, как это сделать я рассказывал выше, там вы сможете найти новый endpoint /user/signup он и поможет вам зарегистрировать нового пользователя. Если вы хотите закрыть регистрацию обратно, просто закоментируйте данный код и еще раз перезапустите апи.
Логин и пароль прокси, JWT ключ для шифрования и другие настройки находятся в файле .env вы можете их заменить так как вам удобно
Вот и всё. Надеюсь, данная статья и мой скрипт будут вам полезны! Если возникнут вопросы или пожелания по улучшению проекта, буду рад услышать ваши комментарии либо же вы можете самостоятельно улучшить код проекта и отправить ваши улучшения в гит репозиторий. Спасибо за внимание!
Я никогда раньше не писал подобные статьи, но всегда хотел что-то опубликовать на ZennoLab, так как очень люблю ZennoPoster и реализовал на нём достаточно много проектов. Считаю его одним из лучших инструментов для автоматизации самых разных задач, а сам форум — очень ценным источником информации для каждого автоматизатора, независимо от того, создаёт он проекты на ZennoPoster, Python или чём-то ещё.
На создание данного проекта меня вдохновила статья из прошлых конкурсов:
«В ZennoPoster VPN у нас, а у Вас? Или использование VPN в многопотоке».
Какую же проблему решает мой проект? Я думаю что у многих автоматизаторов возникала потребность парсить какие-то данные откуда либо и часто мы получаем блокировки по IP и по итогу не можем получить необходимые нам данные. Я сделал этот API так как мне показалось что это хорошее решение для обхода блокировок и мне хотелось бы сделать это доступным из коробки любому автоматизатору. Уже сейчас мне удалось парсить Google и еще некоторые более простые веб-сайты.
Честно говоря я считаю VPN имеет ряд своих преимуществ перед простыми прокси, к примеру тариф на ProtonVPN обойдется намного дешевле чем аренда прокси (особенно если взять его по скидке) и VPN имеет очень не плохой траст так как много живых людей используют эти IP.
Также прикладываю небольшую гифку, в которой можно увидеть, как всё это работает.
Проект написан на 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
Но для того чтобы конфиг работал правильно в него необходимо добавить определенные строки с этим нам помогает метод ниже
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
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
Говорит клиенту 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}")
Этот 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_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
После этого скрипт добавляет в 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
- Разрешаем доступ по 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-password
- И в папку vpn_configs добавьте свои протон конфиги (старые конфиги которые загружаются из гитхаба думаю будет лучше удалить). Важно все конфиги нужно хранить в подпапке, к примеру я храню конфиги примерно так /root/proxy_api/vpn_configs/netherlands/и сюда добавляем все конфиги для netherlands, если у нас есть конфиги другой страны то для нее делаем отдельную папку и в нее сохраняем конфиги, пример /root/proxy_api/vpn_configs/united_states/
Конфиги можно найти по ссылке https://account.protonvpn.com/downloads
(Для того чтобы скачать конфиги вы должны быть зарегистрированы на сайте ProtonVPN, после регистрации на сайте будет доступно небольшое количество фришных конфигов, установите все настройки как на скрине ниже и скачайте их)
- Запускаем проект через 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.
После этого прокси запустится. По умолчанию он доступен в двух протоколах: socks5 и http. В списке прокси вы можете выбрать нужный протокол через выпадающее меню, скопировать адрес и добавить его в ZennoPoster. Затем протестировать, например, на whoer.net.
На этом процесс установки и запуска проекта завершён!
Пример проекта для ZennoPoster
Я также прикрепляю пример Zennoposter-проекта для взаимодействия с API. В настройках этого проекта укажите IP вашего сервера, чтобы всё корректно работало. Документация доступна по адресу (конечно в данный момент ее необходимо сделать более информативной) - http://<IP_сервера>:3000/docs
Еще хотел бы добавить, если вы захотите создать свой аккаунт вместо root,12345 тогда вам необходимо удалить файл proxy.db в главной директории проекта.
И на вашем сервере необходимо расскоментировать код который показан на скриншоте ниже он находится по пути /routes/user.py и перезапустить апишку командой
Код:
pm2 restart main
далее перейдите в документацию, как это сделать я рассказывал выше, там вы сможете найти новый endpoint /user/signup он и поможет вам зарегистрировать нового пользователя. Если вы хотите закрыть регистрацию обратно, просто закоментируйте данный код и еще раз перезапустите апи.
Логин и пароль прокси, JWT ключ для шифрования и другие настройки находятся в файле .env вы можете их заменить так как вам удобно

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

Вложения
-
16,2 КБ Просмотры: 21
Последнее редактирование: