这个项目能做什么
Katana 是一个基于 Go 的网络爬虫与蜘蛛框架,既可直接使用,也可作为自动化工作流的一部分。它接受单个 URL、逗号分隔的 URL、列表文件或通过 STDIN 管道传入的输入作为目标,并可将发现的 URL 和元数据输出到 STDOUT、文件或 JSONL。安装方式包括 go install、预构建的发布二进制文件和 Docker 镜像。
标准爬取模式使用 Go 的 HTTP 库,不会渲染 JavaScript 或 DOM。可选的无头模式使用 Chrome 渲染页面、执行 JavaScript,并发现由浏览器加载或异步加载的端点。无头配置包括选择系统 Chrome、自定义 Chrome 路径或调试器 WebSocket URL、浏览器数据目录、隐身模式和沙箱控制、可见浏览器模式、额外的 Chrome 选项、XHR 提取,以及页面加载策略,如 heuristic、load、DOMContentLoaded、networkidle 和 none。可以为 JavaScript 渲染配置 DOM 等待时间。
Katana 可以解析并爬取 JavaScript 文件中的端点,并可选择使用 jsluice 解析。它支持实验性的自动表单填充、表单和字段提取、自定义表单配置,以及通过 CapSolver 进行外部求解的自动验证码检测。文档中支持的验证码类型包括 reCAPTCHA v2、reCAPTCHA v3、reCAPTCHA Enterprise、Cloudflare Turnstile 和 hCaptcha。
爬取行为可以通过深度、持续时间、每个域的最大页面数、响应大小、超时、重试、重定向处理、代理、自定义请求头或 Cookie、自定义解析器以及深度优先或广度优先策略进行约束。它还可以处理 robots.txt 和 sitemap 文件、检测技术,并可选择随机化 TLS client hello。
作用域控制包括预定义的 rdn、fqdn 和 dn 字段、正则表达式包含和排除规则、禁用主机作用域、显示外部 URL,以及排除 CDN、私有 IP 范围、CIDR、IP 或正则匹配的主机。输出过滤支持 URL 正则表达式、扩展名匹配或过滤、基于 DSL 的响应条件、页面类型过滤、查询参数规范化、相似 URL 过滤和重复内容过滤。页面内容相似度可以使用 simhash、TF-IDF 或 BM25,并具有可配置的阈值和每个聚类的处理预算。
速率和执行控制涵盖并发抓取器、并行输入、请求延迟,以及每秒和每分钟的全局或按主机速率限制。输出可以使用可配置的字段或模板,存储 HTTP 请求和响应,省略原始数据或正文,并以静默、详细或调试模式运行。爬取可以从恢复配置文件继续。
可选的知识库功能使用自动下载的模型提供基于机器学习的页面类型和表单分类。它还可以提取密钥,可选择通过实时提供商调用进行验证,并对 REST、GraphQL、SOAP 和 XHR 端点进行分类。项目文档提醒用户负责任地使用该工具,并对其自身的使用行为负责。
评论
0 评分人数达到10人后显示
登录后参与讨论。