Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
urless — Фильтруйте и дедуплицируйте большие списки URL, удаляя статические расширения, нежелательные ключевые слова, идентификаторы, языковые варианты и параметры, формируя чистые наборы конечных точек для веб-разведки. | Kitploit
Инструменты/GitHubGitHub/xnl-h4ck3r/urless
РазведкаСбор информацииВеб-безопасностьТестирование на ПроникновениеУтилиты и фреймворки
GitHubxnl-h4ck3r/urless

urless

Фильтруйте и дедуплицируйте большие списки URL, удаляя статические расширения, нежелательные ключевые слова, идентификаторы, языковые варианты и параметры, формируя чистые наборы конечных точек для веб-разведки.

Репозиторий
391415 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

О программе - v2.7

Это инструмент для очистки списка URL. В качестве отправной точки я взял замечательный инструмент uro от Somdev Sangwan. Но я хотел изменить некоторые вещи, внести улучшения (например, работу с GUID) и сделать его более настраиваемым.

Установка

urless поддерживает Python 3.

Установите urless в стандартное (глобальное) окружение Python.

root@kitploit:~
pip install urless

ИЛИ

root@kitploit:~
pip install git+https://github.com/xnl-h4ck3r/urless.git -v

Вы можете обновить с помощью

root@kitploit:~
pip install --upgrade urless

pipx

Быстрая установка в изолированном Python-окружении с помощью pipx

root@kitploit:~
pipx install git+https://github.com/xnl-h4ck3r/urless.git

Использование

Что именно он делает?

Вы просто передаёте список URL (из файла или через конвейер из STDIN) и получаете очищенный файл или URL на выходе. Но каким образом они очищаются? Объясню это ниже, но сначала несколько терминов, которые будут использоваться:

  • FILTER-EXTENSIONS: Это список расширений, которые могут быть переданы с помощью -fe, указаны в FILTER_EXTENSIONS в config.yml, или, если ни того, ни другого нет, используется список по умолчанию: .css,.ico,.jpg,.jpeg,.png,.bmp,.svg,.img,.gif,.mp4,.flv,.ogv,.webm,.webp,.mov,.mp3,.m4a,.m4p,.scss,.tif,.tiff,.ttf,.otf,.woff,.woff2,.bmp,.ico,.eot,.htc,.rtf,.swf,.image.
  • FILTER-KEYWORDS: Это список ключевых слов, которые могут быть переданы с помощью -fk, указаны в FILTER_KEYWORDS в config.yml, или, если ни того, ни другого нет, используется список по умолчанию: blog,article,news,bootstrap,jquery,captcha,node_modules
  • LANGUAGE: Это список языковых кодов, которые могут быть указаны в LANGUAGE в config.yml, или, если его нет, используется список по умолчанию из наиболее распространённых кодов en,en-us,en-gb,fr,de,pl,nl,fi,sv,it,es,pt,ru,pt-br,es-mx,zh-tw,js.ko

