Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
katana — Ein Crawling- und Spidering-Framework der nächsten Generation. | Kitploit
Tools/GitHubGitHub/projectdiscovery/katana
AufklärungInformationsbeschaffungWebsicherheitPenetrationstestsCrawler
GitHubprojectdiscovery/katana

katana

Ein Crawling- und Spidering-Framework der nächsten Generation.

Repository anzeigen
17.3k1.2kvor 4 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

katana

Ein neuartiges Framework für Crawling und Spidering

Funktionen • Installation • Nutzung • Geltungsbereich • Konfiguration • Filter • Discord beitreten

Funktionen

image

  • Schnelles und vollständig konfigurierbares Web-Crawling
  • Standard- und Headless-Modus
  • JavaScript-Analyse / -Crawling
  • Anpassbares automatisches Ausfüllen von Formularen
  • Geltungsbereichskontrolle – Vorkonfigurierte Felder / Regex
  • Wissensdatenbank – ML-Seitentyp- / Formular-Klassifizierung (automatisch heruntergeladenes Modell)
  • Anpassbare Ausgabe – Vorkonfigurierte Felder
  • EINGABE – STDIN, URL und LISTE
  • AUSGABE – STDOUT, DATEI und JSON

Installation

katana erfordert Go 1.26+ zur erfolgreichen Installation. Falls Installationsprobleme auftreten, empfehlen wir, die neueste verfügbare Version von Go zu verwenden, da sich die Mindestanforderung geändert haben könnte. Führen Sie den folgenden Befehl aus oder laden Sie eine vorkompilierte Binärdatei von der Release-Seite herunter.```console CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest

root@kitploit:~
**Weitere Optionen zum Installieren / Ausführen von katana-**

<details>
  <summary>Docker</summary>

> Zum Installieren / Aktualisieren von docker auf den neuesten Tag -```sh
docker pull projectdiscovery/katana:latest

Um katana im Standardmodus mit docker auszuführen -```sh docker run projectdiscovery/katana:latest -u https://tesla.com

root@kitploit:~
> Um katana im Headless-Modus mit Docker auszuführen -```sh
docker run projectdiscovery/katana:latest -u https://tesla.com -system-chrome -headless
Ubuntu

Es wird empfohlen, die folgenden Voraussetzungen zu installieren -```sh sudo apt update sudo apt install zip curl wget git snapd sudo snap refresh sudo snap install golang --classic

sudo install -d -m 0755 /etc/apt/keyrings curl -fsSL https://dl.google.com/linux/linux_signing_key.pub
| sudo gpg --dearmor -o /etc/apt/keyrings/google-chrome.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg]
http://dl.google.com/linux/chrome/deb/ stable main"
| sudo tee /etc/apt/sources.list.d/google-chrome.list > /dev/null

sudo apt update sudo apt install google-chrome-stable

root@kitploit:~
> installiere katana -```sh
go install github.com/projectdiscovery/katana/cmd/katana@latest

Verwendung```console

katana -h

root@kitploit:~
Dies wird die Hilfe für das Tool anzeigen. Hier sind alle unterstützten Schalter.```console
Katana is a fast crawler focused on execution in automation
pipelines offering both headless and non-headless crawling.

Usage:
  ./katana [flags]

Flags:
INPUT:
   -u, -list string[]     target url / list to crawl
   -resume string         resume scan using resume.cfg
   -e, -exclude string[]  exclude host matching specified filter ('cdn', 'private-ips', cidr, ip, regex)

CONFIGURATION:
   -r, -resolvers string[]       list of custom resolver (file or comma separated)
   -d, -depth int                maximum depth to crawl (default 3)
   -jc, -js-crawl                enable endpoint parsing / crawling in javascript file
   -jsl, -jsluice                enable jsluice parsing in javascript file (memory intensive)
   -ct, -crawl-duration value    maximum duration to crawl the target for (s, m, h, d) (default s)
   -kf, -known-files string      enable crawling of known files (all,robotstxt,sitemapxml), a minimum depth of 3 is required to ensure all known files are properly crawled.
   -mrs, -max-response-size int  maximum response size to read (default 4194304)
   -timeout int                  time to wait for request in seconds (default 10)
   -aff, -automatic-form-fill    enable automatic form filling (experimental)
   -fx, -form-extraction         extract form, input, textarea & select elements in jsonl output
   -retry int                    number of times to retry the request (default 1)
   -proxy string                 http/socks5 proxy to use
   -td, -tech-detect             enable technology detection
   -H, -headers string[]         custom header/cookie to include in all http request in header:value format (file)
   -config string                path to the katana configuration file
   -fc, -form-config string      path to custom form configuration file
   -flc, -field-config string    path to custom field configuration file
   -s, -strategy string          Visit strategy (depth-first, breadth-first) (default "depth-first")
   -iqp, -ignore-query-params    Ignore crawling same path with different query-param values
   -fsu, -filter-similar         filter crawling of similar looking URLs (e.g., /users/123 and /users/456)
   -fst, -filter-similar-threshold int  number of distinct values before a path position is treated as parameter (default 10)
   -tlsi, -tls-impersonate       enable experimental client hello (ja3) tls randomization
   -dr, -disable-redirects       disable following redirects (default false)
   -kb, -knowledge-base          enable knowledge base classification
   -kb-secrets                   enable secrets extractor in the knowledge base
   -kb-validate-secrets          validate detected secrets against their provider (sends live API calls)
   -kb-endpoints                 enable endpoints extractor (classifies REST/GraphQL/SOAP/XHR requests)
   -mdp, -max-domain-pages int   maximum number of pages to crawl per domain (default unlimited)

DEBUG:
   -health-check, -hc        run diagnostic check up
   -elog, -error-log string  file to write sent requests error log
   -pprof-server             enable pprof server

HEADLESS:
   -hl, -headless                    enable headless hybrid crawling (experimental)
   -sc, -system-chrome               use local installed chrome browser instead of katana installed
   -sb, -show-browser                show the browser on the screen with headless mode
   -ho, -headless-options string[]   start headless chrome with additional options
   -nos, -no-sandbox                 start headless chrome in --no-sandbox mode
   -cdd, -chrome-data-dir string     path to store chrome browser data
   -scp, -system-chrome-path string  use specified chrome browser for headless crawling
   -noi, -no-incognito               start headless chrome without incognito mode
   -cwu, -chrome-ws-url string       use chrome browser instance launched elsewhere with the debugger listening at this URL
   -xhr, -xhr-extraction             extract xhr request url,method in jsonl output
   -pls, -page-load-strategy string  page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic")
   -dwt, -dom-wait-time int          time in seconds to wait after page load when using domcontentloaded strategy (default 5)
   -csp, -captcha-solver-provider string  captcha solver provider (e.g. capsolver)
   -csk, -captcha-solver-key string       captcha solver provider api key

SCOPE:
   -cs, -crawl-scope string[]       in scope url regex to be followed by crawler
   -cos, -crawl-out-scope string[]  out of scope url regex to be excluded by crawler
   -fs, -field-scope string         pre-defined scope field (dn,rdn,fqdn) or custom regex (e.g., '(company-staging.io|company.com)') (default "rdn")
   -ns, -no-scope                   disables host based default scope
   -do, -display-out-scope          display external endpoint from scoped crawling

