简介 🥸
主要功能和特点:
-
快速且可完全配置的网页爬虫:Katana能够以高效和可定制的方式对网页进行爬取。 -
支持标准和无头模式:无头模式允许爬虫在没有用户界面的情况下运行,适用于复杂的Web应用程序。 -
JavaScript解析与爬取支持:Katana能够解析和爬取包含JavaScript动态内容的网页。 -
自动表单填写:享有可自定义的自动表单填写功能,以便在需要时自动填充网页表单信息。 -
可定制的输出:通过预配置字段实现结果输出的定制化,以满足不同分析需求。 -
可定制的范围控制:利用预配置字段和正则表达式控制爬虫范围,避免不必要的爬取。 -
多种输入和输出支持:支持通过STDIN、URL和列表进行输入,以及STDOUT、文件和JSON格式的输出。
项目地址:https://github.com/projectdiscovery/katana
安装 😓
Windows安装
-
确保您的系统上已经安装了Go编程语言。
-
打开命令提示符(cmd)或PowerShell。
-
输入以下命令以安装Katana:
go install github.com/projectdiscovery/katana/cmd/katana@latest
-
添加Go的bin目录到系统路径:
-
打开“环境变量”设置。 -
将 %USERPROFILE%\go\bin
添加到“系统变量”中的Path变量。 -
安装完成后,您可以通过在命令提示符中输入
katana
进行确认安装。
Linux安装
-
确保您已经安装了Go编程语言。
-
打开终端。
-
在终端中输入以下命令执行安装:
go install github.com/projectdiscovery/katana/cmd/katana@latest
-
将Go的bin路径添加到系统路径中,执行以下命令:
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc -
使用
katana
命令检查安装是否成功。
Mac安装
-
确保您已在系统上安装Go。
-
打开终端。
-
输入以下命令进行安装:
go install github.com/projectdiscovery/katana/cmd/katana@latest
-
将Go的bin路径添加到系统路径,使用以下命令:
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bash_profile
source ~/.bash_profile -
完成安装后,您可以通过终端输入
katana
进行检查。
使用 🥲
参数选项
Katana 是一款专注于自动化管道执行的快速爬虫工具,提供无头和非无头的爬取功能。
用法:
katana [flags]
标志:
输入:
-u, -list string[] 要爬取的目标 URL / 列表
-resume string 使用 resume.cfg 恢复扫描
-e, -exclude string[] 排除与指定过滤器匹配的主机('cdn', 'private-ips', cidr, ip, regex)
配置:
-r, -resolvers string[] 自定义解析器列表(文件或逗号分隔)
-d, -depth int 最大爬取深度(默认 3)
-jc, -js-crawl 在 JavaScript 文件中启用端点解析/爬取
-jsl, -jsluice 在 JavaScript 文件中启用 jsluice 解析(内存密集型)
-ct, -crawl-duration value 最大爬取目标的持续时间(s, m, h, d)(默认 s)
-kf, -known-files string 启用已知文件的爬取(all,robotstxt,sitemapxml),最小深度为 3 以确保正确爬取所有已知文件。
-mrs, -max-response-size int 读取的最大响应大小(默认 9223372036854775807)
-timeout int 请求等待时间,单位秒(默认 10)
-aff, -automatic-form-fill 启用自动表单填充(实验性)
-fx, -form-extraction 在 jsonl 输出中提取表单、输入、textarea 和 select 元素
-retry int 重试请求的次数(默认 1)
-proxy string 要使用的 http/socks5 代理
-H, -headers string[] 以 header:value 格式在所有 http 请求中包含的自定义头部/cookie(文件)
-config string Katana 配置文件的路径
-fc, -form-config string 自定义表单配置文件的路径
-flc, -field-config string 自定义字段配置文件的路径
-s, -strategy string 访问策略(深度优先、广度优先)(默认"深度优先")
-iqp, -ignore-query-params 忽略具有不同查询参数的相同路径的爬取
-tlsi, -tls-impersonate 启用实验性客户端 hello (ja3) TLS 随机化
-dr, -disable-redirects 禁用跟随重定向(默认 false)
调试:
-health-check, -hc 运行诊断检查
-elog, -error-log string 写入发送请求错误日志的文件
无头:
-hl, -headless 启用无头混合爬取(实验性)
-sc, -system-chrome 使用本地安装的 Chrome 浏览器而不是 Katana 安装的
-sb, -show-browser 在无头模式下显示浏览器
-ho, -headless-options string[] 以附加选项启动无头 Chrome
-nos, -no-sandbox 在 --no-sandbox 模式下启动无头 Chrome
-cdd, -chrome-data-dir string 存储 Chrome 浏览器数据的路径
-scp, -system-chrome-path string 为无头爬取使用指定的 Chrome 浏览器
-noi, -no-incognito 在非隐身模式下启动无头 Chrome
-cwu, -chrome-ws-url string 使用在此 URL 上侦听调试器的其他地方启动的 Chrome 浏览器实例
-xhr, -xhr-extraction 在 jsonl 输出中提取 xhr 请求 url 和方法
被动:
-ps, -passive 启用被动源以发现目标端点
-pss, -passive-source string[] 用于 URL 发现的被动源(waybackarchive,commoncrawl,alienvault)
范围:
-cs, -crawl-scope string[] 爬虫应遵循的范围内 URL 正则表达式
-cos, -crawl-out-scope string[] 爬虫应排除的范围外 URL 正则表达式
-fs, -field-scope string 预定义的范围字段(dn,rdn,fqdn)或自定义正则表达式(例如,'(company-staging.io|company.com)')(默认"rdn")
-ns, -no-scope 禁用基于主机的默认范围
-do, -display-out-scope 显示从范围内爬取的外部端点
过滤:
-mr, -match-regex string[] 要在输出 URL 上匹配的正则表达式或正则表达式列表(cli, file)
-fr, -filter-regex string[] 要在输出 URL 上过滤的正则表达式或正则表达式列表(cli, file)
-f, -field string 要在输出中显示的字段(url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
-sf, -store-field string 要在每个主机输出中存储的字段(url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
-em, -extension-match string[] 匹配给定扩展名的输出(例如, -em php,html,js)
-ef, -extension-filter string[] 过滤给定扩展名的输出(例如, -ef png,css)
-mdc, -match-condition string 使用 DSL 条件匹配响应
-fdc, -filter-condition string 使用 DSL 条件过滤响应
速率限制:
-c, -concurrency int 要使用的并发获取器数量(默认 10)
-p, -parallelism int 要处理的并发输入数量(默认 10)
-rd, -delay int 每个请求之间的请求延迟,单位秒
-rl, -rate-limit int 每秒最大请求数(默认 150)
-rlm, -rate-limit-minute int 每分钟最大请求数
更新:
-up, -update 更新 Katana 到最新版本
-duc, -disable-update-check 禁用自动 Katana 更新检查
输出:
-o, -output string 写入输出的文件
-sr, -store-response 存储 HTTP 请求/响应
-srd, -store-response-dir string 将 HTTP 请求/响应存储到自定义目录
-or, -omit-raw 从 jsonl 输出中省略原始请求/响应
-ob, -omit-body 从 jsonl 输出中省略响应正文
-j, -jsonl 以 jsonl 格式写入输出
-nc, -no-color 禁用输出内容着色(ANSI 转义码)
-silent 仅显示输出
-v, -verbose 显示详细输出
-debug 显示调试输出
-version 显示项目版本
1. 基本使用案例
-
单一 URL 输入
katana -u <https://example.com>
-
多 URL 输入
katana -u <https://example.com>,<https://another-example.com>
-
列表文件输入
katana -list url_list.txt
-
通过 STDIN 输入
echo <https://example.com> | katana
2. 爬虫模式
-
标准模式
-
使用标准的 Go HTTP 库进行爬取,速度快但可能漏掉一些动态内容。 -
无头模式
katana -u <https://example.com> -headless
3. 范围控制
-
域名关键字范围控制
katana -u <https://example.com> -fs dn
-
高级正则表达式控制范围
katana -u <https://example.com> -cs in_scope.txt
4. 爬虫配置
-
设定爬取深度
katana -u <https://example.com> -d 5
-
JavaScript 文件解析和爬取
katana -u <https://example.com> -jc
-
已知文件爬取
katana -u <https://example.com> -kf robotstxt,sitemapxml
5. 过滤选项
-
字段过滤
katana -u <https://example.com> -f qurl -silent
-
扩展名过滤
katana -u <https://example.com> -silent -ef css,txt
6. 速率限制
-
请求延迟
katana -u <https://example.com> -delay 2
-
并发数控制
katana -u <https://example.com> -c 20
7. 输出选项
-
输出为 JSONL 文件
katana -u <https://example.com> -jsonl -o output.jsonl
-
存储请求和响应
katana -u <https://example.com> -sr
参考链接 😋
-
https://github.com/projectdiscovery/katana -
https://docs.projectdiscovery.io/tools/katana/overview
原文始发于微信公众号(人遁安全):Katana入门指南:网络安全工具功能介绍与使用技巧
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论