diff --git a/README.md b/README.md
index 4e7cd6b..c40ac99 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@

- [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
+ [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
# 3DP-MANAGER
@@ -10,11 +10,13 @@
**Поддержать проект**
-- Реквизиты / донаты:
+- Банковским переводом:
- Карта МИР: `2204320436318077`
- Карта MasterCard: `5395452209474530`
+- На электронный кошелек:
- ЮМоney: `4100116897060652`
- PayPal: `vasiljevdenisx@gmail.com`
+- Криптовалютой:
- USDT | ETH (ERC20 | BEP20): `0x6fe140040f6Cdc1E1Ff2136cd1d60C0165809463`
- USDT | TRX (TRC20): `TEWxXmJxvkAmhshp7E61XJGHB3VyM9hNAb`
- Bitcoin: `bc1qctntwncsv2yn02x2vgnkrqm00c4h04c0afkgpl`
@@ -32,7 +34,7 @@
Все подключения объединяются в одну подписку со статичным URL. Бот работает с панелью `3x-ui` и не вмешивается в её работу напрямую, используя открытое API панели.
-Вторичная цель — стабильность подключения: клиент получает 10 вариантов поключений и может выбрать любое из них.
+Вторичная цель — стабильность подключения: клиент получает 10 вариантов подключений и может выбрать любое из них.
Дополнительно: бот можно использовать в каскадной схеме. Сервис перенаправления автоматически настроит переадресацию подписки и трафика к основному серверу.
@@ -51,14 +53,15 @@
## Требования
-- Ubuntu 20.04 (и выше)
-- Панель `3x-ui`
+- Ubuntu 20.04 (и выше), Debian 12.11 (и выше)
+- Панель `3x-ui` v2.8.4 (и выше)
- Домен + SSL сертификат (опционально)
---
## Установка
+У вас должны быть установлены пакеты на сервере `curl`, `jq` командой: `apt install curl jq` и панель управления `3x-ui`, которую можно установить командой: `bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)`
Установите проект на сервер командой:
```bash
@@ -91,6 +94,9 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main
## Установка сервиса перенаправления (forwarding)
+> [!WARNING]
+> Сервис перенаправления работает на промежуточном сервере.
+
Сервис перенаправления позволяет проксировать входящие порты с промежуточного сервера на основной.
```bash
@@ -127,7 +133,7 @@ cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' -
node get_domains.js
```
-Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Неободим `Node.js` для работы скрипта.
+Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Необходим `Node.js` для работы скрипта.
## Использование собственного белого списка
@@ -138,7 +144,7 @@ node get_domains.js
cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.txt
```
-Краткое описание: добавляет ваш файл доменов в контейнер приложения. Чтобы сразу же сгенерировать инбаунды с новыи списком, выполните `docker exec -it node sh` и затем `node index.js`.
+Краткое описание: добавляет ваш файл доменов в контейнер приложения. Чтобы сразу же сгенерировать инбаунды с новым списком, выполните `docker exec -it node sh` и затем `node index.js`.
---
diff --git a/README_CN.md b/README_CN.md
index e4d0b75..dbd90c4 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -2,7 +2,7 @@

- [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
+ [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
# 3DP-MANAGER
diff --git a/README_EN.md b/README_EN.md
index 42919be..d6de078 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -2,7 +2,7 @@

- [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
+ [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
# 3DP-MANAGER
diff --git a/README_IR.md b/README_IR.md
index f65de74..e573987 100644
--- a/README_IR.md
+++ b/README_IR.md
@@ -2,7 +2,7 @@

- [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
+ [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
# 3DP-MANAGER
diff --git a/README_TK.md b/README_TK.md
index 7b5617e..18545bc 100644
--- a/README_TK.md
+++ b/README_TK.md
@@ -2,7 +2,7 @@

- [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
+ [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
# 3DP-MANAGER
diff --git a/app/index.js b/app/index.js
index 56afa2e..0ef17cc 100644
--- a/app/index.js
+++ b/app/index.js
@@ -76,7 +76,10 @@ async function getFreePort(used) {
while (true) {
const p = Math.floor(Math.random() * (60000 - 10000)) + 10000;
if (used.has(p)) continue;
- if (await isPortFree(p)) return p;
+ if (await isPortFree(p)) {
+ used.add(p);
+ return p;
+ }
}
}
@@ -187,8 +190,7 @@ async function rotate() {
for (const b of builders) {
const domain = pickDomain(whitelist);
- const inbound = await b(domain);
- usedPorts.add(inbound.port);
+ const inbound = await b(domain);
const idOrPass = inbound.settings ? JSON.parse(inbound.settings).clients?.[0]?.id || JSON.parse(inbound.settings).clients?.[0]?.password : "";
// Build the link depending on the protocol
@@ -210,8 +212,15 @@ async function rotate() {
// Initial run
rotate();
-let interval = parseInt(process.env.ROTATE_INTERVAL) || 30;
-if (interval < 10) interval = 10;
+let interval = parseInt(process.env.ROTATE_INTERVAL, 10);
-const cronExpression = `*/${interval} * * * *`;
-cron.schedule(cronExpression, rotate);
\ No newline at end of file
+if (isNaN(interval) || interval < 10) {
+ console.warn('⚠ Интервал некорректен или меньше 10 минут. Используется значение по умолчанию 30 минут.');
+ interval = 30;
+}
+
+const intervalMs = interval * 60 * 1000;
+
+console.log(`✔ Интервал ротации установлен: ${interval} минут`);
+
+setInterval(rotate, intervalMs);
\ No newline at end of file
diff --git a/delete.sh b/delete.sh
index c3212b3..10fcbb2 100644
--- a/delete.sh
+++ b/delete.sh
@@ -17,7 +17,7 @@ need_root() {
[[ $EUID -eq 0 ]] || die "Запускать только от root"
}
-read -r -p "Вы уверены, что хотите удалить? (y/N): " answer
+read -r -p "Вы уверены, что хотите удалить? (y/n): " answer
case "$answer" in
y|Y)
diff --git a/forwarding_delete.sh b/forwarding_delete.sh
index 1854467..fd7bf78 100644
--- a/forwarding_delete.sh
+++ b/forwarding_delete.sh
@@ -14,7 +14,7 @@ warn() { echo -e "\033[1;33m[WARN]\033[0m $1"; }
[[ $EUID -eq 0 ]] || { echo "Запускать нужно от root"; exit 1; }
-read -r -p "Вы уверены, что хотите удалить? (y/N): " answer
+read -r -p "Вы уверены, что хотите удалить? (y/n): " answer
case "$answer" in
y|Y)
diff --git a/forwarding_install.sh b/forwarding_install.sh
index debc6fd..c5e1d5b 100644
--- a/forwarding_install.sh
+++ b/forwarding_install.sh
@@ -15,6 +15,12 @@ die() { echo -e "\033[1;31m[ERROR]\033[0m $1"; exit 1; }
[[ $EUID -eq 0 ]] || die "Запускать нужно от root"
+# Check OS and set release variable
+. /etc/os-release
+if [[ "$ID" != "ubuntu" && "$ID" != "debian" ]]; then
+ die "Этот скрипт поддерживает только Ubuntu или Debian: $ID"
+fi
+
#################################
# ASCII-баннер
#################################
@@ -292,19 +298,33 @@ log "Проверка Docker"
if command -v docker >/dev/null 2>&1; then
log "Docker уже установлен"
else
- log "Docker не найден, будет установлен"
+ log "Docker не найден, будет установлен из официального репозитория"
+ # Add Docker's official GPG key:
apt update
- apt install -y docker.io || die "Ошибка установки docker.io"
- systemctl enable docker
- systemctl restart docker
-fi
+ apt install ca-certificates curl
+ install -m 0755 -d /etc/apt/keyrings
+ if [[ "$ID" == "ubuntu" ]]; then
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker"
+ else
+ curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker"
+ fi
+ chmod a+r /etc/apt/keyrings/docker.asc
-if docker compose version >/dev/null 2>&1; then
- log "docker compose v2 доступен"
-else
- log "Устанавливаем docker-compose-v2"
- apt install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
- docker-compose-v2 || warn "docker-compose-v2 не установлен, возможно уже есть плагин"
+ # Add the repository to Apt sources:
+ CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME}
+ tee /etc/apt/sources.list.d/docker.sources </dev/null 2>&1; then
+ echo "❌ Панель 3x-ui не найдена или не работает."
+ echo " Чтобы установить, выполните:"
+ echo "bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)"
+ exit 1
+fi
+
+echo "✔ Панель 3x-ui найдена и работает"
+
#################################
# ASCII-баннер
#################################
@@ -45,9 +60,9 @@ echo ""
#################################
# Function to get panel URL from 3x-ui
get_xui_url() {
- local output=$(x-ui settings 2>/dev/null)
+ local output=$(x-ui settings 2>/dev/null || true)
- echo "$output" | sed 's/\x1b\[[0-9;]*m//g' | grep "Access URL:" | grep -oE 'https?://[^[:space:]]+' | head -n1
+ echo "$output" | sed 's/\x1b\[[0-9;]*m//g' | grep "Access URL:" | grep -oE 'https?://[^[:space:]]+' | head -n1 || true
}
echo "Определяем URL панели 3x-ui..."
@@ -60,21 +75,25 @@ if [[ -z "$UI_URL" ]]; then
fi
UI_URL=$(echo "$UI_URL" | sed -E 's/[[:space:]]*$//; s|/*$||')
-
-echo "URL панели 3x-ui: $UI_URL"
-
# Validate URL correctness
validate_url "$UI_URL" || die "Некорректный URL панели 3x-ui: $UI_URL"
+echo "URL панели 3x-ui: $UI_URL"
+
read -rp "Логин 3x-ui: " UI_LOGIN
read -rsp "Пароль 3x-ui: " UI_PASSWORD
echo
[[ -z "$UI_LOGIN" || -z "$UI_PASSWORD" ]] && die "Логин/пароль обязательны"
# Check login
-LOGIN_RESPONSE=$(curl -s -X POST "$UI_URL/login" -H "Content-Type: application/json" -d "{\"username\":\"$UI_LOGIN\",\"password\":\"$UI_PASSWORD\"}")
+if ! command -v curl >/dev/null 2>&1; then
+ echo "❌ curl не установлен. Установите curl и повторите попытку"
+ echo " apt install -y curl"
+ exit 1
+fi
+
+LOGIN_RESPONSE=$(curl -s -X POST "$UI_URL/login" -H "Content-Type: application/json" -d "{\"username\":\"$UI_LOGIN\",\"password\":\"$UI_PASSWORD\"}" || true)
-# Проверка успешного логина по ключевому полю "success" или наличию куки
if ! echo "$LOGIN_RESPONSE" | grep -q '"success":true'; then
echo "Не удалось залогиниться в 3x-ui. Проверьте URL, логин и пароль."
exit 1
@@ -109,7 +128,7 @@ fi
# Input rotation interval
read -rp "Интервал генерации инбаундов в минутах (от 10, по умолчанию 30): " ROTATE_INTERVAL
-ROTATE_INTERVAL="${ROTATE_INTERVAL:-30}" # по умолчанию 30
+ROTATE_INTERVAL="${ROTATE_INTERVAL:-30}"
# Check that it's a number and ≥10
if ! [[ "$ROTATE_INTERVAL" =~ ^[0-9]+$ ]] || [ "$ROTATE_INTERVAL" -lt 10 ]; then
@@ -135,7 +154,13 @@ COUNTRY_FLAG=""
IP_JSON=$(curl -s --fail http://ip-api.com/json/ || true)
[ -z "$IP_JSON" ] && exit 0
-COUNTRY_CODE=$(echo "$IP_JSON" | jq -r '.countryCode // empty' 2>/dev/null)
+if ! command -v jq >/dev/null 2>&1; then
+ echo "❌ Не найден jq. Для работы скрипта необходимо установить jq."
+ echo " apt install -y jq"
+ exit 1
+fi
+
+COUNTRY_CODE=$(echo "$IP_JSON" | jq -r '.countryCode // empty' 2>/dev/null || true)
[ -z "$COUNTRY_CODE" ] && exit 0
# Flags JSON URL
@@ -144,19 +169,22 @@ FLAGS_JSON_URL="$REPO_BASE/app/assets/flags.json"
FLAGS_JSON=$(curl -s "$FLAGS_JSON_URL" || true)
[ -z "$FLAGS_JSON" ] && exit 0
-# Ищем emoji
+# emoji
COUNTRY_FLAG=$(echo "$FLAGS_JSON" | jq -r --arg code "$COUNTRY_CODE" '.[] | select(.code == $code) | .emoji // empty' 2>/dev/null | head -n1)
#################################
# Whitelist
#################################
-curl -fsSL "$REPO_BASE/whitelist.txt" -o whitelist.txt
-log "whitelist.txt скопирован"
+if curl -fsSL "$REPO_BASE/whitelist.txt" -o whitelist.txt; then
+ log "whitelist.txt скопирован"
+else
+ log "⚠ Не удалось скачать whitelist.txt"
+fi
#################################
# TOKEN GENERATION
#################################
-SUB_TOKEN="$(openssl rand -hex 24)"
+SUB_TOKEN=$(date +%s%N | sha256sum | cut -c1-16)
log "Сгенерирован токен подписки"
#################################
@@ -167,21 +195,33 @@ log "Проверка Docker"
if command -v docker >/dev/null 2>&1; then
log "Docker уже установлен"
else
- log "Docker не найден, будет установлен"
+ log "Docker не найден, будет установлен из официального репозитория"
+ # Add Docker's official GPG key:
apt update
- apt install -y docker.io || die "Ошибка установки docker.io"
- systemctl enable docker
- systemctl restart docker
-fi
+ apt install ca-certificates curl
+ install -m 0755 -d /etc/apt/keyrings
+ if [[ "$ID" == "ubuntu" ]]; then
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker"
+ else
+ curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker"
+ fi
+ chmod a+r /etc/apt/keyrings/docker.asc
-# Check docker compose v2
-if docker compose version >/dev/null 2>&1; then
- log "docker compose v2 доступен"
-else
- log "Устанавливаем docker-compose-v2"
- # решаем конфликт с docker-compose-plugin
- apt install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
- docker-compose-v2 || warn "docker-compose-v2 не установлен, возможно уже есть плагин"
+ # Add the repository to Apt sources:
+ CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME}
+ tee /etc/apt/sources.list.d/docker.sources </dev/null | grep -q "Status: active"; then
+ echo "UFW найден и активен. Открываем порты..."
+ ufw allow 443/tcp
+ ufw allow 443/udp
+ ufw allow 8443/tcp
+ ufw allow 8443/udp
+ ufw allow "$NGINX_PORT"/tcp
+ ufw allow 10000:60000/tcp
+ ufw allow 10000:60000/udp
+fi
+
#################################
# RUN
#################################
diff --git a/update.sh b/update.sh
index e44211e..3b4eda0 100644
--- a/update.sh
+++ b/update.sh
@@ -17,6 +17,12 @@ need_root() {
[[ $EUID -eq 0 ]] || die "Запускать только от root"
}
+if ! command -v curl >/dev/null 2>&1; then
+ echo "❌ curl не установлен. Установите curl и повторите попытку"
+ echo " apt install -y curl"
+ exit 1
+fi
+
#################################
# CONFIG
#################################
diff --git a/whitelist.txt b/whitelist.txt
index 856a652..e825d34 100644
--- a/whitelist.txt
+++ b/whitelist.txt
@@ -1,452 +1,100 @@
-2gis.com
-2gis.ru
-300.ya.ru
-3475482542.mc.yandex.ru
-742231.ms.ok.ru
-a.auth-nsdi.ru
-a.res-nsdi.ru
-a.wb.ru
-adm.digital.gov.ru
-adm.mp.rzd.ru
-admin.cs7777.vk.ru
-admin.tau.vk.ru
-ads.vk.ru
+ir.ozone.ru
+ozon.ru
+refersion.com
+st.ozone.ru
+stats.vk-portal.net
+www.vk.com
ads.x5.ru
-adv.ozon.ru
-ai-gpt1.vepene.site
-ai4.vepene.site
-akashi.vk-portal.net
-alfabank.ru
-aliusfilms.ru
-ams2-cdn.2gis.com
-an.yandex.ru
-analytics.vk.ru
api-maps.yandex.ru
-api.2gis.ru
-api.avito.ru
-api.browser.yandex.com
-api.browser.yandex.ru
-api.cs7777.vk.ru
-api.events.plus.yandex.net
-api.fastload.site
-api.furypay.ru
-api.max.ru
-api.nodesecure.ru
-api.ok.ru
-api.photo.2gis.com
-api.plus.kinopoisk.ru
-api.reviews.2gis.com
-api.s3.yandex.net
-api.speedload.online
-api.speedload.ru
-api.tau.vk.ru
-api.uxfeedback.yandex.net
-api.vk.ru
-apiok.ru
-apple.com
-at.ultima.foundation
-auto.ru
-autodiscover.ord.ozon.ru
-avatars.mds.yandex.com
-avatars.mds.yandex.net
-avito.ru
-avito.st
-away.cs7777.vk.ru
-away.tau.vk.ru
-b.auth-nsdi.ru
-b.res-nsdi.ru
-bank.ozon.ru
-banners-website.wildberries.ru
-bfds.sberbank.ru
-bg.fasssst.ru
-bot.gosuslugi.ru
-botapi.max.ru
-bro-bg-store.s3.yandex.com
-bro-bg-store.s3.yandex.net
-bro-bg-store.s3.yandex.ru
-brontp-pre.yandex.ru
-browser.yandex.com
-browser.yandex.ru
-business.vk.ru
-cargo.rzd.ru
-catalog.api.2gis.com
-cdn-de.maviks.ru
-cdn.fastload.site
-cdn.glorypay.ru
-cdn.kickdown.click
-cdn.lemanapro.ru
-cdn.m1space.ru
-cdn.s3.yandex.net
-cdn.speedload.ru
-cdn.tbank.ru
-cdn.yandex.ru
-cdncloudone.serverstats.ru
-cdncloudthree.serverstats.ru
-cdncloudtwo.serverstats.ru
-cdnfive.serverstats.ru
-cdnmsk.serverstats.ru
-cdnrhkgfkkpupuotntfj.svc.cdn.yandex.net
-cdnsix.vk-com.ru
-cdntwo.dnsttlocate.ru
-cdntwo.speedstream.ru
-ch.fjdjdjfjd.icu
-chat-prod.wildberries.ru
-chat.speedload.ru
-chat3.vtb.ru
-cloud.cdn.yandex.com
-cloud.cdn.yandex.net
-cloud.cdn.yandex.ru
-cloud.vk.com
-cloud.vk.ru
-cloudcdn-ams19.cdn.yandex.net
-cloudcdn-m9-10.cdn.yandex.net
-cloudcdn-m9-12.cdn.yandex.net
-cloudcdn-m9-13.cdn.yandex.net
-cloudcdn-m9-14.cdn.yandex.net
-cloudcdn-m9-15.cdn.yandex.net
-cloudcdn-m9-2.cdn.yandex.net
-cloudcdn-m9-3.cdn.yandex.net
-cloudcdn-m9-4.cdn.yandex.net
-cloudcdn-m9-5.cdn.yandex.net
-cloudcdn-m9-6.cdn.yandex.net
-cloudcdn-m9-7.cdn.yandex.net
-cloudcdn-m9-9.cdn.yandex.net
-cloudlane.xyz
-cms-res-web.online.sberbank.ru
-cobrowsing.tbank.ru
-collections.yandex.com
-collections.yandex.ru
-company.rzd.ru
-connect.cs7777.vk.ru
-contacts.rzd.ru
-contract.gosuslugi.ru
-crowdtest.payment-widget-smarttv.plus.tst.kinopoisk.ru
-crowdtest.payment-widget.plus.tst.kinopoisk.ru
-cs.avito.ru
-cs7777.vk.ru
-csp.yandex.net
-d-assets.2gis.ru
-dating.ok.ru
-de1.vepene.site
-dev.cs7777.vk.ru
-dev.max.ru
-dev.tau.vk.ru
-digital.gov.ru
-disk.2gis.com
-disk.rzd.ru
-dmp.dmpkit.lemanapro.ru
-dnd.wb.ru
-download.max.ru
-dr.yandex.net
-dr2.yandex.net
-dropbox.com
-dzen.ru
-edgeport.xyz
+career.ozon.ru
+dancer.sbrf-cdn342.ru
egress.yandex.net
eh.vk.com
eh.vk.ru
-ekmp-a-51.rzd.ru
-enterprise.api-maps.yandex.ru
-esa-res.online.sberbank.ru
-esia.gosuslugi.ru
-event.yandex.ru
-expert.vk.ru
-external-api.mediabilling.kinopoisk.ru
-external-api.plus.kinopoisk.ru
-fastsync.xyz
-favicon.yandex.com
-favicon.yandex.net
-favicon.yandex.ru
-favorites.api.2gis.com
-filekeeper-vod.2gis.com
-finance.wb.ru
-fr.connectvpn.tech
-frontend.vh.yandex.ru
-fw.wb.ru
-gbr.fasssst.online
-germany1.cdn.yandexdns.ru
-germany2.cdn.yandexdns.ru
-gos9.portal-guard.com
-gosuslugi.ru
-gosweb.gosuslugi.ru
-gotraf.nodesecure.ru
-goya.rutube.ru
-gpt-plus.vepene.site
-gpt3.vepene.site
-graphql-web.kinopoisk.ru
-graphql.kinopoisk.ru
-greone.dnsttlocate.ru
-gretwo.dnsttlocate.ru
-gu-st.ru
-hd.kinopoisk.ru
-hello.opengate.tech
-help.max.ru
-hkg.tunnelguard.ru
-hlb.tunnelguard.ru
-hls-svod.itunes.apple.com
-hrc.tbank.ru
-http-check-headers.yandex.ru
-i.max.ru
-i0.photo.2gis.com
-i1.photo.2gis.com
-i1ugrwg2dj.a.trbcdn.net
-i2.photo.2gis.com
-i3.photo.2gis.com
-i4.photo.2gis.com
-i5.photo.2gis.com
-i6.photo.2gis.com
-i7.photo.2gis.com
-i8.photo.2gis.com
-i9.photo.2gis.com
-id.cs7777.vk.ru
-id.sber.ru
-id.tau.vk.ru
-id.tbank.ru
-id.vk.ru
-ietf.org
-images.apple.com
-imgproxy.cdn-tinkoff.ru
-informer.yandex.ru
-invest.ozon.ru
-io.ozone.ru
-ir.ozone.ru
-izbirkom.ru
-jam.api.2gis.com
-jitsi.wb.ru
-keys.api.2gis.com
-kiks.yandex.com
-kiks.yandex.ru
-kinopoisk.ru
-knix.fasssst.online
-le.tbank.ru
-learning.ozon.ru
-legal.max.ru
-lemanapro.ru
-link.max.ru
-link.mp.rzd.ru
-live.com
-live.ok.ru
-lk.gosuslugi.ru
-log.strm.yandex.ru
-login.cs7777.vk.ru
-login.tau.vk.ru
-login.vk.com
-login.vk.ru
-lv2.ultima.foundation
-lva.tunnelguard.ru
-m.47news.ru
-m.avito.ru
-m.cs7777.vk.ru
-m.ok.ru
-m.tau.vk.ru
+google.com
+ign.com
+ir-2.ozone.ru
+m.ok.com
m.vk.com
-m.vk.ru
-m.vkvideo.cs7777.vk.ru
-ma.kinopoisk.ru
-mail.yandex.com
-mail.yandex.ru
-map.gosuslugi.ru
-mapgl.2gis.com
-mapi.learning.ozon.ru
-market.rzd.ru
-maviks.ru
max.ru
-mc.yandex.com
-mc.yandex.ru
-me.cs7777.vk.ru
-mediafeeds.yandex.com
-mediafeeds.yandex.ru
-mediarush.xyz
-megafon.ru
-metrics.alfabank.ru
-microapps.kinopoisk.ru
-mp.rzd.ru
-ms.cs7777.vk.ru
-msk.t2.ru
-mts.ru
-multitest.ok.ru
-music.vk.ru
music.yandex.ru
-my.oversecure.pro
-my.rzd.ru
-mynode.nodesecure.ru
-mynoderu.nodesecure.ru
-neself.nodesecure.ru
-neuro.translate.yandex.ru
-nl.ultima.foundation
-nl3.truservice.top
-nla.tunnelguard.ru
-novorossiya.gosuslugi.ru
-nr9.strelkavpn.ru
-oauth.cs7777.vk.ru
-oauth.tau.vk.ru
-oauth2.cs7777.vk.ru
-ok.ufavpn.ru
-oneclick-payment.kinopoisk.ru
-online.sberbank.ru
-ord.ozon.ru
-ord.vk.ru
-oversecure.pro
-owa.ozon.ru
-ozon.ru
-partners.gosuslugi.ru
-partners.lemanapro.ru
-pay.ozon.ru
-payment-widget-smarttv.plus.kinopoisk.ru
-payment-widget.kinopoisk.ru
-payment-widget.plus.kinopoisk.ru
-pic.rutubelist.ru
-pl-res.online.sberbank.ru
-playself.nodesecure.ru
-plb.tunnelguard.ru
-plr.strelkavpn.ru
-pos.gosuslugi.ru
-powodzenia.xyz
-pptest.userapi.com
-preview.rutube.ru
-prodvizhenie.rzd.ru
-public-api.reviews.2gis.com
-pulse.mp.rzd.ru
-push.vk.ru
-queuev4.vk.com
-quiz.kinopoisk.ru
-r.vk.ru
-r0.mradx.net
-receive-sentry.lmru.tech
-reserve.ayagut.ovh
-rontgen.fasssst.ru
-ru.ultima.foundation
-runstream.xyz
-rutube.ru
-rzd.ru
-s.vtb.ru
-s0.bss.2gis.com
-s1.bss.2gis.com
-s3.t2.ru
-s3.yandex.net
-sba.yandex.com
-sba.yandex.net
-sba.yandex.ru
-sberbank.ru
-secure-cloud.rzd.ru
-secure.rzd.ru
-securepay.ozon.ru
-selfpl.speedload.online
-seller.ozon.ru
-sfd.gosuslugi.ru
-shiftline.xyz
-smartcaptcha.yandexcloud.net
-sntr.avito.ru
-softpipe.xyz
-speller.yandex.net
-sso-app4.vtb.ru
-sso-app5.vtb.ru
-sso.auto.ru
-sso.dzen.ru
-sso.passport.yandex.ru
-ssp.rutube.ru
-st-im.kinopoisk.ru
-st-ok.cdn-vk.ru
-st.avito.ru
-st.kinopoisk.ru
-st.max.ru
-st.okcdn.ru
-st.ozone.ru
-st.vk.com
-static-mon.yandex.net
-static.lemanapro.ru
+news.ufa-help.ru
+ob06vexvjl.a.trbcdn.net
static.rutube.ru
-stats.avito.ru
-stats.vk-portal.net
-sto.eu-ffast.com
-storage.ape.yandex.net
-streamport.xyz
-strm-rad-23.strm.yandex.net
-strm.yandex.net
-strm.yandex.ru
-styles.api.2gis.com
-suggest.dzen.ru
-suggest.sso.dzen.ru
-sun6-20.userapi.com
sun6-21.userapi.com
sun6-22.userapi.com
-sun9-101.userapi.com
sun9-38.userapi.com
-surveys.yandex.ru
-sync.browser.yandex.net
-tamtam.ok.ru
-target.vk.ru
-team.rzd.ru
-tech.vk.ru
-tgju.org
-ticket.rzd.ru
-tickets.widget.kinopoisk.ru
-tile0.maps.2gis.com
-tile1.maps.2gis.com
-tile2.maps.2gis.com
-tile3.maps.2gis.com
-tile4.maps.2gis.com
tradingview.com
-travel.rzd.ru
travel.yandex.ru
-travel.yastatic.net
-ui.cs7777.vk.ru
-ui.tau.vk.ru
-usa1.vepene.site
-user-geo-data.wildberries.ru
-uslugi.yandex.ru
-uxfeedback-cdn.s3.yandex.net
-uxfeedback.yandex.ru
-vk-portal.net
-vkvideo.cs7777.vk.ru
+tvdesign.ru
+vk.com
vkvideo.ru
+ws.fjdjdjfjd.icu
+www.rutube.ru
+www.vkvideo.ru
+xverager2.uspn.io
+ya.ru
+01.img.avito.st
+0ru84.tcpdoor.net
+aliusfilms.ru
+api.avito.ru
+azizoarjmand.info
+breeze.mos-drywall.shop
+breeze.my-rebar.shop
+cdn.tbank.ru
+content.fasssst.ru
+download.cdn.yandex.net
+es5.fasssst.online
+fin1.nfnpx.online
+fr1.nfnpx.online
+ger1.nfnpx.online
+ger2.nfnpx.online
+ger3.nfnpx.online
+ger4.nfnpx.online
+hkg.tunnelguard.ru
+hls-svod.itunes.apple.com
+i2pd.website
+j1p.1gb.site
+khabarovsk.geodema.network
+kz1.nfnpx.online
+max3.skystreamgame.com
+maxru.outlinekeys.net
+miro.com
+my-rebar.shop
+nl1.nfnpx.online
+nsk.geodema.network
+ovhwuxian.pai50288.uk
+pl1.nfnpx.online
+plb.tunnelguard.ru
+res.fasssst.ru
+ru2.nfnpx.online
+rutube.ru
+sni.111000.dynv6.net
+statue.lnmarketplace.net
+sun6-20.userapi.com
+tbankru.outlinekeys.net
+tunnel.vk-apps.com
+turkmenistan.gov.tm
+usa1.nfnpx.online
+veraams2.uspn.io
+verager2.uspn.io
+verahk1.uspn.io
+verakz1.uspn.io
+verarussia1.uspn.io
+vk.ookcdn.ru
vless.hubp.de
-vless.muzheng.top
-voter.gosuslugi.ru
-vt-1.ozone.ru
-wap.yandex.com
-wap.yandex.ru
-wb.ru
web.max.ru
wechat.com
-welcome.rzd.ru
-widgets.kinopoisk.ru
-wikiportal.su
-ws-api.oneme.ru
-ws.seller.ozon.ru
-wtvp7ujn9v.a.trbcdn.net
-www.abingdon.org.uk
-www.apple.com
-www.avito.ru
-www.avito.st
-www.bing.com
-www.cikrf.ru
-www.gosuslugi.ru
+workerr.schodog1.workers.dev
+www.cloudflare.com
+www.google.com
+www.ietf.org
www.kinopoisk.ru
-www.microsoft.com
-www.ok.ru
+www.mozilla.org
www.ozon.ru
-www.rutube.ru
-www.rzd.ru
-www.sberbank.ru
-www.t2.ru
-www.trustnav.com
-www.vk.com
-www.vtb.ru
-xapi.ozon.ru
-ya.ru
-yabro-wbplugin.edadeal.yandex.ru
-yabs.yandex.ru
+xfer.mos-drywall.shop
+xfer.my-rebar.shop
+xverakz1.uspn.io
+xverarussia1.uspn.io
yahoo.com
-yandex.com
-yandex.net
-yandex.ru
-yandexcdn.yandexdns.ru
-yandexcdn2.yandexdns.ru
-yastatic.net
-yt.fasssst.ru
-zen-yabro-morda.mediascope.mc.yandex.ru
-zen.yandex.com
-zen.yandex.net
-zen.yandex.ru
-zoomzoom.xyz
\ No newline at end of file
+yt.fasssst.ru
\ No newline at end of file