Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

🌐 Скрипт для генерации из списка доменов файла json со списком IP

 Скрипт делает всё автоматически: резолв, кластеризацию, агрегацию в CIDR и экспорт в нативном формате приложения.

Что умеет скрипт:

  • Многопоточный резолв: Параллельная обработка через 77.88.8.8 (Yandex) → 9.9.9.9 (Quad9) с фоллбэком
  • Умная агрегация IP: Автоматически группирует адреса одного домена в оптимальные CIDR-подсети (/31, /30, /24 и т.д.)
  • CDN-friendly: Если домен резолвится в географически разбросанные IP (Cloudflare, Akamai, собственные CDN), скрипт не «ломает» маршрутизацию, а делит их на близкие кластеры
  • Безопасные маски: Не создаёт сети шире /20, чтобы не направлять лишний трафик в туннель
  • Чистый вывод: Одиночные IP пишутся без /32, подсети остаются с маской
  • Глобальная дедупликация: Одинаковые подсети от разных доменов объединяются в одну запись → компактный файл
  • Строгий формат json для чего надо: {"hostname": "IP/CIDR", "ip": ""}

📦 Установка зависимостей (Debian 12/13, Ubuntu 24.04+)

В современных дистрибутивах Python защищён от установки пакетов через системный pip (PEP 668). От лени ставить через пакетный менеджер:

sudo apt update
sudo apt install python3-dnspython

Никаких --break-system-packages и виртуальных окружений не требуется.

🛠 Быстрый запуск:

python3 domain_to_ip.py domains.txt -j gotovi_rules.json

Дополнительные опции:

  • -o log.txt → сохранить лог резолва (успешные + ошибки)
  • -t 20 → изменить количество потоков (по умолчанию 50)

📤 Пример результата (gotovi_rules.json):

[
  { "hostname": "176.114.120.0/21", "ip": "" },
  { "hostname": "185.73.192.0/22", "ip": "" },
  { "hostname": "185.138.252.0/22", "ip": "" },
  { "hostname": "213.184.155.142", "ip": "" }
]

💡 Примечания для стабильной работы:

  • Скрипт автоматически пропускает домены, которые не ответили обоим DNS-серверам
  • Идеально масштабируется: список из 2000+ доменов обрабатывается за ~10–15 секунд
  • Формат полностью совместим с импортом правил в куда надо → Настройки → что надо → Импорт


       Скрипт прикреплен, domains.txt для примера, deduplicate.sh для объединения старого и нового списка адресов.

domain_to_ip.py domains.txt

deduplicate.sh

Изменено пользователем Skaaraje

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...