FILTER:
   -mr, -match-regex string[]             regex or list of regex to match on output url (cli, file)
   -fr, -filter-regex string[]            regex or list of regex to filter on output url (cli, file)
   -f, -field string                      field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) (Deprecated: use -output-template instead)
   -sf, -store-field string               field to store in per-host output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
   -em, -extension-match string[]         match output for given extension (eg, -em php,html,js,none)
   -ef, -extension-filter string[]        filter output for given extension (eg, -ef png,css)
   -ndef, -no-default-ext-filter bool     remove default extensions from the filter list
   -mdc, -match-condition string          match response with dsl based condition
   -fdc, -filter-condition string         filter response with dsl based condition
   -duf, -disable-unique-filter           disable duplicate content filtering
   -filter-page-type string[]      filter response with page type (e.g. error,captcha,parked)

RATE-LIMIT:
   -c, -concurrency int          number of concurrent fetchers to use (default 10)
   -p, -parallelism int          number of concurrent inputs to process (default 10)
   -rd, -delay int               request delay between each request in seconds
   -rl, -rate-limit int          maximum requests to send per second (default 150)
   -rlm, -rate-limit-minute int  maximum number of requests to send per minute
   -hrl, -host-rate-limit int    maximum requests to send per second per host
   -hrlm, -host-rate-limit-minute int  maximum number of requests to send per minute per host

UPDATE:
   -up, -update                 update katana to latest version
   -duc, -disable-update-check  disable automatic katana update check

OUTPUT:
   -o, -output string                file to write output to
   -output-template string      custom output template
   -sr, -store-response              store http requests/responses
   -srd, -store-response-dir string  store http requests/responses to custom directory
   -ncb, -no-clobber                 do not overwrite output file
   -sfd, -store-field-dir string     store per-host field to custom directory
   -or, -omit-raw                    omit raw requests/responses from jsonl output
   -ob, -omit-body                   omit response body from jsonl output
   -lof, -list-output-fields         list available fields for jsonl output format
   -eof, -exclude-output-fields      exclude fields from jsonl output
   -j, -jsonl                        write output in jsonl format
   -nc, -no-color                    disable output content coloring (ANSI escape codes)
   -silent                           display output only
   -v, -verbose                      display verbose output
   -debug                            display debug output
   -version                          display project version

Katana ausführen

Eingabe für katana

katana erfordert eine URL oder einen Endpunkt zum Crawlen und akzeptiert einzelne oder mehrere Eingaben.

Die Eingabe-URL kann mit der Option -u angegeben werden, und mehrere Werte können durch kommagetrennte Eingabe bereitgestellt werden. Ebenso wird die Datei-Eingabe mit der Option -list unterstützt, zusätzlich wird auch die Piped-Eingabe (stdin) unterstützt.

URL Eingabe```sh

katana -u https://tesla.com

root@kitploit:~
#### Mehrere URL-Eingabe (kommagetrennt)```sh
katana -u https://tesla.com,https://google.com

Listeneingabe```bash

$ cat url_list.txt

https://tesla.com https://google.com

root@kitploit:~
(No content provided for translation.)```
katana -list url_list.txt

STDIN (gepipt) Eingabe```sh

echo https://tesla.com | katana

root@kitploit:~
- [alpine](https://github.com/projectdiscovery/katana/blob/HEAD/dockerfiles/alpine): Neuester Alpine-Linux-Container mit `curl`, `bash`, `jq` und PyPI-Paketen. (Docker Hub: `phx.ocir.io/oracle/ateam/masscan-kube:alpine-latest`)
- [busybox](https://github.com/projectdiscovery/katana/blob/HEAD/dockerfiles/busybox): Minimales Docker-Image basierend auf busybox:glibc mit den gleichen Werkzeugen wie das Alpine-Image. Wird typischerweise als Init-Container für Netzwerk-sysctl-Tuning verwendet, bevor masscan ausgeführt wird. (Docker Hub: `phx.ocir.io/oracle/ateam/masscan-kube:busybox-latest`)```sh
cat domains | httpx | katana

Beispiel für die Ausführung von katana -```console katana -u https://youtube.com


/ /_____ / /___ ____ ___ _ / '/ _ / __/ _ / _ / _ / //_\,/_/_,////_,_/ v0.0.1

root@kitploit:~
  projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions. [WRN] Developers assume no liability and are not responsible for any misuse or damage. https://www.youtube.com/ https://www.youtube.com/about/ https://www.youtube.com/about/press/ https://www.youtube.com/about/copyright/ https://www.youtube.com/t/contact_us/ https://www.youtube.com/creators/ https://www.youtube.com/ads/ https://www.youtube.com/t/terms https://www.youtube.com/t/privacy https://www.youtube.com/about/policies/ https://www.youtube.com/howyoutubeworks?utm_campaign=ytgen&utm_source=ythp&utm_medium=LeftNav&utm_content=txt&u=https%3A%2F%2Fwww.youtube.com%2Fhowyoutubeworks%3Futm_source%3Dythp%26utm_medium%3DLeftNav%26utm_campaign%3Dytgen https://www.youtube.com/new https://m.youtube.com/ https://www.youtube.com/s/desktop/4965577f/jsbin/desktop_polymer.vflset/desktop_polymer.js https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-home-page-skeleton.css https://www.youtube.com/s/desktop/4965577f/cssbin/www-onepick.css https://www.youtube.com/s/_/ytmainappweb/_/ss/k=ytmainappweb.kevlar_base.0Zo5FUcPkCg.L.B1.O/am=gAE/d=0/rs=AGKMywG5nh5Qp-BGPbOaI1evhF5BVGRZGA https://www.youtube.com/opensearch?locale=en_GB

root@kitploit:~
## Crawling-Modus

### Standard-Modus

Die Standard-Crawling-Modalität verwendet unter der Haube die standardmäßige Go-HTTP-Bibliothek zur Verarbeitung von HTTP-Anfragen/-Antworten. Diese Modalität ist viel schneller, da sie keinen Browser-Overhead hat. Dennoch analysiert sie den HTTP-Antworttext so, wie er ist, ohne JavaScript- oder DOM-Rendering, wodurch möglicherweise Endpunkte nach dem DOM-Rendering oder asynchrone Endpunktaufrufe übersehen werden, die in komplexen Webanwendungen in Abhängigkeit von beispielsweise browserspezifischen Ereignissen auftreten können.

### Headless-Modus

Der Headless-Modus hakt interne Headless-Aufrufe ein, um HTTP-Anfragen/-Antworten direkt im Browserkontext zu verarbeiten. Dies bietet zwei Vorteile:
- Der HTTP-Fingerabdruck (TLS und User-Agent) identifiziert den Client vollständig als legitimen Browser
- Bessere Abdeckung, da die Endpunkte durch die Analyse der standardmäßigen Rohantwort (wie im vorherigen Modus) und auch der browser-gerenderten mit aktiviertem JavaScript entdeckt werden.

Headless-Crawling ist optional und kann mit der Option `-headless` aktiviert werden.

Hier sind weitere Headless-CLI-Optionen -```console
katana -h headless

