Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
katana — Uma estrutura de crawling e spidering de próxima geração. | Kitploit
Ferramentas/GitHubGitHub/projectdiscovery/katana
ReconhecimentoColeta de InformaçõesSegurança WebTestes de PenetraçãoRastreador
GitHubprojectdiscovery/katana

katana

Uma estrutura de crawling e spidering de próxima geração.

Ver Repositório
17.3k1.2khá 4 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

katana

Um framework de crawling e spidering de próxima geração

Recursos • Instalação • Uso • Escopo • Configuração • Filtros • Entre no Discord

Recursos

image

  • Crawling web rápido e totalmente configurável
  • Modo Padrão e Headless
  • Parsing / crawling de JavaScript
  • Preenchimento automático de formulários personalizável
  • Controle de escopo - Campo pré-configurado / Regex
  • Base de conhecimento - Classificação de tipo de página / formulário por ML (modelo baixado automaticamente)
  • Saída personalizável - Campos pré-configurados
  • ENTRADA - STDIN, URL e LISTA
  • SAÍDA - STDOUT, ARQUIVO e JSON

Instalação

katana requer Go 1.26+ para instalar com sucesso. Se você encontrar problemas de instalação, recomendamos tentar com a versão mais recente disponível do Go, pois a versão mínima necessária pode ter mudado. Execute o comando abaixo ou baixe um binário pré-compilado da página de releases.```console CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest

root@kitploit:~
**Mais opções para instalar / executar o katana-**

<details>
  <summary>Docker</summary>

> Para instalar / atualizar o docker para a tag latest -```sh
docker pull projectdiscovery/katana:latest

Para executar o katana no modo padrão usando o docker -```sh docker run projectdiscovery/katana:latest -u https://tesla.com

root@kitploit:~
> Para executar katana em modo headless usando docker -```sh
docker run projectdiscovery/katana:latest -u https://tesla.com -system-chrome -headless
Ubuntu

É recomendado instalar os seguintes pré-requisitos -```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:~
> install katana -```sh
go install github.com/projectdiscovery/katana/cmd/katana@latest

Uso```console

katana -h

root@kitploit:~
Isso exibirá ajuda para a ferramenta. Aqui estão todas as opções que ela suporta.```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

Executando Katana

Entrada para katana

katana requer url ou endpoint para crawlear e aceita entradas únicas ou múltiplas.

A URL de entrada pode ser fornecida usando a opção -u, e múltiplos valores podem ser fornecidos usando entrada separada por vírgula; da mesma forma, a entrada file é suportada usando a opção -list e adicionalmente a entrada via pipe (stdin) também é suportada.

Entrada de URL```sh

katana -u https://tesla.com

root@kitploit:~
#### Entrada de múltiplas URLs (separadas por vírgula)```sh
katana -u https://tesla.com,https://google.com

Entrada de Lista```bash

$ cat url_list.txt

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

root@kitploit:~
Extrair um arquivo .bin do GENEActiv sem precisar do software GENEActiv PC ou de uma conexão USB (via conversão de arquivo)

Ações Disponíveis:

- Extrair dados de arquivos .bin do GENEActiv, incluindo:
  - Recuperar campos de metadados (ex., Versão do Firmware do Dispositivo, Data de Extração, Dados de Calibração)
  - Analisar e gerar dados no formato **Pandas DataFrame**
  - Gerar valores de contagem **ActiGraph count** usando o pacote **GGIR** comumente utilizado
  - Relatar erros de dados, destacando anomalias (ex., temperaturas excessivas, tempo de não uso)
  - Saída autodocumentada via resumo em markdown (saída opcional)"```
katana -list url_list.txt

STDIN (Entrada via pipe)```sh

echo https://tesla.com | katana

root@kitploit:~
O **conceito central** é que você pode rapidamente```sh
cat domains | httpx | katana

Exemplo de execução do 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:~
## Modo de Rastreamento

### Modo Padrão

A modalidade de rastreamento padrão utiliza a biblioteca http padrão do Go nos bastidores para lidar com requisições/respostas HTTP. Esta modalidade é muito mais rápida, pois não tem a sobrecarga do navegador. Ainda assim, analisa o corpo das respostas HTTP como ele é, sem qualquer renderização de JavaScript ou DOM, potencialmente perdendo endpoints renderizados pós-DOM ou chamadas assíncronas de endpoints que podem ocorrer em aplicações web complexas dependendo, por exemplo, de eventos específicos do navegador.

### Modo Headless

O modo headless conecta chamadas headless internas para lidar com requisições/respostas HTTP diretamente no contexto do navegador. Isso oferece duas vantagens:
- A impressão digital HTTP (TLS e user agent) identifica totalmente o cliente como um navegador legítimo
- Melhor cobertura, pois os endpoints são descobertos analisando a resposta bruta padrão, como na modalidade anterior, e também a renderizada pelo navegador com JavaScript ativado.

O rastreamento headless é opcional e pode ser ativado usando a opção `-headless`.

Aqui estão outras opções de CLI headless -```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

Executa o navegador Chrome headless com a opção no-sandbox, útil ao executar como usuário root.```console katana -u https://tesla.com -headless -no-sandbox

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

Executa o navegador Chrome em modo headless sem o modo anônimo, útil ao utilizar o navegador local.```console
katana -u https://tesla.com -headless -no-incognito

Para preservar cookies e outros dados de sessão do navegador entre execuções, combine -no-incognito com -chrome-data-dir para que o Katana reutilize o diretório de perfil do Chrome escolhido em vez de um temporário isolado.```console katana -u https://tesla.com -headless -no-incognito -chrome-data-dir /tmp/katana-profile

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

Quando estiver realizando crawling em modo headless, opções adicionais do Chrome podem ser especificadas usando `-headless-options`, por exemplo -```console
katana -u https://tesla.com -headless -system-chrome -headless-options --disable-gpu,proxy-server=http://127.0.0.1:8080

-page-load-strategy

Controla como o katana aguarda o carregamento das páginas no modo headless. Diferentes estratégias são úteis para diferentes tipos de aplicações web:

root@kitploit:~
A estratégia `domcontentloaded` é particularmente útil para Single Page Applications (SPAs) que nunca completam o carregamento totalmente devido a pedidos contínuos em segundo plano (websockets, polling, etc.).

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

Quando se utiliza a estratégia de carregamento de página `domcontentloaded`, esta opção especifica quantos segundos esperar após o evento DOMContentLoaded ser acionado. Isso dá tempo para o JavaScript renderizar elementos interativos. O padrão é 5 segundos.```console
katana -u https://tesla.com -headless -pls domcontentloaded -dwt 10

Resolução de Captcha

Katana suporta detecção e resolução automática de captcha durante a navegação headless. Quando uma página de captcha é encontrada, o katana identifica o provedor de captcha, resolve-o através de um serviço externo e continua a navegação.

Tipos de captcha suportados: reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile, hCaptcha

-captcha-solver-provider

Opção para especificar o provedor de resolução de captcha. Atualmente suportado: capsolver.

-captcha-solver-key

Chave de API para o provedor de resolução de captcha.```console katana -u https://example.com -headless -csp capsolver -csk YOUR_API_KEY

root@kitploit:~
O provedor e a chave também podem ser definidos via variáveis de ambiente:```console
export CAPTCHA_SOLVER_PROVIDER=capsolver
export CAPTCHA_SOLVER_KEY=YOUR_API_KEY
katana -u https://example.com -headless

Controle de Escopo

O rastreamento pode ser interminável se não for escopado, por isso o katana vem com múltiplos suportes para definir o escopo do rastreamento.

-field-scope

