Использование веб-краулера Katana
В этой статье рассмотрим, как использовать веб-краулер Katana. Мы подробно разберем практически весь его функционал.
Katana — это мощный фреймворк для веб-краулинга и спайдеринга, разработанный командой ProjectDiscovery. Он незаменим на всех этапах тестирования на проникновение, обеспечивая гибкость и эффективность
Ввод ссылки
Katana позволяет указать цели для сканирования несколькими способами:
Мы можем дать как одну ссылку, например:
Для нескольких ссылок (разделяются запятыми):
katana -u github.com,google.com
Тогда инструмент будет кравлить их параллельно, а не в порядке очереди
В list.txt кидаем все ссылки. Например:
3. Через STDIN (удобно для автоматизации и one-liner'ов):
echo https://tesla.com | katana
Crawling Modes
Katana поддерживает два режима сканирования:
Это тот режим, какой мы разобрали выше (он используеться по умолчанию). Использует стандартную http библиотеку go. Из плюсов данного режима можно выделить только скорость.
Недостаток заключается в том, что HTTP-библиотека Go обрабатывает ответ в том виде, в каком он получен, без выполнения JavaScript и манипуляций с DOM . Это может привести к пропущенным конечным точкам, которые появляются только после рендеринга или в результате асинхронных вызовов.
Проще говоря, если вы хотите испоьзовать потэнциал этого инструмента на максимум, то стандартный режим не подойдет. Стандартный режим подходит для быстрого сканирования, но не раскрывает полный потенциал инструмента. Если требуется глубокий анализ, лучше выбрать другой режим.
В этом режиме Katana как бы запускает браузер «внутри себя», без отображения окна. Это нужно для того, чтобы:
- Притвориться настоящим браузером — так сайты воспринимают сканер как обычного пользователя и дают больше данных.
- Получить больше информации — Katana может «увидеть» то, что появляется на сайте только после загрузки JavaScript или взаимодействия со страницей.
Если ты сканируешь современный сайт, где контент загружается динамически (например, после клика по кнопке или прокрутки), включи этот режим с помощью команды -headless.
Он работает медленнее, чем обычный режим, но зато находит больше.
При запуске от имени супер-пользователя, запускайте через --no-sandbox
Область сканирования
Одна из ключевых задач при сборе ссылок с помощью Katana — фильтрация ненужных данных. Инструмент может собирать ссылки, связанные, например, с Google Analytics или другими сторонними сервисами. Это замедляет процесс сканирования и засоряет результаты лишней информацией. Katana предлагает четыре метода для фильтрации по scope'у:
1. Field-scope — "Что разрешено"
Ты заранее указываешь: какие сайты, домены или ссылки можно обрабатывать. Всё остальное игнорируется.
Пример: сканировать только example.com, игнорируя всё остальное.2. Crawl-scope — "Где ходить"
Определяешь, по каким ссылкам можно переходить во время сканирования.
Пример: переходить только по внутренним ссылкам, не выходя на другие сайты.
3. Crawl-out-scope — "Смотреть, но не трогать"
Katana замечает внешние ссылки, но не переходит по ним. Это помогает видеть, куда ведёт сайт, но не тратить время на лишнее.
4. No-scope — "Без ограничений"
Katana сканирует всё подряд — любые ссылки, сайты и ресурсы.
Используй осторожно: можно случайно обойти полинтернета :)
Field-scope
Для этого режима есть 3 опции:
Сканирование по основному домену и всем его поддоменам.
Пример: example.com, www.example.com, api.example.com — все войдут в сканирование.
Сканирование только по конкретному (под)домену, который ты указал.
Пример: если ты указал www.example.com, то api.example.com — уже не будет сканироваться.
Сканирование по ключевому слову домена.
Пример: если указано example, то попадут в сканирование example.com, example.net, example.org и т.п.
Флаг -cs (crawl-scope) работает как фильтр по регулярному выражению (regex)
Это значит, что Katana будет возвращать только те URL, которые соответствуют заданному шаблону.
Например, если ты сканируешь сайт tesla.com и используешь:
То в результатах ты увидишь только те ссылки, в которых есть слово shop, например:
https://www.tesla.com/shop/accessories
А все остальные ссылки, вроде https://www.tesla.com/models или https://www.tesla.com/about, — будут отброшены, потому что они не совпадают с фильтром.
Crawl-out-scope
Crawl-out-scope (-cos) — фильтр на исключение URL
Флаг -cos работает как фильтр на исключение: он удаляет из результатов все ссылки, которые соответствуют заданному шаблону (регулярному выражению).
Например, если ты используешь:
cos "shop"
Katana исключит из вывода все ссылки, в которых есть слово shop, например:
Они просто не попадут в результаты. Прще говоря, этот филтр работает как crawl-scope но наоборот
No-scope (-ns) — без ограничений
Если ты укажешь флаг -ns, Katana полностью отключит ограничения по области сканирования.
- Сканирование начнётся с указанного сайта (например,
https://tesla.com) - Но дальше Katana будет переходить по всем ссылкам, которые найдёт — даже если они ведут на другие сайты и домены.
katana -u https://tesla.com -ns
В этом случае Katana может перейти на:
То есть ты как бы "открываешь ворота" для обхода всего интернета, начиная с одного сайта.
⚠️ Важно: такой режим может привести к слишком большому объёму данных, поэтому использовать его нужно с осторожностью. Не используем его, если нету необходимости
Глубина сканирования
С помощью флага -depth ты можешь указать, на какую глубину Katana должна следовать по ссылкам при сканировании.
- Чем меньше значение, тем быстрее сканирование, но меньше найденных ссылок.
- Чем больше значение, тем глубже Katana будет заходить, найдёт больше endpoint’ов — но и займёт больше времени.
По дефолту стоит значение 3. Максимальное значение - 5.
Автоматическое заполнение форм
-automatic-form-fill (-aff) — автоматическое заполнение форм
Эта опция включает автоматическое заполнение веб-форм во время сканирования.
- Katana пытается автоматически заполнять формы на сайте — например, поля логина, поиска, подписки и т.д.
- Она умеет распознавать известные поля (например,
email,name,password) и может заполнять даже неизвестные поля по умолчанию. - Значения для заполнения можно настроить вручную в файле конфигурации:
$HOME/.config/katana/form-config.yaml
Я б советовал изменить в значении email домен на какой нибудь gmail.com. Так как иногда сайты не пропускают дальше, если email - незнакомый домен. Таким образом сайты защищаються от временных пост, спама и так далее...
Дополнительный парсинг
-known-files — сканирование robots.txt и sitemap.xml
Эта опция включает сканирование известных файлов, таких как:
robots.txt— файл, в котором сайты указывают, что можно и нельзя сканироватьsitemap.xml— карта сайта, где перечислены все важные страницы
📌 По умолчанию эта опция отключена, так что её нужно включать вручную.
✅ Пример:
katana -u https://tesla.com -kf robotstxt,sitemapxml
Работаем с js файлами
-jc / -js-crawl — включить обход и парсинг JS-файлов
Эта опция включает поиск ссылок внутри JavaScript-файлов.
Полезно для нахождения "спрятанных" endpoint’ов, которые подгружаются через JS, например:api.example.com/dataвнутриmain.js.
-jsl / -jsluice — углублённый парсинг JS-файлов (ресурсоёмкий)
Эта опция включает дополнительный парсинг с помощью инструмента jsluice, что позволяет находить ещё больше скрытых ссылок и паттернов в JS.
⚠️ Затратно по памяти — лучше использовать на мощной машине или для отдельных целей.
Кастомные regex скрипты
Katana поддерживает мощную фильтрацию и обработку URL через регулярные выражения, что позволяет гибко управлять областью сканирования и результатами.
Ниже приведен пример, как Katana извлекает email-адреса с помощью пользовательского регулярного выражения (regex). Нашёл я его на гитхабе:
Мнение ИИ об оптимальном использовании Katana
В завершение я обратился к ИИ, чтобы выяснить, как, по его мнению, лучше всего использовать Katana для достижения максимальной эффективности:
Для повышения эффективности сканирования добавлю от себя следуйщее:
- Добавлять Cookie: Используйте флаг -H "Cookie: <value>", чтобы эмулировать авторизованного пользователя и получить доступ к скрытым данным.
- Менять User-Agent: Применяйте разные User-Agent’ы с помощью флага -H "User-Agent: <value>" или опции -rua для случайного выбора, чтобы обойти ограничения сайтов.
- Настраивать заголовки: Добавляйте кастомные заголовки через -H для специфичных сценариев, например, для тестирования API или обхода защиты.
Эти настройки помогут адаптировать Katana под конкретные задачи и увеличить объем собираемой информации.
Заключение
Мы рассмотрели ключевые функции Katana — мощного инструмента для веб-краулинга. Его возможности далеко не ограничиваются описанным: Katana предлагает множество дополнительных опций, таких как настройка заголовков, использование cookie, проксирование запросов и другие технические параметры. Подробности этих функций вы можете изучить в официальной документации Katana. Не недооценивайте этот инструмент — он способен значительно ускорить и углубить процесс анализа веб-ресурсов.