Создавайте варианты тайпсквоттинга домена в стиле dnstwist и проверяйте, какие из них разрешаются в DNS.
Проверка гомоглифов
Сам инструмент доступен на английском языке; на этой странице приведено его описание на вашем языке.
Используйте Проверка гомоглифов
Для чего это нужно
Вставьте домен, URL или текст, чтобы увидеть каждую метку в Unicode и punycode, письменность и прототип UTS #39 каждого символа, а также узнать, смешивает ли имя письменности и не читается ли оно как другое ASCII-имя.
Приложение работает полностью в браузере: никакие введенные вами данные не передаются на сервер.
Как использовать Проверка гомоглифов
- Вставьте имя. Вставьте домен, URL, адрес электронной почты, несколько строк или целое сообщение. Обезвреженные формы вроде hxxps:// и [.] принимаются, а метки xn-- декодируются.
- Добавьте настоящий домен (необязательно). Введите ожидаемый домен в поле Compare with the real domain (сравнить с настоящим доменом), например настоящий домен вашего банка.
- Запустите проверку. Проверка выполняется по мере ввода, или нажмите Enter либо Check. Shift+Enter добавляет новую строку.
- Прочитайте вердикт. Цветной блок показывает Lookalike risk, Check this, Looks clean или Notes, по строке на каждую находку. Для сообщения с несколькими хостами выводится таблица с отдельным результатом для каждого хоста.
- Найдите странные буквы. Подозрительные символы выделены в подсвеченном домене. Таблица Characters перечисляет каждый из них с кодовой точкой, письменностью и ASCII-буквой, которую он имитирует.
- Скопируйте или передайте дальше. Скопируйте форму Unicode или punycode или используйте Send to…, чтобы проверить домен в DNS over HTTPS Lookup или Abuse Contact Lookup.
Пример
Кириллический двойник в punycode
xn--80ak6aa92e.exampleLookalike risk: Label "аррӏе" is written in Cyrillic but reads as the ASCII name "apple" (whole-script confusable).
Highlighted domain
аррӏе.example
Unicode form
аррӏе[.]example
Punycode (ACE) form
xn--80ak6aa92e[.]example
RESTRICTION LEVEL
Single Script
SCRIPTS
Cyrillic, Latin
READS AS
apple[.]example
Labels
UNICODE ACE SCRIPTS MIXED RESTRICTION LEVEL SKELETON
аррӏе xn--80ak6aa92e Cyrillic no Single Script apple
example example Latin no ASCII-Only ASCII only
Characters
CHAR CODE POINT SCRIPT UTS #39 PROTOTYPE ID STATUS FLAG
а U+0430 Cyrillic a (U+0061) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
ӏ U+04CF Cyrillic l (U+006C) Allowed looks like ASCII
е U+0435 Cyrillic e (U+0065) Allowed looks like ASCII
e U+0065 Latin itself Allowed ASCII
x U+0078 Latin itself Allowed ASCII
a U+0061 Latin itself Allowed ASCII
m U+006D Latin rn (U+0072 U+006E) Allowed ASCII
p U+0070 Latin itself Allowed ASCII
l U+006C Latin itself Allowed ASCII
e U+0065 Latin itself Allowed ASCII
Comparison with apple[.]example
Confusable: аррӏе[.]example and apple[.]example have the same UTS #39 skeleton, so they can look identical.
SKELETON OF THE INPUT
apple[.]exarnple
SKELETON OF APPLE[.]EXAMPLE
apple[.]exarnpleДекодируется в аррӏе.example: все пять букв кириллические и читаются как apple, поэтому метка отмечается как whole-script confusable (двойник целиком из другой письменности), а каждый символ выделяется. Load example также подставляет apple.example в поле сравнения — у него тот же skeleton.
Что проверяется
| Сигнал | Что это означает |
|---|---|
| Смешанные письменности в одной метке | Латиница вперемешку с кириллицей или греческим внутри одной метки отмечается красным. Сочетания, которые допускает UTS #39, например латиница с японским, только упоминаются в примечаниях, если ни один символ не похож на ASCII. |
| Двойник целиком из другой письменности | Все буквы из другого алфавита, но метка читается как ASCII-слово, например кириллическое аррӏе вместо apple. Это отмечается красным. |
| Отличие только в диакритике | Метка вроде wället читается как wallet, если не заметить диакритический знак. Это жёлтая находка Check this. |
| Прототип UTS #39 | Таблица Characters показывает, какую ASCII-букву или цифру имитирует каждый символ, с пометкой looks like ASCII, non-ASCII или ASCII. |
| Уровень ограничений | От ASCII-Only до Unrestricted, по UTS #39. Minimally Restrictive и Unrestricted показываются красным, потому что допускают самые рискованные сочетания. |
| Невидимые символы и преобразование браузером | Если браузер перепишет хост, например отбросит символ нулевой ширины или превратит полноширинные буквы в обычные, вы увидите жёлтое предупреждение и поле What the browser opens (что откроет браузер). Если браузер не может преобразовать хост, невидимые символы в нём отмечаются красным. |
| Необычные точки | Идеографические и полноширинные точки (U+3002, U+FF0E, U+FF61) работают в браузерах как обычные точки, но могут проскочить мимо фильтров, сравнивающих простой текст. |
| Сломанный punycode | Метка xn--, которая не декодируется корректно, отмечается красным. |
| ASCII-трюки | Обычные ASCII-имена с 0 вместо o, 1 вместо l, rn вместо m или vv вместо w получают примечание. Для подтверждения используйте поле сравнения. |
| Результат сравнения | Same domain, Confusable (same skeleton), Confusable once case is ignored, Differs only by accents, 1 or 2 edits away (likely typo-squat) или Not confusable. |
Еще примеры
Кириллическая «а» в латинском имени в сравнении с wallet.example
wаllet.exampleLookalike risk: метка «wаllet» смешивает письменности (латиница и кириллица, уровень ограничений: Minimally Restrictive); 1 символ похож на ASCII, и метка читается как «wallet». Форма punycode — xn--wllet-4ve[.]example. Сравнение: Confusable, у обоих имён skeleton wallet[.]exarnple.
Цифра 1 вместо l в сравнении с wallet.example
wa1let.exampleLooks clean: хост только из ASCII, без гомоглифов и смешанных письменностей. Примечание сообщает, что метка содержит «1» (может читаться как l). Сравнение: Confusable, потому что у обоих имён skeleton wallet[.]exarnple.
Буква с диакритикой в сравнении с wallet.example
wället.exampleCheck this: метка «wället» читается как «wallet», если не заметить диакритику. Форма punycode — xn--wllet-gra[.]example, уровень ограничений Single Script. Сравнение: Differs only by accents.
Часто задаваемые вопросы
Что проверяет инструмент?
Каждая метка декодируется из punycode декодером по RFC 3492, для каждого символа определяются письменность Unicode и прототип UTS #39 из confusables.txt (Unicode 18.0), а для метки выполняется проверка на смешение письменностей и определяется уровень ограничений UTS #39. Метки, все буквы которых читаются как ASCII, отмечаются как whole-script confusables.
Может ли он пропустить двойника или отметить настоящий домен?
Да. UTS #39 охватывает внешне похожие символы, а не опечатки, поэтому переставленная или пропущенная буква видна только по расстоянию редактирования в поле сравнения, а ASCII-трюки вроде rn вместо m выводятся как примечания. Законные нелатинские имена, например некоторые кириллические домены в .рф, могут читаться как латинские слова и быть отмечены.
Отправляется ли что-нибудь по сети?
Нет. Декодирование, определение письменности и таблица confusables работают на этой странице; форма punycode берётся из встроенного URL-парсера вашего браузера, а DNS-запросы не выполняются.
Что означают уровни ограничений?
Они взяты из Unicode UTS #39. ASCII-Only — только обычный ASCII. Single Script — одна система письма. Highly Restrictive допускает латиницу с китайским, японским или корейским. Moderately Restrictive допускает латиницу с одной другой распространённой письменностью, кроме кириллицы и греческого. Minimally Restrictive допускает другие сочетания, а Unrestricted означает, что символ выходит за пределы профиля идентификаторов.
Почему инструмент сообщает, что браузер откроет другое имя?
Браузеры нормализуют имена хостов по правилам преобразования UTS #46. Среди прочего они превращают полноширинные буквы в обычные и отбрасывают невидимые символы, например пробел нулевой ширины и мягкий перенос. Ссылка тогда открывает преобразованное имя, а исходный текст всё ещё может проскочить мимо фильтров, сравнивающих строки как есть.
Сколько хостов можно проверить за раз?
Вставьте список или сообщение, и инструмент выберет до 50 имён хостов, пропуская IP-адреса. Анализируется до 20 000 символов текста, а слова с не-ASCII символами вне имён хостов тоже проверяются.