Opção mais prática para definir escopo com nome de campo predefinido, sendo rdn a opção padrão para escopo de campo.

  • rdn - rastreamento escopado ao nome de domínio raiz e todos os subdomínios (ex.: *exemplo.com) (padrão)
  • fqdn - rastreamento escopado ao subdomínio fornecido (ex.: www.exemplo.com ou api.exemplo.com)
  • dn - rastreamento escopado à palavra-chave do nome de domínio (ex.: exemplo)```console katana -u https://tesla.com -fs dn
root@kitploit:~
*`-crawl-scope`*
------

Para controle avançado de escopo, a opção `-cs` pode ser usada que vem com suporte a **regex**.```console
katana -u https://tesla.com -cs login

Para múltiplas regras no escopo, entrada de arquivo com string multilinha / regex pode ser passada.```bash $ cat in_scope.txt

login/ admin/ app/ wordpress/

root@kitploit:~
### Instantâneos Extraídos

![ext](https://raw.githubusercontent.com/projectdiscovery/katana/HEAD/assets/image/ext.png)  
Os instantâneos extraídos estarão no diretório "VOL-[volume-id]-[datetime]" numerados cronologicamente.  
Formato de data e hora: yyyyMMddHHmm  
Para analisar com precisão os atributos de tempo, exporte no seu fuso horário local.

### Relatórios

![rpt](https://raw.githubusercontent.com/projectdiscovery/katana/HEAD/assets/image/rpt.png)  
Algumas informações do volume geradas automaticamente.

### Automação de Análise

Ferramentas WinMD: [WinMDCollect](https://github.com/projectdiscovery/katana/blob/HEAD/tools/WinMDCollect)  
Ferramentas de análise de saída WinMD (scripts Bash): [OutputAnalysis](https://github.com/projectdiscovery/katana/blob/HEAD/tools/OutputAnalysis)```console
katana -u https://tesla.com -cs in_scope.txt

-crawl-out-scope

Para definir o que não rastrear, a opção -cos pode ser usada e também suporta entrada regex.```console katana -u https://tesla.com -cos logout

root@kitploit:~
Para múltiplas regras fora do escopo, entrada de arquivo com string multilinha / regex pode ser passada.```bash
$ cat out_of_scope.txt

/logout
/log_out

(empty)```console katana -u https://tesla.com -cos out_of_scope.txt

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

Katana tem como escopo padrão `*.domain`; para desabilitar isso, a opção `-ns` pode ser usada e também para rastrear a internet.```console
katana -u https://tesla.com -ns

-display-out-scope

Por padrão, quando a opção de escopo é usada, ela também se aplica aos links exibidos como saída, de modo que URLs externas são excluídas por padrão e para sobrescrever esse comportamento, a opção -do pode ser usada para exibir todas as URLs externas presentes nos URLs / Endpoints com escopo de destino.``` katana -u https://tesla.com -do

root@kitploit:~
Aqui estão todas as opções de CLI para o controle de escopo -```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

Configuração do Crawler

Katana vem com várias opções para configurar e controlar o crawl da forma que desejamos.

-depth

Opção para definir a profundidade para seguir as URLs durante o crawl, quanto maior a profundidade, maior o número de endpoints sendo rastreados + tempo de crawl.``` katana -u https://tesla.com -d 5

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

Opção para ativar a análise de arquivos JavaScript + rastreamento dos endpoints descobertos em arquivos JavaScript, desabilitada por padrão.```
katana -u https://tesla.com -jc

-crawl-duration

Opção para duração de crawling predefinida, desativada por padrão.``` katana -u https://tesla.com -ct 2

root@kitploit:~
*`-known-files`*
----
Opção para ativar a varredura dos arquivos `robots.txt` e `sitemap.xml`, desativada por padrão.```
katana -u https://tesla.com -kf robotstxt,sitemapxml

-automatic-form-fill

Opção para habilitar o preenchimento automático de formulários para campos conhecidos / desconhecidos, os valores de campos conhecidos podem ser personalizados conforme necessário, atualizando o arquivo de configuração do formulário em $HOME/.config/katana/form-config.yaml.

