字节笔记本

2026年2月22日

Katana - 下一代 Web 爬虫框架

本文介绍 Katana,一个由 ProjectDiscovery 开发的新一代 Web 爬虫和蜘蛛框架。Katana 提供了快速、可配置的网页爬取能力,支持标准模式和 Headless 模式,是安全研究人员和开发者的强大工具。

项目简介

Katana 是一个开源的 Web 爬虫框架,由 ProjectDiscovery 团队开发维护。截至目前,该项目在 GitHub 上已获得 15.6k+ stars947 forks,主要使用 Go 语言(96.6%)编写。

该项目专注于在自动化管道中执行爬取任务,提供标准和 Headless 两种爬取模式,支持 JavaScript 解析和表单自动填充等高级功能。

核心特性

  • 快速且完全可配置:高性能的 Web 爬取能力,可根据需求深度定制
  • 双模式支持:支持标准模式和 Headless 模式爬取
  • JavaScript 解析:能够解析和爬取 JavaScript 文件中的端点
  • 自动表单填充:可自定义的自动表单填充功能(实验性)
  • 范围控制:支持预配置字段和正则表达式进行爬取范围控制
  • 灵活的输入输出:支持 STDIN、URL 列表输入,输出支持 STDOUT、文件和 JSON 格式
  • 技术检测:内置技术栈检测功能
  • XHR 请求提取:能够提取 XHR 请求的 URL 和方法

技术栈

  • Go 1.24+ - 主要开发语言
  • JavaScript - 用于浏览器自动化(3.2%)
  • Headless Chrome - 无头浏览器支持
  • JSluice - JavaScript 解析(内存密集型)

安装指南

前置要求

  • Go 1.24 或更高版本

使用 Go 安装

bash
CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest

其他安装方式

  • Docker:可通过 Docker 运行
  • Ubuntu:支持 Ubuntu 系统安装
  • 预编译二进制文件:从 GitHub Releases 下载

快速开始

查看帮助信息

bash
katana -h

基础用法

爬取单个 URL

bash
katana -u https://tesla.com

爬取多个 URL(逗号分隔)

bash
katana -u https://tesla.com,https://google.com

从文件读取 URL 列表

bash
# 创建 URL 列表文件
cat url_list.txt
# https://tesla.com
# https://google.com

# 执行爬取
katana -list url_list.txt

使用管道输入(STDIN)

bash
echo https://tesla.com | katana

# 配合其他工具使用
cat domains | httpx | katana

使用示例

场景 1:启用 Headless 模式

Headless 模式可以执行 JavaScript 并爬取动态渲染的内容:

bash
katana -u https://example.com -headless

场景 2:JavaScript 端点爬取

启用 JavaScript 文件中的端点解析和爬取:

bash
katana -u https://example.com -js-crawl

场景 3:自动表单填充

启用实验性的自动表单填充功能:

bash
katana -u https://example.com -automatic-form-fill

场景 4:设置爬取深度和范围

bash
# 设置最大爬取深度为 5
katana -u https://example.com -depth 5

# 使用正则表达式控制爬取范围
katana -u https://example.com -crawl-scope ".*api.*"

场景 5:输出为 JSON 格式

bash
katana -u https://example.com -jsonl -o output.json

场景 6:技术检测

bash
katana -u https://example.com -tech-detect

常用配置选项

输入选项

选项说明
-u, -list目标 URL 或列表
-e, -exclude排除匹配指定过滤器的主机

配置选项

选项说明默认值
-d, -depth最大爬取深度3
-jc, -js-crawl启用 JavaScript 端点爬取false
-ct, -crawl-duration最大爬取持续时间-
-timeout请求超时时间(秒)10
-retry请求重试次数1
-proxyHTTP/SOCKS5 代理-

Headless 选项

选项说明
-hl, -headless启用 Headless 混合爬取
-sc, -system-chrome使用系统安装的 Chrome
-sb, -show-browser显示浏览器窗口
-nos, -no-sandbox以 --no-sandbox 模式启动

输出选项

选项说明
-o, -output输出文件
-j, -jsonl以 JSONL 格式输出
-sr, -store-response存储 HTTP 请求/响应
-silent仅显示输出

速率限制选项

选项说明默认值
-c, -concurrency并发获取器数量10
-p, -parallelism并发输入处理数10
-rl, -rate-limit每秒最大请求数150

注意事项

  1. CGO 依赖:安装时需要启用 CGO (CGO_ENABLED=1)
  2. 内存使用:启用 JSluice 解析会消耗大量内存
  3. 合法使用:请确保在授权范围内使用本工具
  4. Headless 模式:需要 Chrome 或 Chromium 浏览器
  5. 爬取深度:建议根据目标网站规模合理设置深度

项目链接

许可证

Katana 采用 MIT 许可证开源。

分享: