À propos du projet

Katana est un framework de crawling et de spidering web basé sur Go, destiné à être utilisé directement ou dans le cadre de workflows automatisés. Il accepte des cibles sous forme d'une seule URL, d'URLs séparées par des virgules, d'un fichier de liste ou d'une entrée STDIN par tube, et peut émettre les URLs découvertes et les métadonnées vers STDOUT, un fichier ou JSONL. Les options d'installation incluent go install, des binaires de version précompilés et une image Docker. Le mode de crawling standard utilise la bibliothèque HTTP de Go et ne rend pas le JavaScript ni le DOM. Le mode sans tête optionnel utilise Chrome pour rendre les pages, exécuter JavaScript et découvrir les points de terminaison chargés par le navigateur ou asynchrones. La configuration sans tête inclut la sélection du Chrome système, un chemin Chrome personnalisé ou une URL de débogueur WebSocket, des répertoires de données du navigateur, des contrôles de navigation privée et de bac à sable, le mode navigateur visible, des options Chrome supplémentaires, l'extraction XHR et des stratégies de chargement de page telles que heuristique, load, DOMContentLoaded, networkidle et none. Un temps d'attente DOM peut être configuré pour le rendu JavaScript. Katana peut analyser et crawler les points de terminaison à partir de fichiers JavaScript et utiliser éventuellement l'analyse jsluice. Il prend en charge le remplissage automatique expérimental de formulaires, l'extraction de formulaires et de champs, la configuration personnalisée de formulaires et la détection automatique de captchas avec résolution externe via CapSolver. Les types de captchas documentés pris en charge sont reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile et hCaptcha. Le comportement de crawling peut être contraint par la profondeur, la durée, le nombre maximum de pages par domaine, la taille de réponse, les délais d'attente, les tentatives, la gestion des redirections, les proxys, les en-têtes ou cookies personnalisés, les résolveurs personnalisés et les stratégies en profondeur d'abord ou en largeur d'abord. Il peut également traiter les fichiers robots.txt et sitemap, détecter les technologies et éventuellement randomiser le TLS client hello. Les contrôles de portée incluent les champs prédéfinis rdn, fqdn et dn, les règles d'inclusion et d'exclusion par expression régulière, la désactivation de la portée hôte, l'affichage des URLs externes et l'exclusion des CDN, des plages IP privées, des CIDR, des IP ou des hôtes correspondant à des expressions régulières. Le filtrage de sortie prend en charge les regex d'URL, la correspondance ou le filtrage d'extension, les conditions de réponse basées sur DSL, les filtres de type de page, la normalisation des paramètres de requête, le filtrage d'URL similaires et le filtrage de contenu en double. La similarité de contenu de page peut utiliser simhash, TF-IDF ou BM25 avec des seuils configurables et des budgets de traitement par cluster. Les contrôles de taux et d'exécution couvrent les récupérateurs simultanés, les entrées parallèles, les délais de requête et les limites de taux globales ou par hôte par seconde et par minute. La sortie peut utiliser des champs ou des modèles configurables, stocker les requêtes et réponses HTTP, omettre les données brutes ou les corps, et fonctionner en mode silencieux, verbeux ou débogage. Les crawls peuvent être repris à partir d'un fichier de configuration de reprise. Une fonctionnalité optionnelle de base de connaissances fournit une classification basée sur l'apprentissage automatique des types de pages et des formulaires à l'aide d'un modèle téléchargé automatiquement. Il peut également extraire des secrets, éventuellement les valider avec des appels de fournisseur en direct, et classer les points de terminaison REST, GraphQL, SOAP et XHR. La documentation du projet rappelle aux utilisateurs d'utiliser l'outil de manière responsable et qu'ils sont responsables de leur propre utilisation.