O preenchimento automático de formulários é um recurso experimental.``` katana -u https://tesla.com -aff

root@kitploit:~
Os valores de configuração de formulário suportam funções auxiliares DSL para geração dinâmica de dados. Todas as funções `rand_*` da biblioteca [projectdiscovery/dsl](https://github.com/projectdiscovery/dsl) estão disponíveis:```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

Opção para filtrar a varredura de URLs de aparência semelhante, normalizando segmentos de caminho variáveis. Isto detecta IDs, UUIDs, hashes, datas e outros valores dinâmicos, e também aprende padrões repetidos em tempo de execução. Por exemplo, /users/123 e /users/456 são tratados como o mesmo endpoint.``` katana -u https://tesla.com -fsu

root@kitploit:~
O limite de promoção (quantos valores distintos em uma posição de caminho antes de ser tratado como parâmetro) pode ser ajustado com `-fst`. Valores mais baixos são mais agressivos (menos URLs rastreados), valores mais altos são mais permissivos. O padrão é `10`.```
katana -u https://tesla.com -fsu -fst 5

-max-domain-pages

Opção para limitar o número de páginas rastreadas por domínio. Impede que qualquer domínio único consuma todo o orçamento de rastreamento, útil para sites grandes ou proteção contra armadilhas de rastreador.``` katana -u https://tesla.com -mdp 100

root@kitploit:~
## Classificação da Base de Conhecimento

Katana pode enriquecer resultados de rastreamento com uma **base de conhecimento** — classificação por aprendizado de máquina de cada página rastreada, alimentada por [dit](https://github.com/HappyHackingSpace/dit). Quando ativada, cada resposta é classificada por **tipo de página** (ex.: `login`, `error`, `captcha`, `parked`) e quaisquer formulários na página são identificados, com o resultado anexado ao campo `knowledgebase` da saída JSONL. Isso funciona em **todos os mecanismos** (padrão e headless).

> **Nota**: O modelo de classificação é **baixado automaticamente** na primeira utilização para `~/.dit/model.json` (do [Hugging Face](https://huggingface.co/datasets/happyhackingspace/dit)). Isso é um custo único, por máquina — execuções subsequentes reutilizam o modelo em cache. Nenhuma instalação manual de `dit` é necessária.

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

Ativa a classificação da base de conhecimento. A classificação de tipo de página e de formulários é adicionada ao campo `knowledgebase` de cada resultado.```console
katana -u https://example.com -kb -jsonl
  • Nilesh descobriu esta vulnerabilidade durante um teste de penetração de um contrato inteligente, onde a função de transferência de fundos do contrato inteligente verificava apenas a condição de igualdade e não a condição de limite inferior, resultando em uma transação que permitia a um atacante transferir fundos mesmo que o saldo fosse inferior ao montante da transferência.```json { "timestamp": "...", "request": { "...": "..." }, "response": { "...": "...", "knowledgebase": { "PageType": "login", "Forms": [{ "type": "login", "fields": { "username": "username or email", "password": "password" } }] } } }
root@kitploit:~
*`-filter-page-type`*
----

Filtrar resultados apenas para o(s) tipo(s) de página fornecido(s). Ativar isso implica `-kb` (o classificador é inicializado automaticamente).```console
katana -u https://example.com -fpt login,error

-kb-secrets

Ative o extrator de segredos na base de conhecimento, revelando segredos detectados (chaves de API, tokens, etc.) sob a chave secrets. Adicione -kb-validate-secrets para validar segredos detectados contra seu provedor — note que isso envia chamadas de API ao vivo.```console katana -u https://example.com -kb-secrets

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

Habilita o extrator de endpoints, que classifica requisições como REST, GraphQL, SOAP ou XHR sob a chave `endpoints`.```console
katana -u https://example.com -kb-endpoints

Rastreamento Autenticado

