npm Package Name Typosquat Checker
Проверьте, не похоже ли имя npm-пакета опасно на популярную библиотеку — по алгоритму расстояния Левенштейна, прямо в браузере.
Можно проверить несколько сразу, по одному на строку.
Как это работает
Тайпсквоттинг — один из самых старых и всё ещё рабочих способов протащить вредоносный код в чужой проект: злоумышленник публикует пакет с именем, отличающимся от популярного на один символ (axois вместо axios, react-dom с лишней буквой, lodahs вместо lodash), и рассчитывает, что кто-то опечатается при установке или скопирует имя с фишингового сайта. В 2026 году это дополнилось более прицельными кампаниями — например, фальшивый @bitwarden/cli, который выдавал себя за официальный CLI пароль-менеджера, а не просто ловил опечатки.
Инструмент сравнивает введённое имя пакета со встроенным списком популярных библиотек по расстоянию Левенштейна (сколько правок — вставок, удалений, замен символа — отделяет одно имя от другого) и дополнительно проверяет типичные приёмы: замену дефиса на подчёркивание, лишний или переставленный символ, добавленный суффикс вроде «-js». Если расстояние небольшое (1-2 правки) и имя не совпадает точно — инструмент помечает его как подозрительное.
Важная оговорка: список известных пакетов встроен в код и не претендует на полноту — это быстрая эвристическая проверка, а не полноценная база данных всех пакетов npm. Отсутствие предупреждения не означает, что пакет безопасен, а появление предупреждения не означает автоматически, что пакет вредоносный (у популярных проектов бывают легитимные похожие имена, например официальные форки или scoped-версии). Перед установкой незнакомого пакета всегда стоит вручную свериться с его страницей на npmjs.com — числом загрузок, датой создания аккаунта автора, историей версий.
Частые вопросы
Что такое расстояние Левенштейна простыми словами?
Минимальное количество односимвольных правок (добавить, удалить или заменить символ), чтобы превратить одну строку в другую. Например, от "axios" до "axois" — одна правка (переставлены местами два символа), поэтому расстояние равно 2 по классической формуле (или 1, если считать транспозицию отдельной операцией — инструмент использует классический алгоритм с тремя операциями).
Почему список известных пакетов такой короткий?
Полный реестр npm — больше 3 миллионов пакетов, сверять с ним всё в браузере без обращения к серверу нецелесообразно. Список сознательно ограничен самыми популярными и теми, что реально были целью атак в 2026 году — это покрывает основной риск для типичного проекта, но не заменяет проверку менее известных, но всё же важных для вашего конкретного стека зависимостей.
Инструмент проверяет реальный npm registry?
Нет — вся проверка происходит локально в браузере по встроенному списку, без сетевых запросов. Это соответствует общему принципу sтdout: ничего не уходит на сервер. Для проверки против актуального состояния registry (дата публикации, число загрузок, репутация автора) используйте npmjs.com напрямую.
Что делать, если инструмент пометил пакет как подозрительный, а он мне точно нужен?
Предупреждение — повод для ручной проверки, а не блокировка. Откройте страницу пакета на npmjs.com, посмотрите число еженедельных загрузок (у тайпсквот-пакетов оно обычно на порядки меньше оригинала), дату публикации первой версии и профиль автора — если пакет легитимный, это станет видно сразу.