Как блокировать сотни тысяч фишинговых сайтов одной строчкой кода

22 июл 2026
1,623
423
53
2 недели

Destroylist

Большинство фишинговых сайтов живут считаные дни. Мошенники регистрируют домен со схожим написанием популярного сервиса, выкачивают приватные ключи или данные карт у пары десятков невнимательных пользователей и поднимают следующий адрес. Традиционные антивирусные базы нередко запаздывают на этап анализа, когда основной урон уже нанесен.

Недавно я наткнулся на открытый проект Destroylist от команды PhishDestroy. Это не просто еще один список нехороших адресов, а развернутая система сбора угроз, которая автоматически ищет скам, проверяет контент, репортит нарушения регистраторам и отдаёт готовые фиды во всех возможных форматах.

Что внутри и кому это пригодится

В базе проекта находится более 888 тысяч отслеживаемых доменов. Из них около 180 тысяч входят в основной проверенный список фишинговых ресурсов. Проект собирает данные из 13 источников и через собственные парсеры, постоянно фильтруя ложные срабатывания.

Workflow

Реклама

Фид пригодится в четырех понятных сценариях:

  • Настройка домашней сети или офисного DNS-сервера через Pi-hole, AdGuard Home или Unbound.
  • Валидация ссылок внутри веб-сервисов, мессенджер-ботов или криптокошельков перед тем, как перенаправить пользователя.
  • Обогащение данных в SOC или инструмент для OSINT-исследований.
  • Обучение собственных моделей фильтрации трафика.

Фиды на любой вкус и быстрый Redis

Одна из приятных особенностей репозитория заключается в том, что авторам не всё равно, как вы будете забирать данные. Вам не придется писать парсеры для очистки логов или преобразовывать JSON на лету. В каталоге проекта разложены готовые файлы под самые разные инструменты:

  • Hosts (для Pi-hole, /etc/hosts или Windows)
  • AdBlock (для uBlock Origin и AdGuard)
  • Dnsmasq
  • Unbound (для pfSense и OPNsense)
  • RPZ (для BIND и Knot DNS)
  • Redis

Если нужно залить актуальный фид в Redis для проверки за O(1), в репозитории есть готовый однострочник:

curl -s https://cdn.jsdelivr.net/gh/phishdestroy/destroylist@main/rootlist/formats/primary/redis.txt | redis-cli --pipe

После выполнения этой команды проверка адреса evil-domain.com превращается в мгновенную операцию:

SISMEMBER destroylist:primary evil-domain.com

Все списки отдаются как напрямую с GitHub, так и через CDN jsDelivr. Второй вариант предпочтительнее, так как при частых запросах к raw-файлам GitHub легко получить 429 ошибку.

Проверка HTTP-контента и проблема клоакинга

Многие создатели черных списков ограничиваются резолвом DNS. Если домен отвечает на ping или возвращает IP-адрес, его считают живым. Но злоумышленники часто используют клоакинг: если на сайт заходит поисковый бот или автоматический сканер безопасности, ему отдают пустую страницу или заглушку. Настоящий фишинг показывается только реальным пользователям с нужными HTTP-заголовками и геопозицией.

В Destroylist есть отдельный фид с HTTP-верификацией. Скрипты проекта не просто смотрят DNS-записи, а совершают реальные HTTP-запросы каждые 12 часов и анализируют содержимое страниц.

API

Если страница с фишингом действительно отдается прямо сейчас, домен попадает в content_active.json. Однако авторы честно предупреждают: если сайта нет в списке с проверкой контента, это еще не значит, что он безопасен. Из-за клоакинга логичнее использовать полный список.

Бесплатный Threat Intelligence API

Если вам не хочется хранить локальную базу или регулярно обновлять текстовые файлы, у проекта есть публичный REST API. Он абсолютно бесплатен, не требует регистрации и выдачи API-ключей.

Специфика API заключается в расчете индекса риска от 0 до 100 баллов. Оценка формируется из совокупности признаков:

  • Нахождение в основном списке проекта (+40 баллов)
  • Подтвержденная активность по DNS (+30 баллов)
  • Жалобы сообщества (+20 баллов)
  • Подозрительные ключевые слова вроде airdrop, wallet, metamask (+5 баллов за каждое)
  • Рискованные доменные зоны вроде .xyz, .top, .club (+5 баллов)

Проверить домен через cURL можно в одну команду:

curl "https://api.destroy.tools/v1/check?domain=suspicious-site.xyz"

В ответ приходит прозрачный JSON с уровнем угрозы (severity) и набранными баллами:

{
  "domain": "suspicious-site.xyz",
  "threat": true,
  "risk_score": 85,
  "severity": "critical"
}

Для пачечных проверок предусмотрен POST-эндпоинт /v1/check/bulk, принимющий до 500 доменов за один запрос. Это удобно, если вы фильтруете пользовательский ввод или обрабатываете входящие логи пакетами.

Пример на Python для регулярной проверки:

import requests

def check_domain(domain: str) -> bool:
    response = requests.get(f"https://api.destroy.tools/v1/check?domain={domain}")
    if response.status_code == 200:
        data = response.json()
        return data.get("threat", False)
    return False

if check_domain("suspicious-site.xyz"):
    print("Внимание! Домен находится в черном списке.")

Борьба с регистраторами и автоматизация

Destroylist интересен не только как база данных, но и как прецедент автоматизированной борьбы с абузами. Авторы проекта разработали конвейер, который после обнаружения угрозы генерирует доказательную базу (скриншоты, дампы трафика, дампы WHOIS) и отправляет официальные жалобы хостинг-провайдерам, регистраторам и в 50 с лишним защитных сервисов, включая Google Safe Browsing, VirusTotal, Cloudflare и Microsoft Security.

Abuse Process

В репозитории прозрачно ведут историю по всем отправленным абузам. Проект публикует отчеты о регистраторах, которые игнорируют требования ICANN и месяцами не реагируют на десятки абузов.

Если легитимный домен случайно попал под раздачу, для этого предусмотрена форма апелляции на сайте и публичные GitHub Issues. Авторы оперативно обрабатывают заявки и добавляют исправленные адреса в файл allowlist.json.

Appeals

Что в итоге

Destroylist — это зрелый инструмент с открытым исходным кодом (лицензия MIT) и высокой частотой обновлений. За счет гибкой структуры экспорта его легко интегрировать как в домашний Pi-hole, так и в продакшен-сервис, которому нужно на лету отсекать скам.

Загляните в репозиторий, заберите нужный формат фида или просто сохраните себе адрес бесплатного API. Проект живой, развивается активным сообществом и реально помогает делать сеть чище.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.