O rastreamento autenticado envolve a inclusão de cabeçalhos ou cookies personalizados em requisições HTTP para acessar recursos protegidos. Esses cabeçalhos fornecem informações de autenticação ou autorização, permitindo que você rastreie conteúdos/endpoints autenticados. Você pode especificar cabeçalhos diretamente na linha de comando ou fornecê-los como um arquivo com o katana para realizar o rastreamento autenticado.

Nota: O usuário precisa realizar manualmente a autenticação e exportar o cookie/sessão ou cabeçalho para um arquivo para usar com o katana.

-headers

Opção para adicionar um cabeçalho ou cookie personalizado à requisição.

Sintaxe dos cabeçalhos na especificação HTTP

Aqui está um exemplo de adição de um cookie à requisição:``` katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'

root@kitploit:~
Também é possível fornecer cabeçalhos ou cookies como um arquivo. Por exemplo:```
$ cat cookie.txt

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

Netexec

Netexec GitHub release (latest by date) GitHub issues GitHub pull requests

Netexec é um fork comunitário da ferramenta CrackMapExec obsoleta, projetado para pentesting e red teaming. Ele fornece poderosas capacidades de enumeração e exploração de rede.

Principais Características

  • Suporte a Protocolos: SMB, MSSQL, WinRM, LDAP e mais
  • Spray de Credenciais: Testar credenciais em vários protocolos
  • Execução de Comandos: Executar comandos em sistemas remotos
  • Sistema de Módulos: Extensível através de módulos da comunidade
  • Formatação de Saída: Saída em JSON, XML, texto simples
  • Integração: Funciona com Nessus, Metasploit e outras ferramentas``` katana -u https://tesla.com -H cookie.txt
root@kitploit:~
Existem mais opções para configurar quando necessário, aqui estão todas as opções de CLI relacionadas à configuração -```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)

Conectando-se a uma Sessão Ativa do Navegador

O Katana também pode se conectar a uma sessão ativa do navegador na qual o usuário já está logado e autenticado, e utilizá-la para crawling. O único requisito para isso é iniciar o navegador com a depuração remota ativada.

Aqui está um exemplo de como iniciar o navegador Chrome com depuração remota ativada e usá-lo com o Katana -

passo 1) Primeiro, localize o caminho do executável do Chrome

passo 2) Inicie o Chrome com depuração remota ativada; ele retornará uma URL websocker. Por exemplo, no macOS, você pode iniciar o Chrome com depuração remota ativada usando o seguinte comando -```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:~
> Agora faça login no site que deseja rastrear e mantenha o navegador aberto.

**passo 3) Agora use a URL do websocket com o katana para se conectar à sessão ativa do navegador e rastrear o site**```console
katana -headless -u https://tesla.com -cwu ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6 -no-incognito

Nota: pode usar a opção -cdd para especificar um diretório de dados personalizado do Chrome para armazenar dados do navegador e cookies, mas isso não salva dados de sessão se o cookie for definido como Session apenas ou expirar após certo tempo.

Filtros

-field

[!WARNING] Obsoleto: use -output-template em vez disso. A flag de campo ainda é suportada para compatibilidade com versões anteriores.

Katana vem com campos integrados que podem ser usados para filtrar a saída para a informação desejada. A opção -f pode ser usada para especificar qualquer um dos campos disponíveis.``` -f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,key,value,kv,dir,udir)

root@kitploit:~
Aqui está uma tabela com exemplos de cada campo e saída esperada quando usado - 

| FIELD   | DESCRIPTION                 | EXAMPLE                                                      |
| ------- | --------------------------- | ------------------------------------------------------------ |
| `url`   | Endpoint URL                | `https://admin.projectdiscovery.io/admin/login?user=admin&password=admin` |
| `qurl`  | URL incluindo parâmetro de consulta | `https://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin` |
| `qpath` | Caminho incluindo parâmetro de consulta | `/login?user=admin&password=admin`                           |
| `path`  | Caminho da URL              | `https://admin.projectdiscovery.io/admin/login`              |
| `fqdn`  | Nome de domínio totalmente qualificado | `admin.projectdiscovery.io`                                  |
| `rdn`   | Nome do domínio raiz        | `projectdiscovery.io`                                        |
| `rurl`  | URL raiz                    | `https://admin.projectdiscovery.io`                          |
| `ufile` | URL com arquivo             | `https://admin.projectdiscovery.io/login.js`                 |
| `file`  | Nome do arquivo na URL      | `login.php`                                                  |
| `key`   | Chaves de parâmetro na URL  | `user,password`                                              |
| `value` | Valores de parâmetro na URL | `admin,admin`                                                |
| `kv`    | Chaves=Valores na URL       | `user=admin&password=admin`                                  |
| `dir`   | Nome do diretório da URL    | `/admin/`                                                    |
| `udir`  | URL com diretório           | `https://admin.projectdiscovery.io/admin/`                   |

