katana 介绍

katana是一款强大的新一代的网络爬虫工具,通过使用 katana ,用户能够快速的进行互联网资源的爬取和渗透测试阶段的收集任务。

特点

katana 有以下特点:

  • 快速及高可配置的网络爬虫
  • 标准及无头模式
  • 主动和被动模式
  • JavaScript 脚本爬取解析
  • 定制的表单内容自动填充
  • 爬取范围控制
  • 可自定义设置输出字段
  • 输入数据 支持标准输入(STDIN),URL和列表(LIST)
  • 输出数据 支持STDOUT、文件和JSON格式

安装

接下来介绍如何安装 katana

katana 的安装需要 go1.18版本以上,可以执行以下命令或下载Github 仓库的发布版本。

go install github.com/projectdiscovery/katana/cmd/katana@latest

windows 在安装中可能会遇到以下报错:

github.com/smacker/go-tree-sitter/javascript: build constraints exclude all Go files in C:\Users\overstarry\go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\javascript
# github.com/smacker/go-tree-sitter
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:17:18: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:21:21: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:25:20: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:30:26: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:34:20: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:38:32: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:43:9: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:46:18: undefined: Node
go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:68:40: undefined: Node

可以使用以下命令解决:

choco install zig
set CGO_ENABLED=1&set GOOS=windows&set GOARCH=amd64&set CC=zig cc&set CXX=zig c++
go install github.com/projectdiscovery/katana/cmd/katana@latest

Docker 安装

katana 还支持 Docker 进行使用,执行以下命令:

docker pull projectdiscovery/katana:latest
docker run projectdiscovery/katana:latest -u https://tesla.com

使用

接下来的使用环境会以 Docker 环境为主。

爬取多个 url

使用 -u 参数,可以爬取指定网站的数据,可以看到 overstarry.vip 的网站链接都显示了。

docker run projectdiscovery/katana:latest -u https://overstarry.vip

alt text

如果想要一次获取多个网站的数据,直接添加多个URL即可,多个URL之间以逗号分隔。

需要注意的是,爬取 url 时,会将当前url上的所有链接都会获取下来,包括超链接。

爬取模式

1 标准

标准模式使用 go 原生 http 进行数据采集,采集速度会更快,但不会处理 Javascript 和 Dom 渲染,不适合用于一些有复杂动态渲染的网站,

2 无头浏览器模式

无头模式使用无头浏览器,在浏览器上下文进行数据的获取,有以下优点:

  1. Http 指纹合法
  2. 可以处理更复杂的一些网站

爬取范围

如果没有限定爬取范围,katana 爬取可能会是无止境的,所有一般需要限定爬取的数据范围。

-field-scope

有三个选项:

* rdn 爬取根域名及所有子域名(默认)
* fqdn 限定爬取的子域名
* dn 爬取的范围为指定关键字域名

-crawl-scope

-crawl-out-scope

定义不爬取的内容范围,支持正则表达式

其它

除了这些参数,katana还支持很多其它参数,感兴趣的读者可以自行研究

katana 库

除了 cli 使用外,katana还支持在代码中进行使用。

参考