Flags:
HEADLESS:
   -hl, -headless                    enable headless hybrid crawling (experimental)
   -sc, -system-chrome               use local installed chrome browser instead of katana installed
   -sb, -show-browser                show the browser on the screen with headless mode
   -ho, -headless-options string[]   start headless chrome with additional options
   -nos, -no-sandbox                 start headless chrome in --no-sandbox mode
   -cdd, -chrome-data-dir string     path to store chrome browser data
   -scp, -system-chrome-path string  use specified chrome browser for headless crawling
   -noi, -no-incognito               start headless chrome without incognito mode
   -cwu, -chrome-ws-url string       use chrome browser instance launched elsewhere with the debugger listening at this URL
   -xhr, -xhr-extraction             extract xhr requests
   -pls, -page-load-strategy string  page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic")
   -dwt, -dom-wait-time int          time in seconds to wait after page load when using domcontentloaded strategy (default 5)
   -csp, -captcha-solver-provider string  captcha solver provider (e.g. capsolver)
   -csk, -captcha-solver-key string       captcha solver provider api key

-no-sandbox

Startet den headless Chrome-Browser mit der Option no-sandbox, nützlich, wenn als Root-Benutzer ausgeführt wird.```console katana -u https://tesla.com -headless -no-sandbox

root@kitploit:~
*`-no-incognito`*
----

Führt den headless Chrome-Browser ohne Inkognito-Modus aus, nützlich bei Verwendung des lokalen Browsers.```console
katana -u https://tesla.com -headless -no-incognito

Um Cookies und andere Browser-Sitzungsdaten über mehrere Läufe hinweg zu erhalten, kombiniere -no-incognito mit -chrome-data-dir, damit Katana Ihr ausgewähltes Chrome-Profilverzeichnis anstelle eines isolierten temporären Verzeichnisses wiederverwendet.```console katana -u https://tesla.com -headless -no-incognito -chrome-data-dir /tmp/katana-profile

root@kitploit:~
*`-headless-options`*
----

Beim Crawlen im Headless-Modus können zusätzliche Chrome-Optionen mit `-headless-options` angegeben werden, zum Beispiel -```console
katana -u https://tesla.com -headless -system-chrome -headless-options --disable-gpu,proxy-server=http://127.0.0.1:8080

-page-load-strategy

Steuert, wie katana auf das Laden von Seiten im Headless-Modus wartet. Verschiedene Strategien sind für unterschiedliche Arten von Webanwendungen nützlich:

root@kitploit:~
Die `domcontentloaded`-Strategie ist besonders nützlich für Single Page Applications (SPAs), die aufgrund kontinuierlicher Hintergrundanfragen (Websockets, Polling usw.) nie vollständig laden.

*`-dom-wait-time`*
----

Bei Verwendung der `domcontentloaded`-Page-Load-Strategie gibt diese Option an, wie viele Sekunden nach dem Auslösen des `DOMContentLoaded`-Ereignisses gewartet werden soll. Dies gibt JavaScript Zeit, interaktive Elemente zu rendern. Standardwert ist 5 Sekunden.```console
katana -u https://tesla.com -headless -pls domcontentloaded -dwt 10

Captcha-Erkennung und -Lösung

Katana unterstützt die automatische Captcha-Erkennung und -Lösung beim headless Crawlen. Wenn eine Captcha-Seite erkannt wird, identifiziert katana den Captcha-Anbieter, löst es über einen externen Dienst und setzt das Crawlen fort.

Unterstützte Captcha-Typen: reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile, hCaptcha

-captcha-solver-provider

Option zum Angeben des Captcha-Lösungsanbieters. Derzeit unterstützt: capsolver.

-captcha-solver-key

API-Schlüssel für den Captcha-Lösungsanbieter.```console katana -u https://example.com -headless -csp capsolver -csk YOUR_API_KEY

root@kitploit:~
Der Anbieter und der Schlüssel können auch über Umgebungsvariablen festgelegt werden:```console
export CAPTCHA_SOLVER_PROVIDER=capsolver
export CAPTCHA_SOLVER_KEY=YOUR_API_KEY
katana -u https://example.com -headless

Scope Control

Crawling kann endlos sein, wenn es nicht eingegrenzt wird, daher bietet katana mehrere Möglichkeiten zur Definition des Crawl-Bereichs.

-field-scope

Die praktischste Option zur Definition des Bereichs mit einem vordefinierten Feldnamen, wobei rdn die Standardoption für den Feldbereich ist.

  • rdn - Crawling auf den Root-Domainnamen und alle Subdomains beschränkt (z.B. *example.com) (Standard)
  • fqdn - Crawling auf die angegebene Sub(domain) beschränkt (z.B. www.example.com oder api.example.com)
  • dn - Crawling auf das Domainnamen-Keyword beschränkt (z.B. example)```console katana -u https://tesla.com -fs dn
root@kitploit:~
*`-crawl-scope`*
------

Für erweiterte Bereichssteuerung kann die Option `-cs` verwendet werden, die **Regex**-Unterstützung bietet.```console
katana -u https://tesla.com -cs login

Für mehrere Regeln innerhalb des Geltungsbereichs können Dateieingaben mit mehrzeiligen Zeichenfolgen / regulären Ausdrücken übergeben werden.```bash $ cat in_scope.txt

login/ admin/ app/ wordpress/

root@kitploit:~
---
## Teleport-Anwendungsstart```console
katana -u https://tesla.com -cs in_scope.txt

-crawl-out-scope

Zur Definition, was nicht gecrawlt werden soll, kann die Option -cos verwendet werden und unterstützt auch Regex-Eingabe.```console katana -u https://tesla.com -cos logout

root@kitploit:~
Für mehrere Out-of-Scope-Regeln kann eine Dateieingabe mit mehrzeiligen Zeichenfolgen/Regex übergeben werden.```bash
$ cat out_of_scope.txt

/logout
/log_out

Kein Inhalt bereitgestellt. Bitte fügen Sie den zu übersetzenden Markdown-Chunk ein.```console katana -u https://tesla.com -cos out_of_scope.txt

root@kitploit:~
*`-no-scope`*
----

Katana ist standardmäßig auf den Bereich `*.domain` festgelegt. Um dies zu deaktivieren, kann die Option `-ns` verwendet werden; mit ihr wird auch das Internet durchsucht.```console
katana -u https://tesla.com -ns

-display-out-scope

Standardmäßig gilt, wenn die Scope-Option verwendet wird, dies auch für die als Ausgabe anzuzeigenden Links, sodass externe URLs standardmäßig ausgeschlossen werden und um dieses Verhalten zu überschreiben, kann die Option -do verwendet werden, um alle externen URLs anzuzeigen, die in den gescopten URLs / Endpunkten der Ziele vorhanden sind.``` katana -u https://tesla.com -do

root@kitploit:~
Hier sind alle CLI-Optionen für die Scope-Steuerung -```console
katana -h scope

Flags:
SCOPE:
   -cs, -crawl-scope string[]       in scope url regex to be followed by crawler
   -cos, -crawl-out-scope string[]  out of scope url regex to be excluded by crawler
   -fs, -field-scope string         pre-defined scope field (dn,rdn,fqdn) (default "rdn")
   -ns, -no-scope                   disables host based default scope
   -do, -display-out-scope          display external endpoint from scoped crawling

Crawler-Konfiguration

Katana bietet mehrere Optionen zur Steuerung und Konfiguration des Crawls nach unseren Wünschen.

-depth

Option zum Festlegen der depth (Tiefe) für das Crawlen von URLs. Je größer die Tiefe, desto mehr Endpunkte werden gecrawlt und desto länger dauert der Crawl.``` katana -u https://tesla.com -d 5

root@kitploit:~
*`-js-crawl`*
----

Option zur Aktivierung des Parsens von JavaScript-Dateien + Crawlen der in JavaScript-Dateien entdeckten Endpunkte, standardmäßig deaktiviert.```
katana -u https://tesla.com -jc

-crawl-duration

Option zur vordefinierten Crawl-Dauer, standardmäßig deaktiviert.``` katana -u https://tesla.com -ct 2

root@kitploit:~
*`-known-files`*
----
Option, um das Crawlen von `robots.txt` und `sitemap.xml` zu aktivieren, standardmäßig deaktiviert.```
katana -u https://tesla.com -kf robotstxt,sitemapxml

-automatic-form-fill

Option zur Aktivierung des automatischen Ausfüllens von Formularen für bekannte/unbekannte Felder. Bekannte Feldwerte können nach Bedarf angepasst werden, indem die Konfigurationsdatei unter $HOME/.config/katana/form-config.yaml aktualisiert wird.

Das automatische Ausfüllen von Formularen ist eine experimentelle Funktion.``` katana -u https://tesla.com -aff

root@kitploit:~
Form config values support DSL helper functions for dynamic data generation. All `rand_*` functions from the [projectdiscovery/dsl](https://github.com/projectdiscovery/dsl) library are available:```yaml
# $HOME/.config/katana/form-config.yaml
email: "rand_email()"
phone: "rand_phone()"
placeholder: "rand_first_name()"
password: 'rand_base(16, "")'
color: "#e66465"

-filter-similar

Option zum Filtern des Crawlings ähnlich aussehender URLs durch Normalisierung variabler Pfadsegmente. Dies erkennt IDs, UUIDs, Hashes, Datumsangaben und andere dynamische Werte und lernt zudem zur Laufzeit wiederkehrende Muster. Beispielsweise werden /users/123 und /users/456 als derselbe Endpunkt behandelt.``` katana -u https://tesla.com -fsu

root@kitploit:~
Der Promotionsschwellenwert (wie viele verschiedene Werte an einer Pfadposition vorhanden sein müssen, bevor diese als Parameter behandelt wird) kann mit `-fst` eingestellt werden. Niedrigere Werte sind aggressiver (weniger URLs werden gecrawlt), höhere Werte sind permissiver. Standardwert ist `10`.```
katana -u https://tesla.com -fsu -fst 5

-max-domain-pages

Option zur Begrenzung der Anzahl der pro Domain gecrawlten Seiten. Verhindert, dass eine einzelne Domain das gesamte Crawl-Budget verbraucht, nützlich für große Websites oder zum Schutz vor Crawler-Fallen.``` katana -u https://tesla.com -mdp 100

root@kitploit:~
## Knowledge Base Classification

Katana kann Crawlergebnisse mit einer **Wissensbasis** anreichern — einer maschinellen Lernklassifikation jeder gecrawlten Seite, unterstützt von [dit](https://github.com/HappyHackingSpace/dit). Wenn aktiviert, wird jede Antwort nach **Seitentyp** klassifiziert (z. B. `login`, `error`, `captcha`, `parked`) und alle Formulare auf der Seite werden identifiziert, wobei das Ergebnis dem Feld `knowledgebase` der JSONL-Ausgabe hinzugefügt wird. Dies funktioniert mit **allen Engines** (Standard und Headless).

> **Hinweis**: Das Klassifikationsmodell wird bei der ersten Verwendung **automatisch** nach `~/.dit/model.json` heruntergeladen (von [Hugging Face](https://huggingface.co/datasets/happyhackingspace/dit)). Dies ist eine einmalige, pro Maschine anfallende Kosten – nachfolgende Ausführungen verwenden das zwischengespeicherte Modell erneut. Eine manuelle Installation von `dit` ist nicht erforderlich.

*`-knowledge-base`*
----

Aktiviert die Knowledge-Base-Klassifikation. Die Seiten- und Formularklassifikation wird dem Feld `knowledgebase` jedes Ergebnisses hinzugefügt.```console
katana -u https://example.com -kb -jsonl

EINGABE:```json { "timestamp": "...", "request": { "...": "..." }, "response": { "...": "...", "knowledgebase": { "PageType": "login", "Forms": [{ "type": "login", "fields": { "username": "username or email", "password": "password" } }] } } }

root@kitploit:~
*`-filter-page-type`*
----

Filtere Ergebnisse ausschließlich auf die angegebenen Seitentypen. Die Aktivierung dieser Option impliziert `-kb` (der Klassifikator wird automatisch initialisiert).```console
katana -u https://example.com -fpt login,error

-kb-secrets

Aktivieren Sie den Secrets-Extraktor in der Wissensbasis, der erkannte Secrets (API-Schlüssel, Token usw.) unter dem Schlüssel secrets bereitstellt. Fügen Sie -kb-validate-secrets hinzu, um erkannte Secrets gegen ihren Anbieter zu validieren – beachten Sie, dass dies live API-Aufrufe sendet.```console katana -u https://example.com -kb-secrets

root@kitploit:~
*`-kb-endpoints`*
----

Aktiviert den Endpunkte-Extraktor, der Anfragen als REST, GraphQL, SOAP oder XHR unter dem Schlüssel `endpoints` klassifiziert.```console
katana -u https://example.com -kb-endpoints

Authentisiertes Crawlen

Beim authentisierten Crawlen werden benutzerdefinierte Header oder Cookies in HTTP-Anfragen eingefügt, um auf geschützte Ressourcen zuzugreifen. Diese Header enthalten Authentifizierungs- oder Autorisierungsinformationen, sodass Sie authentisierte Inhalte/Endpunkte crawlen können. Sie können Header direkt in der Befehlszeile angeben oder sie als Datei mit katana bereitstellen, um authentisiertes Crawlen durchzuführen.

Hinweis: Der Benutzer muss die Authentifizierung manuell durchführen und das Sitzungs-Cookie/den Header in einer Datei exportieren, um es mit katana zu verwenden.

-headers

Option zum Hinzufügen eines benutzerdefinierten Headers oder Cookies zur Anfrage.

Syntax von Headern in der HTTP-Spezifikation

Hier ein Beispiel zum Hinzufügen eines Cookies zur Anfrage:``` katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'

root@kitploit:~
Es ist auch möglich, Header oder Cookies als Datei bereitzustellen. Zum Beispiel:```
$ cat cookie.txt

Cookie: PHPSESSIONID=XXXXXXXXX
X-API-KEY: XXXXX
TOKEN=XX

Bitte geben Sie den zu übersetzenden Text an. Ihre Anfrage enthält nach "INPUT:" keinen Inhalt.``` katana -u https://tesla.com -H cookie.txt

root@kitploit:~
Es gibt weitere Optionen zur Konfiguration bei Bedarf, hier sind alle konfigurationsbezogenen CLI-Optionen -```console
katana -h config

Flags:
CONFIGURATION:
   -r, -resolvers string[]       list of custom resolver (file or comma separated)
   -d, -depth int                maximum depth to crawl (default 3)
   -jc, -js-crawl                enable endpoint parsing / crawling in javascript file
   -ct, -crawl-duration int      maximum duration to crawl the target for
   -kf, -known-files string      enable crawling of known files (all,robotstxt,sitemapxml)
   -mrs, -max-response-size int  maximum response size to read (default 9223372036854775807)
   -timeout int                  time to wait for request in seconds (default 10)
   -aff, -automatic-form-fill    enable automatic form filling (experimental)
   -fx, -form-extraction         enable extraction of form, input, textarea & select elements
   -retry int                    number of times to retry the request (default 1)
   -proxy string                 http/socks5 proxy to use
   -H, -headers string[]         custom header/cookie to include in request
   -config string                path to the katana configuration file
   -fc, -form-config string      path to custom form configuration file
   -flc, -field-config string    path to custom field configuration file
   -s, -strategy string          Visit strategy (depth-first, breadth-first) (default "depth-first")
   -iqp, -ignore-query-params    Ignore crawling same path with different query-param values
   -fsu, -filter-similar         filter crawling of similar looking URLs (e.g., /users/123 and /users/456)
   -fst, -filter-similar-threshold int  number of distinct values before a path position is treated as parameter (default 10)
   -mdp, -max-domain-pages int   maximum number of pages to crawl per domain (default unlimited)

Verbinden mit einer aktiven Browsersitzung

Katana kann auch eine Verbindung zu einer aktiven Browsersitzung herstellen, in der der Benutzer bereits angemeldet und authentifiziert ist, und diese zum Crawlen verwenden. Die einzige Voraussetzung hierfür ist, den Browser mit aktiviertem Remote-Debugging zu starten.

Hier ist ein Beispiel für das Starten des Chrome-Browsers mit aktiviertem Remote-Debugging und dessen Verwendung mit Katana -

Schritt 1) Suchen Sie zuerst den Pfad der Chrome-Ausführungsdatei

Schritt 2) Starten Sie Chrome mit aktiviertem Remote-Debugging und es wird eine WebSocket-URL zurückgegeben. Zum Beispiel können Sie auf MacOS Chrome mit aktiviertem Remote-Debugging mit folgendem Befehl starten -```console $ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222

DevTools listening on ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6

root@kitploit:~
> Melden Sie sich nun bei der Website an, die Sie crawlen möchten, und lassen Sie den Browser geöffnet.

**step 3) Nutzen Sie nun die Websocket-URL mit katana, um eine Verbindung zur aktiven Browser-Sitzung herzustellen und die Website zu crawlen.**```console
katana -headless -u https://tesla.com -cwu ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6 -no-incognito

Hinweis: Sie können die Option -cdd verwenden, um ein benutzerdefiniertes Chrome-Datenverzeichnis für Browserdaten und Cookies festzulegen. Dies speichert jedoch keine Sitzungsdaten, wenn das Cookie nur auf Session gesetzt ist oder nach einer bestimmten Zeit abläuft.

Filter

-field

[!WARNING] Veraltet: Verwenden Sie stattdessen -output-template. Das Feld-Flag wird aus Gründen der Abwärtkompatibilität weiterhin unterstützt.

Katana enthält integrierte Felder, mit denen die Ausgabe nach den gewünschten Informationen gefiltert werden kann. Die Option -f kann verwendet werden, um eines der verfügbaren Felder anzugeben.``` -f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,key,value,kv,dir,udir)

root@kitploit:~
Hier ist eine Tabelle mit Beispielen für jedes Feld und der erwarteten Ausgabe bei Verwendung - 

| FIELD   | BESCHREIBUNG                 | EXAMPLE                                                      |
| ------- | --------------------------- | ------------------------------------------------------------ |
| `url`   | URL-Endpunkt                | `https://admin.projectdiscovery.io/admin/login?user=admin&password=admin` |
| `qurl`  | URL inklusive Query-Parameter   | `https://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin` |
| `qpath` | Pfad inklusive Query-Parameter  | `/login?user=admin&password=admin`                           |
| `path`  | URL-Pfad                    | `https://admin.projectdiscovery.io/admin/login`              |
| `fqdn`  | Vollqualifizierter Domainname | `admin.projectdiscovery.io`                                  |
| `rdn`   | Root-Domainname            | `projectdiscovery.io`                                        |
| `rurl`  | Root-URL                    | `https://admin.projectdiscovery.io`                          |
| `ufile` | URL mit Datei               | `https://admin.projectdiscovery.io/login.js`                 |
| `file`  | Dateiname in URL             | `login.php`                                                  |
| `key`   | Parameternamen in URL       | `user,password`                                              |
| `value` | Parameterwerte in URL     | `admin,admin`                                                |
| `kv`    | Schlüssel=Werte in URL          | `user=admin&password=admin`                                  |
| `dir`   | URL-Verzeichnisname          | `/admin/`                                                    |
| `udir`  | URL mit Verzeichnis          | `https://admin.projectdiscovery.io/admin/`                   |

Hier ist ein Beispiel für die Verwendung der Feldoption, um nur alle URLs mit Query-Parameter anzuzeigen -```
katana -u https://tesla.com -f qurl -silent

https://shop.tesla.com/en_au?redirect=no
https://shop.tesla.com/en_nz?redirect=no
https://shop.tesla.com/product/men_s-raven-lightweight-zip-up-bomber-jacket?sku=1740250-00-A
https://shop.tesla.com/product/tesla-shop-gift-card?sku=1767247-00-A
https://shop.tesla.com/product/men_s-chill-crew-neck-sweatshirt?sku=1740176-00-A
https://www.tesla.com/about?redirect=no
https://www.tesla.com/about/legal?redirect=no
https://www.tesla.com/findus/list?redirect=no

Benutzerdefinierte Felder

Sie können benutzerdefinierte Felder erstellen, um mit Hilfe von Regex-Regeln bestimmte Informationen aus Seitenantworten zu extrahieren und zu speichern. Diese benutzerdefinierten Felder werden mit einer YAML-Konfigurationsdatei definiert und vom Standardort $HOME/.config/katana/field-config.yaml geladen. Alternativ können Sie die Option -flc verwenden, um eine benutzerdefinierte Feldkonfigurationsdatei von einem anderen Ort zu laden.

Hier ist ein Beispiel für ein benutzerdefiniertes Feld.```yaml

  • name: email type: regex regex:

    • '([a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+.[a-zA-Z0-9_-]+)'
    • '([a-zA-Z0-9+.-]+@[a-zA-Z0-9.-]+.[a-zA-Z0-9_-]+)'
  • name: phone type: regex regex:

    • '\d{3}-\d{8}|\d{4}-\d{7}'
root@kitploit:~
Bei der Definition benutzerdefinierter Felder werden die folgenden Attribute unterstützt:

- **name** (erforderlich)

> Der Wert des **name**-Attributs wird als Wert der CLI-Option `-field` verwendet.

- **type** (erforderlich)

> Der Typ des benutzerdefinierten Attributs, derzeit unterstützte Option - `regex`

- **part** (optional)

> Der Teil der Antwort, aus dem die Informationen extrahiert werden sollen. Der Standardwert ist `response`, der sowohl den Header als auch den Body umfasst. Andere mögliche Werte sind `header` und `body`.

- group (optional)

> Sie können dieses Attribut verwenden, um eine bestimmte übereinstimmende Gruppe im Regex auszuwählen, zum Beispiel: `group: 1`

#### Ausführen von katana mit benutzerdefiniertem Feld:```console
katana -u https://tesla.com -f email,phone

-store-field

Um die field-Option zu ergänzen, die zur Laufzeit zur Filterung der Ausgabe nützlich ist, gibt es die Option -sf, -store-fields. Diese funktioniert genau wie die field-Option, mit dem Unterschied, dass sie statt zu filtern alle Informationen auf der Festplatte im Verzeichnis katana_field speichert, sortiert nach Ziel-URL. Verwenden Sie -sfd oder -store-field-dir, um die Daten an einem anderen Ort zu speichern.``` katana -u https://tesla.com -sf key,fqdn,qurl -silent

root@kitploit:~
". Actually, the user message is just the instructions and then "INPUT:" followed by a blank? Maybe the chunk content was omitted? Let me read carefully: The user says "Translate the following Kitploit tool content. This is chunk 119 of 179 from a longer Markdown document... INPUT:" and then there is no text after that. Possibly due to a formatting error? But the instructions say "If the chunk starts mid-paragraph, continue translating from that point." But there is no content to translate. Since no content is provided, I should output nothing or perhaps state that no content was provided. However, rules say "Return ONLY the translated text. No preamble, no commentary." So if there's no input, I should output an empty string. But maybe the chunk content is truly empty? The assistant message should be empty. So I'll output nothing. But the instruction says "Return ONLY the translated text." If there's no text, just nothing.

Thus, the response is an empty string.```bash
$ ls katana_field/

https_www.tesla.com_fqdn.txt
https_www.tesla.com_key.txt
https_www.tesla.com_qurl.txt

Die Option -store-field kann nützlich sein, um Informationen zu sammeln, die zum Erstellen einer gezielten Wortliste für verschiedene Zwecke verwendet werden können, einschließlich, aber nicht beschränkt auf:

  • Identifizieren der am häufigsten verwendeten Parameter
  • Entdecken häufig verwendeter Pfade
  • Finden häufig verwendeter Dateien
  • Identifizieren verwandter oder unbekannter Subdomains

Katana Filter

-extension-match

Crawl-Ausgaben können leicht mit einer bestimmten Erweiterung abgeglichen werden, indem die Option -em verwendet wird, um sicherzustellen, dass nur Ausgaben angezeigt werden, die die angegebene Erweiterung enthalten.``` katana -u https://tesla.com -silent -em js,jsp,json

root@kitploit:~
Verwenden Sie den speziellen Wert `none`, um auch URLs ohne Dateierweiterung in die Ausgabe aufzunehmen:```
katana -u https://tesla.com -silent -em js,jsp,json,none

-extension-filter

Die Crawl-Ausgabe kann einfach nach einer bestimmten Erweiterung gefiltert werden, indem die Option -ef verwendet wird. Diese stellt sicher, dass alle URLs, die die angegebene Erweiterung enthalten, entfernt werden.``` katana -u https://tesla.com -silent -ef css,txt,md

root@kitploit:~
*`-no-default-ext-filter`*
---

Katana filtert standardmäßig mehrere Erweiterungen. Dies kann mit der Option `-ndef` deaktiviert werden.```
katana -u https://tesla.com -silent -ndef

-match-regex

Das -match-regex oder -mr Flag erlaubt es, die Ausgabe-URLs mit Hilfe von regulären Ausdrücken zu filtern. Bei Verwendung dieses Flags werden nur die URLs ausgegeben, die dem angegebenen regulären Ausdruck entsprechen.``` katana -u https://tesla.com -mr 'https://shop\.tesla\.com/*' -silent

root@kitploit:~
*`-filter-regex`*
---
Das `-filter-regex` oder `-fr` Flag ermöglicht es Ihnen, Ausgabe-URLs mithilfe von regulären Ausdrücken zu filtern. Bei Verwendung dieses Flags werden die URLs übersprungen, die dem angegebenen regulären Ausdruck entsprechen.```
katana -u https://tesla.com -fr 'https://www\.tesla\.com/*' -silent

Erweiterte Filterung

Katana unterstützt DSL-basierte Ausdrücke für erweiterte Matching- und Filterfunktionen:

  • Um Endpunkte mit einem 200-Statuscode zu matchen:```shell katana -u https://www.hackerone.com -mdc 'status_code == 200'
root@kitploit:~
- Um Endpunkte zu finden, die "default" enthalten und einen anderen Statuscode als 403 haben:```shell
katana -u https://www.hackerone.com -mdc 'contains(endpoint, "default") && status_code != 403'
  • Um Endpunkte mit PHP-Technologien abzugleichen:```shell katana -u https://www.hackerone.com -mdc 'contains(to_lower(technologies), "php")'
root@kitploit:~
- Um auf Cloudflare laufende Endpunkte herauszufiltern:```shell
katana -u https://www.hackerone.com -fdc 'contains(to_lower(technologies), "cloudflare")'

DSL-Funktionen können auf beliebige Schlüssel in der jsonl-Ausgabe angewendet werden. Weitere Informationen zu verfügbaren DSL-Funktionen finden Sie im dsl-Projekt.

Hier sind zusätzliche Filteroptionen -```console katana -h filter

Flags: FILTER: -mr, -match-regex string[] regex or list of regex to match on output url (cli, file) -fr, -filter-regex string[] regex or list of regex to filter on output url (cli, file) -f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) -sf, -store-field string field to store in per-host output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) -em, -extension-match string[] match output for given extension (eg, -em php,html,js,none) -ef, -extension-filter string[] filter output for given extension (eg, -ef png,css) -ndef, -no-default-ext-filter bool remove default extensions from the filter list -mdc, -match-condition string match response with dsl based condition -fdc, -filter-condition string filter response with dsl based condition -duf, -disable-unique-filter disable duplicate content filtering

root@kitploit:~
## Rate Limit

Es ist leicht, beim Crawlen blockiert oder gebannt zu werden, wenn man sich nicht an die Grenzen der Zielwebseiten hält. Katana bietet mehrere Optionen, um den Crawl so schnell oder langsam anzupassen, wie wir möchten.

*`-delay`*
-----

Option, um zwischen jeder neuen Anfrage, die Katana beim Crawlen stellt, eine Verzögerung in Sekunden einzufügen. Standardmäßig deaktiviert.```
katana -u https://tesla.com -delay 20

-concurrency

Option zur Steuerung der Anzahl von URLs pro Ziel, die gleichzeitig abgerufen werden.``` katana -u https://tesla.com -c 20

root@kitploit:~
*`-parallelism`*
-----
Option zur Definition der Anzahl gleichzeitig zu verarbeitender Ziele aus der Liste.```
katana -u https://tesla.com -p 20

-rate-limit

Maximale Anfragen pro Sekunde, global über alle Hosts angewendet.``` katana -u https://tesla.com -rl 100

root@kitploit:~
*`-rate-limit-minute`*
-----
Maximale Anfragen pro Minute, global auf alle Hosts angewendet.```
katana -u https://tesla.com -rlm 500