Aqui está um exemplo de uso da opção field para exibir apenas todas as URLs com parâmetro de consulta -```
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

Custom Fields

Você pode criar campos personalizados para extrair e armazenar informações específicas das respostas das páginas usando regras de regex. Esses campos personalizados são definidos usando um arquivo de configuração YAML e são carregados do local padrão em $HOME/.config/katana/field-config.yaml. Alternativamente, você pode usar a opção -flc para carregar um arquivo de configuração de campos personalizados de um local diferente. Aqui está um exemplo de campo personalizado.```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:~
Ao definir campos personalizados, os seguintes atributos são suportados:

- **name** (obrigatório)

> O valor do atributo **name** é usado como o valor da opção `-field` na CLI.

- **type** (obrigatório)

> O tipo de atributo personalizado, opção atualmente suportada - `regex` 

- **part** (opcional)

> A parte da resposta da qual extrair as informações. O valor padrão é `response`, que inclui tanto o cabeçalho quanto o corpo. Outros valores possíveis são `header` e `body`.

- group (opcional)

> Você pode usar este atributo para selecionar um grupo específico correspondente na regex, por exemplo: `group: 1`

#### Executando katana usando campo personalizado:```console
katana -u https://tesla.com -f email,phone

-store-field

Para complementar a opção field, que é útil para filtrar a saída em tempo de execução, existe a opção -sf, -store-fields, que funciona exatamente como a opção field, exceto que, em vez de filtrar, armazena todas as informações no disco no diretório katana_field ordenado por URL alvo. Use -sfd ou -store-field-dir para armazenar dados em um local diferente.``` katana -u https://tesla.com -sf key,fqdn,qurl -silent

root@kitploit:~
``````bash
$ ls katana_field/

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

A opção -store-field pode ser útil para coletar informações para construir uma wordlist direcionada para vários propósitos, incluindo mas não se limitando a:

  • Identificar os parâmetros mais comumente usados
  • Descobrir caminhos frequentemente usados
  • Encontrar arquivos comumente usados
  • Identificar subdomínios relacionados ou desconhecidos

Filtros Katana

-extension-match

A saída do rastreamento pode ser facilmente filtrada para uma extensão específica usando a opção -em para garantir que apenas a saída contendo a extensão fornecida seja exibida.``` katana -u https://tesla.com -silent -em js,jsp,json

root@kitploit:~
Use o valor especial `none` para também incluir URLs sem uma extensão de arquivo na saída:```
katana -u https://tesla.com -silent -em js,jsp,json,none

-extension-filter

A saída do crawl pode ser facilmente filtrada para extensão específica usando a opção -ef, que garante remover todas as URLs que contêm a extensão fornecida.``` katana -u https://tesla.com -silent -ef css,txt,md

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

Katana filtra várias extensões por padrão. Isso pode ser desabilitado com a opção `-ndef`.```
katana -u https://tesla.com -silent -ndef

-match-regex

A flag -match-regex ou -mr permite filtrar URLs de saída usando expressões regulares. Ao usar esta flag, apenas URLs que correspondam à expressão regular especificada serão exibidas na saída.``` katana -u https://tesla.com -mr 'https://shop\.tesla\.com/*' -silent

