Об этом проекте

Katana — это фреймворк для веб-краулинга и спайдеринга на Go, предназначенный для использования как напрямую, так и в составе автоматизированных рабочих процессов. Он принимает цели в виде одного URL, URL-адресов через запятую, файла списка или входных данных через STDIN и может выводить обнаруженные URL и метаданные в STDOUT, файл или JSONL. Варианты установки включают go install, готовые бинарные файлы релизов и образ Docker. Стандартный режим краулинга использует HTTP-библиотеку Go и не выполняет JavaScript или DOM. Опциональный headless-режим использует Chrome для отрисовки страниц, выполнения JavaScript и обнаружения загружаемых браузером или асинхронных эндпоинтов. Конфигурация headless включает выбор системного Chrome, пользовательский путь к Chrome или WebSocket URL отладчика, каталоги данных браузера, управление режимом инкогнито и песочницей, режим видимого браузера, дополнительные параметры Chrome, извлечение XHR и стратегии загрузки страниц, такие как heuristic, load, DOMContentLoaded, networkidle и none. Для отрисовки JavaScript можно настроить время ожидания DOM. Katana может разбирать и обходить эндпоинты из JavaScript-файлов и опционально использовать парсинг jsluice. Он поддерживает экспериментальное автоматическое заполнение форм, извлечение форм и полей, пользовательскую конфигурацию форм, а также автоматическое обнаружение капчи с внешним решением через CapSolver. Задокументированные поддерживаемые типы капчи: reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile и hCaptcha. Поведение краулинга можно ограничивать по глубине, длительности, максимальному количеству страниц на домен, размеру ответа, тайм-аутам, повторным попыткам, обработке редиректов, прокси, пользовательским заголовкам или cookie, пользовательским резолверам, а также стратегиям обхода в глубину или в ширину. Он также может обрабатывать файлы robots.txt и sitemap, определять технологии и опционально рандомизировать TLS client hello. Управление областью охвата включает предопределённые поля rdn, fqdn и dn, правила включения и исключения на основе регулярных выражений, отключение ограничения по хосту, отображение внешних URL, а также исключение CDN, частных диапазонов IP, CIDR, IP или хостов, совпадающих с регулярным выражением. Фильтрация вывода поддерживает регулярные выражения для URL, сопоставление или фильтрацию расширений, условия ответа на основе DSL, фильтры по типу страницы, нормализацию параметров запроса, фильтрацию похожих URL и фильтрацию дублирующегося контента. Для схожести содержимого страниц можно использовать simhash, TF-IDF или BM25 с настраиваемыми порогами и бюджетами обработки на кластер. Управление скоростью и выполнением охватывает параллельные загрузчики, параллельные входные данные, задержки запросов, а также глобальные или похостовые ограничения скорости в секунду и в минуту. Вывод может использовать настраиваемые поля или шаблоны, сохранять HTTP-запросы и ответы, исключать необработанные данные или тела, а также работать в тихом, подробном или отладочном режиме. Краулинг можно возобновить из файла конфигурации возобновления. Опциональная функция базы знаний обеспечивает классификацию типов страниц и форм на основе ML с использованием автоматически загружаемой модели. Она также может извлекать секреты, опционально проверять их с помощью живых вызовов провайдеров и классифицировать эндпоинты REST, GraphQL, SOAP и XHR. Документация проекта напоминает пользователям об ответственном использовании инструмента и о том, что они сами несут ответственность за его применение.