-host-rate-limit

Maximale Anfragen pro Sekunde pro Host. Jeder Host erhält seinen eigenen Rate-Limit-Bucket, sodass ein langsamer Host keine schnellen drosselt. Ersetzt das globale Rate-Limit, wenn gesetzt. Katana führt außerdem automatisch einen Backoff mit exponentiellem Delay und Jitter durch, wenn ein Host 429 oder 503 zurückgibt.```console katana -u https://tesla.com -hrl 50

root@kitploit:~
*`-host-rate-limit-minute`*
-----
Maximale Anfragen pro Minute pro Host.```console
katana -u https://tesla.com -hrlm 200

Hier sind alle langen / kurzen CLI-Optionen zur Ratenbegrenzungskontrolle -```console katana -h rate-limit

Flags: RATE-LIMIT: -c, -concurrency int number of concurrent fetchers to use (default 10) -p, -parallelism int number of concurrent inputs to process (default 10) -rd, -delay int request delay between each request in seconds -rl, -rate-limit int maximum requests to send per second (default 150) -rlm, -rate-limit-minute int maximum number of requests to send per minute -hrl, -host-rate-limit int maximum requests to send per second per host -hrlm, -host-rate-limit-minute int maximum number of requests to send per minute per host

root@kitploit:~
## Output

Katana unterstützt sowohl die Dateiausgabe im Klartextformat als auch JSON, das zusätzliche Informationen wie `source`, `tag` und `attribute` -Namen enthält, um die entdeckten Endpunkte zu korrelieren.

*`-output`*
---

Standardmäßig gibt Katana die gecrawlten Endpunkte im Klartextformat aus. Die Ergebnisse können mit der Option `-output` in eine Datei geschrieben werden.```console
katana -u https://example.com -no-scope -output example_endpoints.txt

-output-template

Die Option -output-template ermöglicht es Ihnen, das Ausgabeformat mithilfe einer Vorlage anzupassen, was Flexibilität bei der Definition der Ausgabestruktur bietet. Diese Option ersetzt das veraltete -field-Flag zum Filtern der Ausgabe. Anstatt sich auf vordefinierte Felder zu verlassen, können Sie direkt in der Befehlszeile eine benutzerdefinierte Vorlage angeben, um zu steuern, wie die extrahierten Daten dargestellt werden.

Beispiel für die Verwendung der Option -output-template:```sh katana -u https://example.com -output-template '{{email}} - {{url}}'

root@kitploit:~
In diesem Beispiel repräsentiert `email` ein [benutzerdefiniertes Feld](#custom-fields), das in der Quell-`url` gefundene E-Mail-Adressen extrahiert und anzeigt.

> [!NOTE]
> Wenn ein angegebenes Feld nicht existiert oder keinen Wert enthält, wird es einfach aus der Ausgabe weggelassen.

Diese Option kann die Ausgabe effektiv so strukturieren, dass sie am besten zu Ihrem Anwendungsfall passt und die Datenextraktion intuitiver und anpassbarer macht.

*`-jsonl`*
---```console
katana -u https://example.com -jsonl | jq .

Verwendung von CCM über die Befehlszeile

root@kitploit:~
pip install ccm

von der Befehlszeile aus.

Sie können das Python-Paket installieren mit:

root@kitploit:~
pip install ccm

Hinweis: Es gibt einige Änderungen zwischen den Hauptversionen v1 und v2. Bitte lesen Sie die Release-Notizen für Details zu den Änderungen.

BefehlBeschreibung
ccm setupCCM-Umgebung initialisieren
ccm verifyAktuelle Konfiguration validieren

Als Nächstes können Sie anpassen, welche Container-Engine verwendet werden soll:

root@kitploit:~
ccm config set engine docker

Dadurch wird die Standard-Container-Engine auf Docker gesetzt.

Das war's! Sie sind bereit, CCM zu verwenden.

CCM installieren```json { "timestamp": "2023-03-20T16:23:58.027559+05:30", "request": { "method": "GET", "endpoint": "https://example.com", "raw": "GET / HTTP/1.1\r\nHost: example.com\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\r\nAccept-Encoding: gzip\r\n\r\n" }, "response": { "status_code": 200, "headers": { "accept_ranges": "bytes", "expires": "Mon, 27 Mar 2023 10:53:58 GMT", "last_modified": "Thu, 17 Oct 2019 07:18:26 GMT", "content_type": "text/html; charset=UTF-8", "server": "ECS (dcb/7EA3)", "vary": "Accept-Encoding", "etag": ""3147526947"", "cache_control": "max-age=604800", "x_cache": "HIT", "date": "Mon, 20 Mar 2023 10:53:58 GMT", "age": "331239" }, "body": "\n\n\n Example Domain\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 2em;\n background-color: #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n div {\n margin: 0 auto;\n width: auto;\n }\n }\n \n\n\n\n

\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

<a href="https://www.iana.org/domains/example\">More information...

\n
\n\n\n", "technologies": [ "Azure", "Amazon ECS", "Amazon Web Services", "Docker", "Azure CDN" ], "raw": "HTTP/1.1 200 OK\r\nContent-Length: 1256\r\nAccept-Ranges: bytes\r\nAge: 331239\r\nCache-Control: max-age=604800\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 20 Mar 2023 10:53:58 GMT\r\nEtag: "3147526947"\r\nExpires: Mon, 27 Mar 2023 10:53:58 GMT\r\nLast-Modified: Thu, 17 Oct 2019 07:18:26 GMT\r\nServer: ECS (dcb/7EA3)\r\nVary: Accept-Encoding\r\nX-Cache: HIT\r\n\r\n\n\n\n Example Domain\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 2em;\n background-color: #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n div {\n margin: 0 auto;\n width: auto;\n }\n }\n \n\n\n\n
\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

<a href="https://www.iana.org/domains/example\">More information...

\n
\n\n\n" } }

root@kitploit:~
*`-store-response`*
----

Die Option `-store-response` ermöglicht es, alle Anfragen und Antworten von gecrawlten Endpunkten in eine Textdatei zu schreiben. Wenn diese Option verwendet wird, werden Textdateien mit der Anfrage und Antwort in das Verzeichnis **katana_response** geschrieben. Wenn Sie ein benutzerdefiniertes Verzeichnis angeben möchten, können Sie die Option `-store-response-dir` verwenden.```console
katana -u https://example.com -no-scope -store-response

No content provided to translate. Please provide the tool content chunk.```bash $ cat katana_response/index.txt

katana_response/example.com/327c3fda87ce286848a574982ddd0b7c7487f816.txt https://example.com (200 OK) katana_response/www.iana.org/bfc096e6dd93b993ca8918bf4c08fdc707a70723.txt http://www.iana.org/domains/reserved (200 OK)

root@kitploit:~
**Note:**

*`-store-response` Option wird im `-headless`-Modus nicht unterstützt.*

*`-list-output-fields`*
----

Das Flag `-list-output-fields` oder `-lof` zeigt alle verfügbaren Felder an, die im JSONL-Ausgabeformat verwendet werden können. Dies ist nützlich, um zu verstehen, welche Daten verfügbar sind, wenn benutzerdefinierte Ausgabevorlagen verwendet oder bestimmte Felder ausgeschlossen werden.```console
katana -lof

