TGViewer
Библиотека Go-разработчика | Golang Библиотека Go-разработчика | Golang @goproglib · 24.1K subscribers
Post #7240 2.92K
🤩 Краулер для разведки по веб приложениям

Обычный краулер видит сырой HTML и пропускает всё, что появляется уже в DOM. Katana от команды ProjectDiscovery решает эту задачу. Это краулер на Go, который собирает ссылки и эндпоинты, в том числе из JS, и умеет ходить по сайту через настоящий браузер.

Katana принимает на вход один URL, список из файла или поток через stdin, обходит цель и отдаёт найденные эндпоинты в текст, файл или JSON.

У него два режима работы:

• Стандартный использует обычный HTTP клиент Go и работает быстро, но видит только сырой ответ.

• Режим headless поднимает Chrome, выполняет JavaScript и находит эндпоинты, которые появляются после рендера или асинхронных запросов.

Дополнительно инструмент парсит ссылки внутри JS файлов, умеет автоматически заполнять формы, контролирует область обхода через scope и regex, фильтрует вывод по расширениям и условиям. Есть встроенное определение технологий и обход с авторизацией через свои заголовки или куки.

Как это работает

Базовый запуск по одной цели:
katana -u https://example.com


Список целей из файла:
katana -list urls.txt


Поток через pipe, например из httpx:
echo https://example.com | katana


Режим headless с разбором JavaScript находит больше эндпоинтов на динамических сайтах:
katana -u https://example.com -headless -jc


Контроль области обхода. Флаг -fs dn держит краулер в пределах домена по ключевому слову:
katana -u https://example.com -fs dn


Вывод в JSON с записью в файл удобен для дальнейшей обработки в пайплайне:
katana -u https://example.com -jsonl -o endpoints.jsonl


Запускать Katana можно и как библиотеку Go. Создаёте структуру Options, передаёте те же параметры, что и в CLI, и вызываете метод Crawl.

Колбэк OnResult получает каждый найденный результат:
options := &types.Options{
MaxDepth: 3,
FieldScope: "rdn",
Concurrency: 10,
Strategy: "depth-first",
OnResult: func(result output.Result) {
gologger.Info().Msg(result.Request.URL)
},
}
crawlerOptions, _ := types.NewCrawlerOptions(options)
crawler, _ := standard.New(crawlerOptions)
crawler.Crawl("https://example.com")


Кому пригодится

Katana пригодится пентестерам, специалистам по bug bounty и инженерам по безопасности для сбора поверхности атаки. Инструмент собирает пути, параметры и файлы, из которых потом строят словари и списки целей для других сканеров.

Важно помнить, что краулер шлёт реальные запросы к цели. Запускайте его только по тем доменам, на тестирование которых у вас есть разрешение.

Если работаете с разведкой по вебу и сидите на стеке ProjectDiscovery, Katana встаёт в пайплайн рядом с subfinder и httpx. Быстрый стандартный режим закрывает простые сайты, headless вытягивает динамику.

➡️ Репозиторий

📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max

🐸 Библиотека Go-разработчика

#GoToProduction
  • ❤ 2
  • 👍 1
More from @goproglib
  1. Sep 30, 2026🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации A…
  2. Sep 29, 2026👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сло…
  3. Sep 28, 2026🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true /…
  4. Sep 28, 2026👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работае…
  5. Sep 26, 2026🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурног…
  6. Sep 25, 2026🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →