操作(Actions)
操作是 Nuclei 无头引擎的单个任务片段。每个操作以某种方式操作浏览器状态,最终导向我们感兴趣的捕获状态。 Nuclei 支持多种操作。以下是这些操作及其参数的列表:navigate
Navigate 访问给定的 URL。url 字段支持像{{BaseURL}}、{{Hostname}} 这样的变量,以完全自定义请求。
script
Script 在当前浏览器页面上运行 JS 代码。最简单的用法是,你只需提供一个带有 JS 片段的code 参数,它将在页面上运行。
window.random-object 的对象并赋予了一个值,你想匹配该值。
hook 参数实现。这将在任何页面加载之前始终运行提供的 Javascript。
提供的示例挂钩了 window.alert,这样应用程序生成的警告不会停止爬虫。
click
Click 模拟使用鼠标左键点击由选择器指定的元素。rightclick
RightClick 模拟使用鼠标右键点击由选择器指定的元素。text
Text 模拟使用键盘在输入框中输入内容。可以使用选择器来指定要输入的元素。screenshot
Screenshots 对页面进行截图并将其写入磁盘。它支持全页面和普通截图。fullpage: true 选项实现。
time
Time 在页面上的时间输入字段中以 RFC3339 格式输入值。select
Select 通过选择器对 HTML 输入执行选择操作。files
Files 处理网页上的文件上传输入。waitfcp
WaitFCP 等待第一个有意义的内容出现,如文本或图像,表明页面正在变得有用。waitfmp
WaitFMP 等待首次有意义的绘制事件,允许用户在内容视觉上准备好时继续。waitdom
WaitDOM 等待DOMContentLoaded 事件,表明 HTML 已加载并解析,但不等待样式表、图像和子框架完成加载。
waitload
WaitLoad 等待整个页面,包括样式表和图像等依赖资源,完全加载。waitidle
WaitIdle 等待页面完全停止进行网络请求并达到网络空闲状态,表明所有资源已加载。waitstable
WaitStable 等待页面在 N 时长内保持稳定 (默认为1s)。
waitdialog
WaitDialog 将等待 JavaScript 对话框(alert、confirm、prompt 或 onbeforeunload)初始化,然后自动接受它。
必须明确定义
name 属性,以确保输出变量可供模板中的 matchers 或 extractors 后续使用。请参见此处的示例。- NAME (布尔值),表示 JavaScript 对话框是否已触发。
- NAME_type (字符串),对话框类型(
alert、confirm、prompt或onbeforeunload)。 - NAME_message (字符串),显示的消息对话框内容。
getresource
GetResource 返回元素的 src 属性。extract
Extract 提取 HTML 节点的文本或用户指定的属性。 以下代码将提取给定 XPath 选择器元素的文本,然后也可以通过匹配器和提取器使用名称extracted-value 进行匹配。
setmethod
SetMethod 覆盖请求的方法。addheader
AddHeader 向请求/响应添加头部。这不会覆盖任何预先存在的头部。setheader
SetHeader 在请求/响应中设置头部。deleteheader
DeleteHeader 从请求/响应中删除头部。setbody
SetBody 为请求/响应设置正文。waitevent
WaitEvent 等待页面上触发的事件。keyboard
Keyboard 模拟键盘上的单个按键操作。keys 参数接受键码。
debug
Debug 在每个无头操作之间添加 5 秒的延迟,并显示浏览器中发生的所有无头事件的跟踪。注意:仅将此用于调试目的,不要在生产模板中使用。
sleep
Sleep 使浏览器等待指定的秒数。这也对调试目的有用。选择器(Selectors)
选择器是 nuclei 无头引擎识别要对哪个元素执行操作的方式。Nuclei 支持通过包含各种选项来获取选择器 -| 选择器 | 描述 |
|---|---|
r / regex | 元素匹配 CSS 选择器且文本匹配正则表达式 |
x / xpath | 元素匹配 XPath 选择器 |
js | 从 JS 函数返回元素 |
search | 搜索查询(可以是文本、XPATH、CSS) |
selector (默认) | 元素匹配 CSS 选择器 |
匹配器/提取器部分
Headless 协议支持的匹配器/提取器的有效part 值 -
| 值 | 描述 |
|---|---|
| request | 无头请求 |
<out_names> | 具有存储值的操作名称 |
| raw / body / data | 来自浏览器的最终 DOM 响应 |