-exclude-output-fields

Mit dem Flag -exclude-output-fields oder -eof können Sie bestimmte Felder aus der JSONL-Ausgabe ausschließen. Dies ist nützlich, um die Ausgabegröße zu reduzieren oder sich durch Entfernen unerwünschter Felder auf bestimmte Daten zu konzentrieren.```console katana -u https://example.com -jsonl -eof raw,body

root@kitploit:~
Hier sind zusätzliche CLI-Optionen in Bezug auf die Ausgabe -```console
katana -h output

OUTPUT:
   -o, -output string                file to write output to
   -sr, -store-response              store http requests/responses
   -srd, -store-response-dir string  store http requests/responses to custom directory
   -lof, -list-output-fields         list available fields for jsonl output format
   -eof, -exclude-output-fields      exclude fields from jsonl output
   -j, -json                         write output in JSON Lines format
   -nc, -no-color                    disable output content coloring (ANSI escape codes)
   -silent                           display output only
   -v, -verbose                      display verbose output
   -version                          display project version

Katana als Bibliothek

katana kann als Bibliothek verwendet werden, indem eine Instanz des Option-Structs erstellt und mit denselben Optionen befüllt wird, die über die CLI angegeben werden könnten. Mit den Optionen können Sie crawlerOptions und damit einen standardmäßigen oder hybriden crawler erstellen. Die Methode crawler.Crawl sollte aufgerufen werden, um die Eingabe zu durchsuchen.```go package main

import ( "math"

root@kitploit:~
"github.com/projectdiscovery/gologger"
"github.com/projectdiscovery/katana/pkg/engine/standard"
"github.com/projectdiscovery/katana/pkg/output"
"github.com/projectdiscovery/katana/pkg/types"

)

func main() { options := &types.Options{ MaxDepth: 3, // Maximum depth to crawl FieldScope: "rdn", // Crawling Scope Field BodyReadSize: math.MaxInt, // Maximum response size to read Timeout: 10, // Timeout is the time to wait for request in seconds Concurrency: 10, // Concurrency is the number of concurrent crawling goroutines Parallelism: 10, // Parallelism is the number of urls processing goroutines Delay: 0, // Delay is the delay between each crawl requests in seconds RateLimit: 150, // Maximum requests to send per second Strategy: "depth-first", // Visit strategy (depth-first, breadth-first) OnResult: func(result output.Result) { // Callback function to execute for result gologger.Info().Msg(result.Request.URL) }, } crawlerOptions, err := types.NewCrawlerOptions(options) if err != nil { gologger.Fatal().Msg(err.Error()) } defer crawlerOptions.Close() crawler, err := standard.New(crawlerOptions) if err != nil { gologger.Fatal().Msg(err.Error()) } defer crawler.Close() var input = "https://www.hackerone.com" err = crawler.Crawl(input) if err != nil { gologger.Warning().Msgf("Could not crawl %s: %s", input, err.Error()) } }

root@kitploit:~
## Probleme melden & Funktionen vorschlagen

Um die Problemverfolgung zu erhalten und die Triage-Effizienz zu verbessern:

**Alle Berichte beginnen als [GitHub Discussions](https://github.com/projectdiscovery/katana/discussions)**

- **Fehlerberichte** → [Starten Sie eine Q&A-Diskussion](https://github.com/projectdiscovery/katana/discussions/new?category=q-a)
- **Funktionsanfragen** → [Starten Sie eine Ideen-Diskussion](https://github.com/projectdiscovery/katana/discussions/new?category=ideas)  
- **Fragen** → [Starten Sie eine Q&A-Diskussion](https://github.com/projectdiscovery/katana/discussions/new?category=q-a)

**Warum zuerst Diskussionen?**
- **Die Community kann helfen** bei schnellen Fragen und Fehlerbehebung
- **Bessere Triage** – bestätigte Fehler/Funktionen werden zu verfolgten Issues  
- **Sauberer Issue-Tracker** – Konzentration nur auf umsetzbare Punkte

Die Betreuer werden Diskussionen nach angemessener Überprüfung in Issues umwandeln, wenn dies angebracht ist.

--------

<div align="center">

katana wird mit ❤️ vom [projectdiscovery](https://projectdiscovery.io)-Team entwickelt und unter der [MIT-Lizenz](https://github.com/projectdiscovery/katana/blob/HEAD/LICENSE.md) vertrieben.


<a href="https://discord.gg/projectdiscovery"><img src="https://assets.kitploit.com/production/public/readmes/5826/d0624f94cb9ea6401be5a089bb694bc963c47fa82aa3b758c893e3b0bbfdf663.png" width="300" alt="Discord beitreten"></a>

</div>
Tool herunterladen
https://www.youtube.com/manifest.webmanifest
https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-watch-page-skeleton.css
https://www.youtube.com/s/desktop/4965577f/jsbin/web-animations-next-lite.min.vflset/web-animations-next-lite.min.js
https://www.youtube.com/s/desktop/4965577f/jsbin/custom-elements-es5-adapter.vflset/custom-elements-es5-adapter.js
https://www.youtube.com/s/desktop/4965577f/jsbin/webcomponents-sd.vflset/webcomponents-sd.js
https://www.youtube.com/s/desktop/4965577f/jsbin/intersection-observer.min.vflset/intersection-observer.min.js
https://www.youtube.com/s/desktop/4965577f/jsbin/scheduler.vflset/scheduler.js
https://www.youtube.com/s/desktop/4965577f/jsbin/www-i18n-constants-en_GB.vflset/www-i18n-constants.js
https://www.youtube.com/s/desktop/4965577f/jsbin/www-tampering.vflset/www-tampering.js
https://www.youtube.com/s/desktop/4965577f/jsbin/spf.vflset/spf.js
https://www.youtube.com/s/desktop/4965577f/jsbin/network.vflset/network.js
https://www.youtube.com/howyoutubeworks/
https://www.youtube.com/trends/
https://www.youtube.com/jobs/
https://www.youtube.com/kids/
StrategieBeschreibung
heuristic(Standard) Intelligentes Warten, das sich an das Seitenverhalten anpasst – wartet auf Ladeereignis, Netzwerkinaktivität und DOM-Stabilität
loadWartet nur auf das Ladeereignis des Browsers
domcontentloadedWartet auf das DOMContentLoaded-Ereignis plus zusätzliche Zeit (konfigurierbar über -dwt) für JavaScript-Rendering
networkidleWartet, bis die Netzwerkaktivität stoppt
noneKein Warten – kehrt sofort nach Navigationsstart zurück
katana -u https://tesla.com -headless -pls domcontentloaded
BetriebssystemSpeicherort der Chromium-AusführungsdateiSpeicherort der Google Chrome-Ausführungsdatei
Windows (64-bit)C:\Program Files (x86)\Google\Chromium\Application\chrome.exeC:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Windows (32-bit)C:\Program Files\Google\Chromium\Application\chrome.exeC:\Program Files\Google\Chrome\Application\chrome.exe
macOS/Applications/Chromium.app/Contents/MacOS/Chromium/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Linux/usr/bin/chromium/usr/bin/google-chrome
ccm build --helpHilfe für den Build-Befehl anzeigen
ccm updateCCM auf die neueste Version aktualisieren