Вот что происходит:

  • Если в URL явно указан порт 80 или 443, он удаляется из URL (например, http://example.com:80/test -> http://example.com/test)
  • Если URL содержит любые FILTER-EXTENSIONS, он будет удалён из вывода.
  • Если URL НЕ содержит параметров ИЛИ был передан аргумент -dp/--disregard-params:
    • Если URL содержит FILTER-KEYWORDS или UNWANTED-CONTENT, он будет удалён.
    • Если строка запроса URL содержит нежелательные параметры, указанные в конфигурации REMOVE_PARAMS (или переопределённые аргументом -rp/--remove-params), они будут удалены из всех URL перед обработкой.
    • Если передан -rcid/--regex-custom-id и путь URL содержит пользовательский ID, будет включено только одно совпадение с regex пользовательского ID, если есть несколько URL, где это единственное различие.
    • Если путь URL содержит GUID, будет включён только один из GUID, если есть несколько URL, где GUID является единственным различием.
    • Если путь URL содержит целочисленный ID, будет включён только один из целочисленных ID, если есть несколько URL, где целочисленный ID является единственным различием.
    • Если передан аргумент -lang и URL содержит языковой код (например, en-gb), будет включён только один из языковых кодов, если есть несколько URL, где языковой код различается.

Примеры

Базовое использование

root@kitploit:~
cat target_urls.txt | urless

или

root@kitploit:~
urless -i target_urls.txt

Сохранение вывода

root@kitploit:~
cat target_urls.txt | urless > output.txt

или

root@kitploit:~
urless -i target_urls.txt -o output.txt

config.yml

Файл config.yml содержит ключи, которые можно изменить в соответствии с вашими потребностями:

  • FILTER_KEYWORDS — список ключевых слов через запятую (например, blog,article,news и т.д.), с которыми сверяются URL в определённых случаях.
  • FILTER_EXTENSIONS — список расширений файлов через запятую (например, .css,.jpg,.jpeg и т.д.), с которыми сверяются все URL. Если URL содержит любую из этих строк, он будет исключён из вывода.
  • LANGUAGE — список языковых кодов через запятую (например, en-gb,fr,nl и т.д.), с которыми сверяются все URL при передаче аргумента -lang. Если есть несколько URL с разными языковыми кодами, будет выведена только одна версия URL.
  • REMOVE_PARAMS — список чувствительных к регистру имён параметров через запятую (например, cachebuster,cacheBuster), которые будут удалены из всех URL перед обработкой.

Пользовательский regex

В настоящее время существуют автоматические проверки regex для части пути, являющейся глобально уникальным идентификатором (GUID) и целочисленным ID, но аргумент -rcid / --regex-custom-id позволяет указать регулярное выражение для определения пользовательского ID. Например, если у цели есть определённый формат ID (не GUID и не целое число), вы можете задать для него регулярное выражение, и тогда в выводе будет возвращён только один из них, если остальная часть URL совпадает. Например:

  • Предположим, у цели есть пользовательский ID в формате типа U-65241X
  • И есть несколько URL, например:
    root@kitploit:~
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-63352B/settings
    https://target.com/blah/U-61351A/profile
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-64135C/profile
    
  • Вы можете вызвать urless и передать -rcid 'U-[0-9]{5}[A-Z]', тогда вывод будет:
    root@kitploit:~
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-64135C/profile
    

ВАЖНЫЕ ПРИМЕЧАНИЯ ПО REGEX:

  • Написать правильные regex-выражения может быть сложно, и если оно неверно, вы можете получить непредсказуемый и некорректный результат.
  • Всегда заключайте regex-выражение в одинарные кавычки при передаче в аргумент -rcid.
  • Вам не нужно добавлять собственный regex для GUID или целочисленного ID — они уже обрабатываются.
  • Regex-выражение должно выделять всю часть пути. Поэтому, если ваше regex определяет только начало пути, добавьте [^(\?|\/|#|$)]* в конец вашего regex, что будет означать ВСЕ остальные символы до конца части пути.
  • Вы можете добавить ^ в начало и $ в конец вашего regex, чтобы гарантировать, что оно представляет всю часть пути между слэшами. Однако они будут добавлены автоматически, если вы их пропустите.
  • Убедитесь, что regex выделяет только те разделы, которые вас интересуют, иначе вы можете получить неожиданные результаты. Чтобы проверить ваше regex, вы можете взять входной файл и выполнить, например, cat input.txt | grep -E 'U-[0-9]{5}[A-Z]', и посмотреть, выглядит ли ваше выражение корректным (оно должно выделять только то, что вас интересует, и выделять всю часть пути, которая является пользовательским ID).
  • Вы также можете проверить с помощью Regex101, вставив примеры URL в раздел TEST STRING, чтобы убедиться в корректности. Убедитесь, что выбраны REGEX FLAGS global и multiline.
  • Могут быть случаи, когда вы просто не можете предоставить regex, который правильно определит пользовательский ID, не считая другие значения такими же. Например, если есть URL вида https://target.com/blah/xnl/settings, где xnl — это имя пользователя, вы не сможете создать regex для имени пользователя, потому что это недостаточно уникальный формат, чтобы отличить его от других возможных значений пути.

Проблемы

Если вы столкнулись с какими-либо проблемами или у вас есть идеи по улучшению, пожалуйста, не стесняйтесь создавать issue на Github. Если есть проблема, будет полезно указать точную команду, которую вы запускали, и подробное описание проблемы. Если возможно, запустите с -v, чтобы воспроизвести проблему, и сообщите мне о любых сообщениях об ошибках.

TODO

Нет — не стесняйтесь создавать issue на Github, чтобы предложить улучшения.

И наконец...

Удачи и успешной охоты! Если вам действительно нравится этот инструмент (или любые другие), или они помогли вам найти отличный баунти, подумайте о том, чтобы КУПИТЬ МНЕ КОФЕ! ☕ (Мне не помешает кофеин!)

🤘 /XNL-h4ck3r

Купить мне кофе на ko-fi.com

Скачать инструмент
АргументДлинный аргументОписание
-i--inputФайл с URL-адресами для очистки.
-o--outputВыходной файл, который будет содержать очищенный список URL (по умолчанию: output.txt). Если вывод передаётся в другую программу, результат будет записан в STDOUT.
-fk--filter-keywordsСписок ключевых слов через запятую для исключения ссылок (если параметров нет). Это переопределит список FILTER_KEYWORDS, указанный в config.yml
-fe--filter-extensionsСписок расширений файлов через запятую для исключения. Это переопределит список FILTER_EXTENSIONS, указанный в config.yml
-rp--remove-paramsСписок чувствительных к регистру параметров через запятую для удаления из ВСЕХ URL. Это переопределит список REMOVE_PARAMS, указанный в config.yml. Это может быть полезно, например, для удаления параметров cache buster.**
-ks--keep-slashЗавершающий слэш в конце URL во входных данных не будет удалён. Поэтому в результате могут быть одинаковые URL: один с завершающим слэшем и один без него.
-khw--keep-human-writtenПо умолчанию любой URL, содержащий в части пути более 3 дефисов (-), удаляется, поскольку считается, что это контент, написанный человеком (например, пост в блоге), и он не интересен. Передача этого аргумента сохранит их в выводе.
-kym--keep-yyyymmПо умолчанию любой URL с путём, содержащим /YYYY/MM (где YYYY — год, а MM — месяц), удаляется, поскольку предполагается, что это блог/новостной контент, и он не интересен. Передача этого аргумента сохранит их в выводе.
-rcid--regex-custom-idИСПОЛЬЗУЙТЕ С ОСТОРОЖНОСТЬЮ! Regex для пользовательского идентификатора, который использует ваша цель. Убедитесь, что значение передано в кавычках. Подробнее об этом см. в разделе ниже.
-iq--ignore-querystringУдаляет строку запроса (включая фрагменты URL #), поэтому на выходе остаются только уникальные пути.
-fnp--fragment-not-paramНе обрабатывать фрагменты URL # так же, как параметры, например, если ссылка содержит ключевое слово фильтра и фрагмент (или параметр), ссылка обычно сохраняется, но если этот аргумент передан и ссылка содержит слово фильтра и фрагмент, ссылка будет удалена. Кроме того, если этот аргумент передан и используется -iq / --ignore-querystring, фрагмент НЕ будет удалён из ссылок, если в ссылке нет строки запроса.
-lang--languageЕсли передан и существуют несколько URL с разными языковыми кодами в составе пути, будет выведена только одна версия URL. Коды указаны в разделе LANGUAGE файла config.yml.
-c--configПуть к YML-файлу конфигурации. Если не передан, ищется файл config.yml в каталоге конфигурации по умолчанию, например ~/.config/urless/.
-dp--disregard-paramsНекоторые фильтры не применяются, если URL содержат параметры, поскольку по умолчанию мы хотим видеть все возможные параметры. Если этот аргумент передан, фильтрация будет выполнена независимо от наличия параметров.
-nb--no-bannerСкрывает вывод баннера инструмента (по умолчанию он скрыт, если вы передаёте входные данные через конвейер в urless).
--versionПоказать номер текущей версии.
-v--verboseПодробный вывод
  • UNWANTED-CONTENT:
    • Часть пути URL содержит более 3 дефисов (-), но НЕ является GUID. Это подразумевает контент, написанный человеком, например how-to-hack-the-planet. Если передан аргумент -khw, он не будет удалён.
    • URL содержит /YYYY/MM/, например год, месяц. Обычно это статический контент, например блог. Если передан аргумент -kym, он не будет удалён.
  • В противном случае URL имеет параметры (или фрагмент #) И аргумент -dp/--disregard-params НЕ был передан:
    • Если есть несколько URL с одинаковыми параметрами, включаются только URL с уникальными значениями параметров.
    • Если есть URL с параметром, но без значения (или с фрагментом), он будет включён.