
OSINT-инструмент, который обнаруживает доменный сквоттинг, тайпсквоттинг и фишинговые подделки путём мониторинга недавно зарегистрированных доменов на соответствие ключевым словам брендов с проверкой DNS и VT.
openSquat — это инструмент безопасности OSINT (Open Source Intelligence) с открытым исходным кодом, который выявляет угрозы киберсквоттинга, нацеленные на ваш бренд или домены:
«Мощный швейцарский нож для защиты бренда» — WhoisXML API Blog, август 2022
«Инструмент с невероятной силой для борьбы с тайпсквоттингом и всеми связанными видами кибер-злонамеренности.» — WhoisXML API Blog, август 2022
«Удобный инструмент для сбора информации о недавно зарегистрированных доменах.» — занял 5-е место среди инструментов обнаружения фишинга — SOCRadar Blog, июль 2022
«openSquat обеспечивает важную защиту от сквоттинга доменов и фишинговых атак благодаря автоматическому мониторингу и обнаружению.» — Prince Yadav, TutorialsPoint, март 2026
«OpenSquat выявил 103 сквоттинговых домена, 960 активных фишинговых сайтов и 53 домена с подозрительными сертификатами.» — Sharma и др., Journal of Information Security and Cybercrimes Research (JISCR), Vol. 7, Issue 1, июнь 2024
openSquat использует модель open-core:
Эта модель обеспечивает прозрачность и сотрудничество с сообществом, одновременно поддерживая масштаб, надёжность и эксплуатационные требования корпоративного использования.
pip install opensquat
opensquat -k keywords.txt
git clone https://github.com/atenreiro/opensquat
cd opensquat
pip install -r requirements.txt
python3 opensquat.py -k keywords.txt
Для пользователей репозитория: во всех примерах ниже замените
opensquatнаpython3 opensquat.py, чтобы запускать из клонированной копии.
confusable_homoglyphs, homoglyphs, colorama, requests, dnspython, beautifulsoup4# Запуск по умолчанию
opensquat
# Показать все опции
opensquat -h
# Использовать собственный файл ключевых слов
opensquat -k my_keywords.txt
# DNS-валидация через Quad9
opensquat --dns
# Проверка журналов Certificate Transparency
opensquat --ct
# Сканирование открытых портов (80/443)
opensquat --portcheck
# Перекрёстная проверка с базами фишинговых сайтов
opensquat --phishing results.txt
# Сохранить как JSON
opensquat -o results.json -t json
# Сохранить как CSV
opensquat -o results.csv -t csv
Примечание: На стороне API (
--api) пять уровней доверия сопоставляются с четырьмя значениями нечёткости (exact,low,auto,high) —-c 3и-c 4сопоставляются сhigh. Полное сопоставление и способ переопределения с помощью--api-fuzzinessсм. в разделе Премиум и API режимы.
openSquat поддерживает три режима. Режим по умолчанию (Community) не изменился — существующим пользователям не нужны никакие флаги. Два премиум-режима используют один ключ API openSquat; выберите Premium Feed, если вы хотите использовать тот же локальный конвейер обнаружения с более крупным фидом, или Premium API, если вы хотите обнаружение на стороне сервера без загрузки локального фида.
Зарегистрируйтесь на opensquat.com, чтобы получить ключ. Один и тот же ключ работает как для Premium Feed (--premium), так и для Premium API (--api).
--api-key YOUR_KEY в командной строкеOPENSQUAT_API_KEYapi_key.txt в текущем каталоге (один ключ на файл, допускаются комментарии #)Флаг CLI виден в выводе
ps. В общих средах предпочтительнее использовать переменную окружения или файл ключа.
# Режим Premium Feed — тот же локальный конвейер, больший фид
export OPENSQUAT_API_KEY=os_xxxxxxxxxxxx
opensquat -k keywords.txt --premium
# Режим Premium API — обнаружение на стороне сервера для каждого ключевого слова
opensquat -k keywords.txt --api
# Premium API + проверка репутации DNS для каждого возвращённого домена
opensquat -k keywords.txt --api --dns
# Premium API с выводом JSON, сгруппированным по ключевым словам
opensquat -k keywords.txt --api -t json -o results.json
# Настройка поиска Premium API
opensquat -k keywords.txt --api --api-fuzziness high --api-history-days 7 --api-max-results 200
Когда --premium или --api успешно загружает ключ, CLI выводит замаскированную строку подтверждения, чтобы вы могли проверить, какой ключ был выбран, не раскрывая его:
[*] API key loaded: os_gL...L5Mb
В режиме Premium API сводка выполнения показывает активный режим, количество выполненных вызовов API и ваш оставшийся баланс с дельтой использования (например, 4972 (used 4 of 4976 this run)). Строки прогресса по каждому ключевому слову появляются в том же порядке, что и в вашем файле ключевых слов, даже если вызовы выполняются параллельно. Исчерпание квоты (HTTP 429) корректно возвращает частичные результаты; ошибки аутентификации (401) и ошибки плана (403) прерывают выполнение с понятным сообщением.
Если бэкенд ограничивает скорость вашего запроса (HTTP 429 с заголовком Retry-After), инструмент отличает это от исчерпания квоты: вы увидите жёлтое предупреждение [!] Rate limit hit (retry in Ns) вместо красного сообщения quota exhausted, частичные результаты всё равно возвращаются, а в сводке сохраняется ваш реальный баланс API, так что вы можете точно увидеть, сколько кредитов вы фактически использовали. Чтобы избежать срабатывания ограничений скорости при больших сканированиях, используйте --api-rate-limit N, чтобы ограничить количество исходящих запросов в секунду для всех рабочих процессов. Значение 8 является безопасной отправной точкой для большинства бэкендов.
# Ограничить до 8 запросов/сек для всех рабочих процессов
opensquat -k keywords.txt --api --api-rate-limit 8
JSON является рекомендуемым форматом вывода для режима Premium API, поскольку API возвращает метаданные по каждому домену, которые другие форматы не могут так же чисто передать: зарегистрированный TLD, дату первого появления в NRD, флаг IDN-гомографа и юникодное представление гомографа, когда домен является таковым.
opensquat -k keywords.txt --api -t json -o results.json
Пример расширенного вывода в режиме Premium API (сокращён):
[
{
"keyword": "microsoft",
"domains": [
{"domain": "securite-microsoft.fr", "tld": "fr", "date": "09-04-2026", "idn": false},
{"domain": "xn--mirosoft-hw7c.com", "tld": "com", "date": "09-04-2026", "idn": true, "unicode": "miᴄrosoft.com"}
]
}
]
Флаг idn плюс строковое представление unicode позволяют сразу увидеть, что xn--mirosoft-hw7c.com на самом деле содержит ᴄ (латинская буква малая заглавная C), выдающую себя за c в "microsoft" — информацию, которую обычная punycode-строка полностью скрывает.
Вывод в формате CSV также поддерживается и создаёт одну строку на домен с теми же столбцами метаданных, что подходит аналитикам, работающим в Excel или pandas:
opensquat -k keywords.txt --api -t csv -o results.csv
CSV записывается с BOM UTF-8, чтобы Excel в Windows корректно отображал столбец с юникодными гомографами.
Режимы Community и Premium Feed генерируют одинаковую структуру JSON верхнего уровня для согласованности между режимами, но с заполнением только поля domain для каждой записи — NRD-фид не несёт метаданных по каждому домену, которые есть только в хостинговом API:
[
{
"keyword": "microsoft",
"domains": [
{"domain": "mirosoft.com"},
{"domain": "mcrosoft.net"}
]
}
]
Если вы передаёте --api-key без выбора --premium или --api, CLI выводит однострочную подсказку, что ключ будет проигнорирован в режиме Community (без автоматического переключения режима).
В режиме Premium API -c/--confidence автоматически сопоставляется с нечёткостью API (0→exact, 1→low, 2→auto, 3→high, 4→high). Используйте --api-fuzziness, чтобы переопределить это.
Premium API (--api) несовместим с --doppelganger и -d/--domains.
keywords.txt)# Строки, начинающиеся с #, являются комментариями
mycompany
mybrand
myproduct
vt_key.txt)Для использования --vt или --subdomains добавьте свой ключ API:
# Получите бесплатный ключ API на https://www.virustotal.com
your_api_key_here
api_key.txt)Требуется для --premium и --api. Создайте файл api_key.txt в рабочем каталоге:
# Получите ключ на https://opensquat.com
# Строки, начинающиеся с #, игнорируются; используется первая некомментарная строка.
os_your_key_here
CLI разрешает ключ в следующем порядке: флаг --api-key → переменная окружения $OPENSQUAT_API_KEY → файл api_key.txt. В общих средах предпочтительнее использовать переменную окружения или файл, а не флаг CLI, поскольку аргументы командной строки видны через ps.
Запуск ежедневно через crontab:
# Установка через pip (рекомендуется) — каждый день в 8:00, фиды обновляются около 7:30 UTC
0 8 * * * cd /path/to/workdir && opensquat -k keywords.txt -o results.json -t json
# Проверка репозитория — вызывайте opensquat.py напрямую через python3
0 8 * * * cd /path/to/opensquat && python3 opensquat.py -k keywords.txt -o results.json -t json
Команда
cdв рабочий каталог важна, если вы полагаетесь наapi_key.txt(разрешается из текущего каталога) или хотите, чтобыresults.jsonзаписывался в определённое место.
Мы приветствуем вклад! Подробности в нашем Руководстве по участию.
Andre Tenreiro — LinkedIn · PGP Key
Этот проект лицензирован под GNU GPL v3.
| Тип угрозы | Описание |
|---|
| 🎣 Фишинг | Мошеннические домены, имитирующие ваш бренд |
| 🔤 Тайпсквоттинг | Домены с распространёнными опечатками (например, gooogle.com) |
| 🌐 IDN-гомограф | Похожие символы из других алфавитов |
| 👥 Доппельгангер | Домены, содержащие название вашего бренда |
| 🔀 Битсквоттинг | Одноразрядные ошибки в доменных именах |
| Уровень | Флаг | Описание |
|---|
| 0 | -c 0 | Очень высокий (меньше результатов, высокая точность) |
| 1 | -c 1 | Высокий (по умолчанию) |
| 2 | -c 2 | Средний |
| 3 | -c 3 | Низкий |
| 4 | -c 4 | Очень низкий (больше результатов, больше ложных срабатываний) |
| Режим | Флаг | Что делает |
|---|
| Community (по умолчанию) | (нет) | Загружает бесплатный NRD-фид (~100 тыс. доменов/день) и запускает локальное обнаружение по Левенштейну. |
| Premium Feed | --premium | Загружает платный NRD-фид (nrd-lite, значительно больше) с использованием вашего ключа API openSquat, затем запускает то же локальное обнаружение по Левенштейну. |
| Premium API | --api | Пропускает загрузку локального фида. Запрашивает REST API поиска похожих openSquat для каждого ключевого слова и возвращает совпадения со стороны сервера. |
| Аргумент | По умолчанию | Описание |
|---|
-k, --keywords | keywords.txt | Файл с ключевыми словами для поиска |
-o, --output | results.txt | Имя выходного файла |
-t, --type | txt | Формат вывода: txt, json, csv |
-c, --confidence | 1 | Уровень доверия (0-4). В режиме --api автоматически сопоставляется с нечёткостью (-c 3 и -c 4 → high). |
-d, --domains | — | Использовать локальный файл доменов вместо загрузки |
-u, --url | фид opensquat | URL для загрузки фида доменов |
--dns | — | Включить DNS-валидацию Quad9 |
--doppelganger | — | Режим только доппельгангеров (ключевое слово в домене + проверка доступности) |
--ct | — | Поиск в журналах Certificate Transparency |
--phishing | — | Перекрёстная проверка с базой фишинговых сайтов |
--subdomains | — | Получить поддомены через VirusTotal |
--portcheck | — | Проверить открытые порты 80/443 |
--vt | — | Проверить через VirusTotal |
--premium | — | Режим Premium Feed — использовать платный NRD-фид (требуется ключ API openSquat) |
--api | — | Режим Premium API — запрашивать REST API поиска похожих openSquat для каждого ключевого слова (без локального фида) |
--api-key | — | Ключ API openSquat (или установите $OPENSQUAT_API_KEY, или используйте api_key.txt) |
--api-fuzziness | (из -c) | Режим Premium API: exact, low, high или auto |
--api-history-days | — | Режим Premium API: окно истории NRD в днях (обрезается по лимиту плана) |
--api-max-results | — | Режим Premium API: макс. результатов на ключевое слово (обрезается по лимиту плана) |
--api-rate-limit | (без ограничений) | Режим Premium API: макс. исходящих запросов в секунду для всех рабочих процессов |