Funktionen • Installation • Verwendung • Umfang • Konfiguration • Filter • Discord beitreten
Für die erfolgreiche Installation von Katana ist Go 1.18 erforderlich. Führen Sie zur Installation einfach den folgenden Befehl aus oder laden Sie die vorkompilierte Binärdatei von der Release-Seite herunter.
CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest
Weitere Optionen zum Installieren/Ausführen von Katana-
So installieren/aktualisieren Sie Docker auf das neueste Tag:
docker pull projectdiscovery/katana:latest
Um Katana im Standardmodus mit Docker auszuführen:
docker run projectdiscovery/katana:latest -u https://tesla.com
Um Katana im Headless-Modus mit Docker auszuführen:
docker run projectdiscovery/katana:latest -u https://tesla.com -system-chrome -headless
Es wird empfohlen, die folgenden Voraussetzungen zu installieren:
sudo apt update
sudo snap refresh
sudo apt install zip curl wget git
sudo snap install golang --classic
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c ' echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list '
sudo apt update
sudo apt install google-chrome-stable
Katana installieren -
go install github.com/projectdiscovery/katana/cmd/katana@latest
katana -h
Dadurch wird die Hilfe für das Tool angezeigt. Hier sind alle unterstützten Schalter.
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 9223372036854775807)
-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
-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
-tlsi, -tls-impersonate enable experimental client hello (ja3) tls randomization
-dr, -disable-redirects disable following redirects (default false)
DEBUG:
-health-check, -hc run diagnostic check up
-elog, -error-log string file to write sent requests error log
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
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)
-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)
-ef, -extension-filter string[] filter output for given extension (eg, -ef png,css)
-mdc, -match-condition string match response with dsl based condition
-fdc, -filter-condition string filter response with dsl based condition
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
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
-sr, -store-response store http requests/responses
-srd, -store-response-dir string store http requests/responses to custom directory
-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
-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 erfordert zum Crawlen eine URL oder einen Endpunkt und akzeptiert einzelne oder mehrere Eingaben.
Die Eingabe-URL kann mit der Option -u
bereitgestellt werden, und mehrere Werte können mit der durch Kommas getrennten Eingabe bereitgestellt werden. Ebenso wird die Dateieingabe mit der Option -list
unterstützt und zusätzlich wird auch die Eingabe über eine Pipeline (stdin) unterstützt.
katana -u https://tesla.com
katana -u https://tesla.com,https://google.com
$ cat url_list.txt
https://tesla.com
https://google.com
katana -list url_list.txt
echo https://tesla.com | katana
cat domains | httpx | katana
Beispiel für das Laufen eines Katana -
katana -u https://youtube.com
__ __
/ /_____ _/ /____ ____ ___ _
/ '_/ _ / __/ _ / _ / _ /
/_/_\_,_/__/_,_/_//_/_,_/ v0.0.1
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
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/
Die Standard-Crawling-Modalität nutzt die standardmäßige Go-HTTP-Bibliothek unter der Haube, um HTTP-Anfragen/-Antworten zu verarbeiten. Diese Modalität ist viel schneller, da kein Browser-Overhead entsteht. Dennoch wird der HTTP-Antwortkörper so analysiert, wie er ist, ohne Javascript oder DOM-Rendering, ohne potenziell fehlende Post-Dom-gerenderte Endpunkte oder asynchrone Endpunktaufrufe, die in komplexen Webanwendungen beispielsweise abhängig von browserspezifischen Ereignissen auftreten können.
Der Headless-Modus bindet interne Headless-Aufrufe ein, um HTTP-Anfragen/-Antworten direkt im Browserkontext zu verarbeiten. Dies bietet zwei Vorteile:
Headless Crawling ist optional und kann mit der Option -headless
aktiviert werden.
Hier sind weitere Headless-CLI-Optionen:
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
-no-sandbox
Führt den Headless-Chrome-Browser ohne Sandbox- Option aus, was bei der Ausführung als Root-Benutzer nützlich ist.
katana -u https://tesla.com -headless -no-sandbox
-no-incognito
Führt den kopflosen Chrome-Browser ohne Inkognito-Modus aus, nützlich bei Verwendung des lokalen Browsers.
katana -u https://tesla.com -headless -no-incognito
-headless-options
Beim Crawlen im Headless-Modus können zusätzliche Chrome-Optionen mit -headless-options
angegeben werden, zum Beispiel -
katana -u https://tesla.com -headless -system-chrome -headless-options --disable-gpu,proxy-server=http://127.0.0.1:8080
Das Crawlen kann endlos sein, wenn es keinen Bereich gibt, da ein solches Katana über mehrere Unterstützungen zum Definieren des Crawl-Bereichs verfügt.
-field-scope
Die praktischste Option zum Definieren des Bereichs mit vordefiniertem Feldnamen, rdn
die Standardoption für den Feldbereich ist.
rdn
– Crawling beschränkt sich auf den Stammdomänennamen und alle Unterdomänen (z. B. *example.com
) (Standard)fqdn
– Crawling beschränkt auf eine bestimmte Unterdomäne (z. B. www.example.com
oder api.example.com
)dn
– Crawling auf Domänennamen-Schlüsselwort beschränkt (z. B. example
) katana -u https://tesla.com -fs dn
-crawl-scope
Für eine erweiterte Bereichskontrolle kann die Option -cs
verwendet werden, die Regex- Unterstützung bietet.
katana -u https://tesla.com -cs login
Für mehrere Regeln im Geltungsbereich kann eine Dateieingabe mit mehrzeiliger Zeichenfolge/Regex übergeben werden.
$ cat in_scope.txt
login/
admin/
app/
wordpress/
katana -u https://tesla.com -cs in_scope.txt
-crawl-out-scope
Um zu definieren, was nicht gecrawlt werden soll, kann die Option -cos
verwendet werden und unterstützt auch die Regex- Eingabe.
katana -u https://tesla.com -cos logout
Für mehrere außerhalb des Gültigkeitsbereichs liegende Regeln kann eine Dateieingabe mit mehrzeiliger Zeichenfolge/Regex übergeben werden.
$ cat out_of_scope.txt
/logout
/log_out
katana -u https://tesla.com -cos out_of_scope.txt
-no-scope
Katana hat standardmäßig den Gültigkeitsbereich *.domain
, um diese Option -ns
zu deaktivieren und auch das Internet zu crawlen.
katana -u https://tesla.com -ns
-display-out-scope
Wenn die Bereichsoption verwendet wird, gilt dies standardmäßig auch für die als Ausgabe anzuzeigenden Links, da solche externen URLs standardmäßig ausgeschlossen und dieses Verhalten überschrieben werden. Die Option -do
kann verwendet werden, um alle externen URLs anzuzeigen, die in Zielen vorhanden sind bereichsbezogene URL/Endpunkt.
katana -u https://tesla.com -do
Hier sind alle CLI-Optionen für die Bereichssteuerung:
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
Katana verfügt über mehrere Optionen, um den Crawl nach unseren Wünschen zu konfigurieren und zu steuern.
-depth
Option zum Definieren der depth
, mit der den URLs beim Crawlen gefolgt werden soll. Je tiefer, desto mehr Endpunkte werden gecrawlt + Zeit für das Crawlen.
katana -u https://tesla.com -d 5
-js-crawl
Option zum Aktivieren der Analyse von JavaScript-Dateien und zum Crawlen der in JavaScript-Dateien erkannten Endpunkte, standardmäßig deaktiviert.
katana -u https://tesla.com -jc
-crawl-duration
Option zur vordefinierten Crawling-Dauer, standardmäßig deaktiviert.
katana -u https://tesla.com -ct 2
-known-files
Option zum Aktivieren des Crawlens robots.txt
und sitemap.xml
Dateien, standardmäßig deaktiviert.
katana -u https://tesla.com -kf robotstxt,sitemapxml
-automatic-form-fill
Option zum Aktivieren des automatischen Ausfüllens von Formularen für bekannte/unbekannte Felder. Bekannte Feldwerte können nach Bedarf angepasst werden, indem die Formularkonfigurationsdatei 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
Beim authentifizierten Crawling werden benutzerdefinierte Header oder Cookies in HTTP-Anfragen eingefügt, um auf geschützte Ressourcen zuzugreifen. Diese Header stellen Authentifizierungs- oder Autorisierungsinformationen bereit, sodass Sie authentifizierte Inhalte/Endpunkte crawlen können. Sie können Header direkt in der Befehlszeile angeben oder sie als Datei mit Katana bereitstellen, um authentifiziertes Crawlen durchzuführen.
Hinweis : Der Benutzer muss die Authentifizierung manuell durchführen und das Sitzungscookie/den Header in eine 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 ist ein Beispiel für das Hinzufügen eines Cookies zur Anfrage:
katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'
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
katana -u https://tesla.com -H cookie.txt
Bei Bedarf können weitere Optionen konfiguriert werden. Hier finden Sie alle konfigurationsbezogenen CLI-Optionen:
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")
Katana kann auch eine Verbindung zu einer aktiven Browsersitzung herstellen, bei der der Benutzer bereits angemeldet und authentifiziert ist. und benutze es zum Krabbeln. 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 die Verwendung mit Katana:
Schritt 1) Suchen Sie zunächst den Pfad der ausführbaren Chrome-Datei
Betriebssystem | Speicherort der ausführbaren Chromium-Datei | Speicherort der ausführbaren Google Chrome-Datei |
---|---|---|
Windows (64-Bit) | C:Program Files (x86)GoogleChromiumApplicationchrome.exe | C:Program Files (x86)GoogleChromeApplicationchrome.exe |
Windows (32-Bit) | C:Program FilesGoogleChromiumApplicationchrome.exe | C:Program FilesGoogleChromeApplicationchrome.exe |
macOS | /Applications/Chromium.app/Contents/MacOS/Chromium | /Applications/Google Chrome.app/Contents/MacOS/Google Chrome |
Linux | /usr/bin/chromium | /usr/bin/google-chrome |
Schritt 2) Starten Sie Chrome mit aktiviertem Remote-Debugging und es wird die Websocker-URL zurückgegeben. Unter MacOS können Sie Chrome beispielsweise mit aktiviertem Remote-Debugging mit dem folgenden Befehl starten :
$ /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
Melden Sie sich nun bei der Website an, die Sie crawlen möchten, und lassen Sie den Browser geöffnet.
Schritt 3) Verwenden Sie nun die Websocket-URL mit Katana, um eine Verbindung zur aktiven Browsersitzung herzustellen und die Website zu crawlen
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 zum Speichern von Browserdaten und Cookies anzugeben. Dadurch werden jedoch keine Sitzungsdaten gespeichert, wenn das Cookie auf „NurSession
“ eingestellt ist oder nach einer bestimmten Zeit abläuft.
-field
Katana verfügt über integrierte Felder, mit denen die Ausgabe nach den gewünschten Informationen gefiltert werden kann. Mit der Option -f
können Sie jedes der verfügbaren Felder angeben.
-f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,key,value,kv,dir,udir)
Hier ist eine Tabelle mit Beispielen für jedes Feld und der erwarteten Ausgabe bei Verwendung:
FELD | BESCHREIBUNG | BEISPIEL |
---|---|---|
url | URL-Endpunkt | https://admin.projectdiscovery.io/admin/login?user=admin&password=admin |
qurl | URL inklusive Abfrageparameter | https://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin |
qpath | Pfad inklusive Abfrageparameter | /login?user=admin&password=admin |
path | URL-Pfad | https://admin.projectdiscovery.io/admin/login |
fqdn | Vollqualifizierter Domainname | admin.projectdiscovery.io |
rdn | Stammdomänenname | 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 | Parameterschlüssel in der URL | user,password |
value | Parameterwerte in der URL | admin,admin |
kv | Schlüssel=Werte in der 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 darin enthaltenen Abfrageparametern 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
Sie können benutzerdefinierte Felder erstellen, um mithilfe von Regex-Regeln bestimmte Informationen aus Seitenantworten zu extrahieren und zu speichern. Diese benutzerdefinierten Felder werden mithilfe einer YAML-Konfigurationsdatei definiert und vom Standardspeicherort unter $HOME/.config/katana/field-config.yaml
geladen. Alternativ können Sie die Option -flc
verwenden, um eine benutzerdefinierte Feldkonfigurationsdatei von einem anderen Speicherort zu laden. Hier ist ein Beispiel für ein benutzerdefiniertes Feld.
- 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} '
Beim Definieren benutzerdefinierter Felder werden folgende Attribute unterstützt:
Der Wert des Namensattributs wird als
-field
CLI-Optionswert verwendet.
Der Typ des benutzerdefinierten Attributs, derzeit unterstützte Option –
regex
Der Teil der Antwort, aus dem die Informationen extrahiert werden sollen. Der Standardwert ist
response
, der sowohl den Header als auch den Text enthält. Andere mögliche Werte sindheader
undbody
.
Sie können dieses Attribut verwenden, um eine bestimmte übereinstimmende Gruppe in Regex auszuwählen, zum Beispiel:
group: 1
katana -u https://tesla.com -f email,phone
-store-field
Als Ergänzung zur field
, die zum Filtern der Ausgabe zur Laufzeit nützlich ist, gibt es die Option -sf, -store-fields
, die genau wie die Feldoption funktioniert, außer dass sie statt einer Filterung alle Informationen auf der Festplatte im Verzeichnis katana_field
sortiert nach Ziel-URL speichert . Verwenden Sie -sfd
oder -store-field-dir
um Daten an einem anderen Ort zu speichern.
katana -u https://tesla.com -sf key,fqdn,qurl -silent
$ 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 zum Sammeln von Informationen zum Erstellen einer gezielten Wortliste für verschiedene Zwecke nützlich sein, einschließlich, aber nicht beschränkt auf:
-extension-match
Die Crawl-Ausgabe kann mit der Option -em
einfach einer bestimmten Erweiterung zugeordnet werden, um sicherzustellen, dass nur die Ausgabe angezeigt wird, die eine bestimmte Erweiterung enthält.
katana -u https://tesla.com -silent -em js,jsp,json
-extension-filter
Die Crawl-Ausgabe kann mit der Option -ef
einfach nach einer bestimmten Erweiterung gefiltert werden, wodurch sichergestellt wird, dass alle URLs entfernt werden, die eine bestimmte Erweiterung enthalten.
katana -u https://tesla.com -silent -ef css,txt,md
-match-regex
Mit dem Flag -match-regex
oder -mr
können Sie Ausgabe-URLs mithilfe regulärer Ausdrücke filtern. Bei Verwendung dieses Flags werden in der Ausgabe nur URLs gedruckt, die dem angegebenen regulären Ausdruck entsprechen.
katana -u https://tesla.com -mr 'https://shop.tesla.com/*' -silent
-filter-regex
Mit dem Flag -filter-regex
oder -fr
können Sie Ausgabe-URLs mithilfe regulärer Ausdrücke 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
Katana unterstützt DSL-basierte Ausdrücke für erweiterte Matching- und Filterfunktionen:
katana -u https://www.hackerone.com -mdc ' status_code == 200 '
katana -u https://www.hackerone.com -mdc ' contains(endpoint, "default") && status_code != 403 '
katana -u https://www.hackerone.com -mdc ' contains(to_lower(technologies), "php") '
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 den verfügbaren DSL-Funktionen finden Sie im DSL-Projekt.
Hier sind zusätzliche Filteroptionen -