root@kitploit:~
*`-filter-regex`*
---
A flag `-filter-regex` ou `-fr` permite filtrar URLs de saída utilizando expressões regulares. Ao utilizar esta flag, serão ignoradas as URLs que correspondam à expressão regular especificada.```
katana -u https://tesla.com -fr 'https://www\.tesla\.com/*' -silent

Filtragem Avançada

Katana suporta expressões baseadas em DSL para capacidades avançadas de correspondência e filtragem:

  • Para corresponder endpoints com código de status 200:```shell katana -u https://www.hackerone.com -mdc 'status_code == 200'
root@kitploit:~
- Para corresponder endpoints que contenham "default" e tenham um código de status diferente de 403:```shell
katana -u https://www.hackerone.com -mdc 'contains(endpoint, "default") && status_code != 403'
  • Para corresponder endpoints com tecnologias PHP:```shell katana -u https://www.hackerone.com -mdc 'contains(to_lower(technologies), "php")'
root@kitploit:~
- Para filtrar endpoints que estão rodando no Cloudflare:```shell
katana -u https://www.hackerone.com -fdc 'contains(to_lower(technologies), "cloudflare")'

As funções DSL podem ser aplicadas a qualquer chave na saída jsonl. Para mais informações sobre as funções DSL disponíveis, visite o projeto dsl.

Aqui estão opções adicionais de filtro -```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:~
## Limite de Taxa

É fácil ser bloqueado/banido durante o crawling se não seguir os limites dos sites alvo, o katana vem com múltiplas opções para ajustar o crawl para ir tão rápido/lento quanto quisermos.

*`-delay`*
-----```
katana -u https://tesla.com -delay 20

-concurrency

opção para controlar o número de urls por alvo a buscar ao mesmo tempo.``` katana -u https://tesla.com -c 20

root@kitploit:~
*`-parallelism`*
-----
opção para definir o número de alvos a processar ao mesmo tempo a partir da lista de entrada.```
katana -u https://tesla.com -p 20

-rate-limit

Máximo de requisições por segundo, aplicado globalmente a todos os hosts.``` katana -u https://tesla.com -rl 100

root@kitploit:~
*`-rate-limit-minute`*
-----
Máximo de requisições por minuto, aplicado globalmente em todos os hosts.```
katana -u https://tesla.com -rlm 500

-host-rate-limit

Máximo de requisições por segundo por host. Cada host tem seu próprio balde de limite de taxa, então um host lento não irá limitar os rápidos. Substitui o limite de taxa global quando definido. Katana também recua automaticamente com atraso exponencial e jitter quando um host retorna 429 ou 503.```console katana -u https://tesla.com -hrl 50

root@kitploit:~
*`-host-rate-limit-minute`*
-----
Máximo de requisições por minuto por host.```console
katana -u https://tesla.com -hrlm 200

Aqui estão todas as opções longas / curtas de CLI para controle de limite de taxa -```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:~
## Saída

Katana suporta saída em arquivo tanto em formato de texto simples quanto JSON, que inclui informações adicionais como nome de `source`, `tag` e `attribute` para correlacionar o endpoint descoberto.

*`-output`*
---

Por padrão, katana gera os endpoints rastreados em formato de texto simples. Os resultados podem ser escritos em um arquivo usando a opção -output.```console
katana -u https://example.com -no-scope -output example_endpoints.txt

-output-template

A opção -output-template permite personalizar o formato de saída usando um modelo, proporcionando flexibilidade na definição da estrutura de saída. Esta opção substitui a flag obsoleta -field para filtrar a saída. Em vez de depender de campos predefinidos, você pode especificar um modelo personalizado diretamente na linha de comando para controlar como os dados extraídos são apresentados.

Exemplo de uso da opção -output-template:```sh katana -u https://example.com -output-template '{{email}} - {{url}}'

root@kitploit:~
Neste exemplo, `email` representa um [campo personalizado](#custom-fields) que extrai e exibe endereços de e-mail encontrados na origem `url`.

> [!NOTE]
> Se um campo especificado não existir ou não contiver um valor, ele será simplesmente omitido da saída.

Esta opção pode estruturar efetivamente a saída da maneira que melhor se adequa ao seu caso de uso, tornando a extração de dados mais intuitiva e personalizável.

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

Licença

GNU General Public License v3.0```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`*
----

A opção `-store-response` permite escrever todas as requisições e respostas de endpoints rastreados em um arquivo de texto. Quando esta opção é usada, arquivos de texto contendo a requisição e resposta serão escritos no diretório **katana_response**. Se você desejar especificar um diretório personalizado, pode usar a opção `-store-response-dir`.```console
katana -u https://example.com -no-scope -store-response

(empty)```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:~
**Nota:**

*A opção `-store-response` não é suportada no modo `-headless`.*

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

A flag `-list-output-fields` ou `-lof` exibe todos os campos disponíveis que podem ser usados no formato de saída JSONL. Isso é útil para entender quais dados estão disponíveis ao usar modelos de saída personalizados ou ao excluir campos específicos.```console
katana -lof

-exclude-output-fields

A flag -exclude-output-fields ou -eof permite excluir campos específicos da saída JSONL. Isso é útil para reduzir o tamanho da saída ou focar em dados específicos, removendo campos indesejados.```console katana -u https://example.com -jsonl -eof raw,body

root@kitploit:~
Aqui estão opções adicionais de CLI relacionadas à saída -```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 como biblioteca

katana pode ser usado como biblioteca criando uma instância da struct Option e preenchendo-a com as mesmas opções que seriam especificadas via CLI. Usando as opções, você pode criar crawlerOptions e assim um crawler padrão ou híbrido. O método crawler.Crawl deve ser chamado para rastrear a entrada.```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:~
## Relatar Problemas & Solicitações de Funcionalidades

Para manter o rastreamento de problemas e melhorar a eficiência da triagem:

**Todos os relatórios começam como [Discussões no GitHub](https://github.com/projectdiscovery/katana/discussions)**

- **Relatórios de Bugs** → [Iniciar uma Discussão de Perguntas e Respostas](https://github.com/projectdiscovery/katana/discussions/new?category=q-a)
- **Solicitações de Funcionalidades** → [Iniciar uma Discussão de Ideias](https://github.com/projectdiscovery/katana/discussions/new?category=ideas)  
- **Perguntas** → [Iniciar uma Discussão de Perguntas e Respostas](https://github.com/projectdiscovery/katana/discussions/new?category=q-a)

**Por que Discussões Primeiro?**
- **A comunidade pode ajudar** com perguntas rápidas e solução de problemas
- **Melhor triagem** - bugs/funcionalidades confirmados se tornam problemas rastreados  
- **Rastreador de problemas mais limpo** - foco apenas em itens acionáveis

Os mantenedores converterão discussões em problemas quando apropriado, após revisão adequada.

--------

<div align="center">

katana é feito com ❤️ pela equipe [projectdiscovery](https://projectdiscovery.io) e distribuído sob [Licença MIT](https://github.com/projectdiscovery/katana/blob/HEAD/LICENSE.md).


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

</div>
Baixar ferramenta
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/
EstratégiaDescrição
heuristic(padrão) Espera inteligente que se adapta ao comportamento da página - aguarda pelo evento de carga, inatividade de rede e estabilidade do DOM
loadAguarda apenas pelo evento de carga do navegador
domcontentloadedAguarda pelo evento DOMContentLoaded mais um tempo adicional (configurável via -dwt) para renderização de JavaScript
networkidleAguarda até que a atividade de rede pare
noneSem espera - retorna imediatamente após o início da navegação
katana -u https://tesla.com -headless -pls domcontentloaded
Sistema OperacionalLocalização do Executável do ChromiumLocalização do Executável do Google Chrome
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