访问日志
访问日志
功能简介
访问日志页面记录每一次经过 WAF 的原始访问请求,无论放行、阻止还是禁止都会逐条记录,便于按时间、网站、来源 IP、规则、状态码等多种条件检索单条访问,并下钻到完整的访问详情。
提示:访问日志按「逐条请求」展示;如需以来源 IP 为维度聚合查看触发规则的攻击情况,请使用「风险日志」。
想知道某个 IP 现在被什么拦着?
列表里的 IP 是可以点击的,点一下会打开 IP策略命中查询,一次查遍黑白名单、IP组、威胁情报、各类封禁与 CDN 回源段,并可就地加白或拉黑。详见 IP策略命中查询。
页面包含三部分:可折叠的日志配置、搜索筛选区,以及访问记录列表。列表上方有 访问日志 / 安全事件 两个视图可切换。
日志是分层存放的
- 安全事件:命中了规则或被拦截的请求,连同完整报文一起保存,保留期跟随「删除历史日志(天)」。
- 访问日志:所有被记录的请求各写一行窄行(不含报文),保留期由「访问日志保留天数」单独控制,默认 30 天。
安全事件同时也会写一行窄行,所以「访问日志」视图能看到全部被记录的流量,「安全事件」视图看的是其中命中规则的那个子集。 报文只保留在安全事件(以及观察名单留痕、采样样本)上,普通请求的详情里会提示未留存报文。
操作步骤
1. 切换视图
列表左上角的 访问日志 / 安全事件 是两个不同的数据视图:
- 访问日志:全部被记录的请求(窄行),用来看整体流量与某个 IP 的完整行为。
- 安全事件:其中命中规则或被拦截的子集,带完整报文,用来研判攻击。
切换视图会带着当前查询条件重查。需要注意两点:「请求」(Header)全文筛选只在安全事件视图提供, 切到访问日志视图时该筛选会被自动摘掉,改用 User-Agent / Referer 两个列筛选; 从风险日志的 IP 详情里打开时,访问日志视图的标签显示为 全部行为,看的就是该 IP 的全部请求。
2. 查询与筛选
在顶部表单中按需填写条件,点击 查询 执行检索,点击 重置 清空条件:
- 选择网站、填写访问 URL、规则名称、访问识别码、访问状态、响应码、来源 IP、访问日期(时间区间)、访问方法、日志归档库等。
- 访问 URL 按已保存的 URL 做字面包含查询:例如
/api/login查找包含该路径的记录,page=2查找包含该查询参数片段的记录。%、_、!、|都按普通字符查找;空值不筛选,前后空格会保留,也不会自动解码(如%2F不等同于/)。URL 通常是含查询串的原始路径,按域名查找请使用网站条件。该条件可与网站、时间、来源 IP、访问识别码等组合,适用于两个视图及实时、历史归档查询。 - 列表表头部分字段(访客身份、访问识别码、Header)支持直接在列上输入关键字过滤,按回车确认。
- 点击列头可对「耗时」「AI 得分」「时间」等列排序。
3. 查看访问详情
- 在某行点击 详情,进入该条记录的完整访问详情页(请求/响应、耗时、地区等信息)。
- 点击 查询来源 IP 可快速以该行的来源 IP 作为条件再次查询。
4. 将来源 IP 加入黑名单
- 在来源 IP 列每个 IP 旁有 加入不允许访问 按钮,点击并确认后即可把该 IP 加入该网站的拦截名单。
5. 导出日志(仅 SQLite)
- 当当前日志归档库为文件型(SQLite)时,会显示 导出 按钮。导出的不再是整个日志库的备份,而是按时间段导出选定层后生成的一个新的加密 SQLite 文件:
- 时间范围:留空为全部。
- 导出内容:可勾选「访问日志 / 安全事件 / 报文 / 旧版日志 web_logs」,至少勾一项。
- 点击确认后导出在后台执行,完成后到下载中心取文件。历史数据可能很大,建议闲时导出。MySQL / PostgreSQL 模式下不显示导出按钮。
6. 列配置
- 点击 列配置 勾选要显示的列,点击 重置列配置 可恢复默认列。列配置会保存在本地浏览器中。
7. 日志配置(折叠区)
- 点击顶部「日志配置」标题展开配置项,调整后点击 保存配置 生效。可设置是否记录响应报文、记录原始请求 BODY、日志记录类型、最大报文长度、历史日志保留天数、日志归档相关参数、日志持久化、批量插入、IP Tag 存放位置、访问日志档位、访问日志保留天数、全局排除记录日志的IP 等。
关于「访问日志档位」
控制窄行怎么写,与上面的「日志记录类型」是两件事:
- 全部入库(默认):每条被记录的请求都写一行窄行,行为与升级前一致。
- 采样入库:只按比例留一部分窄行,日志量明显下降。
- 仅安全事件:不写窄行,只留安全事件。
调离「全部入库」会失去 CC 阈值推荐、AI 训练负样本与异常 IP 的正常行为回溯—— 界面上选中非默认档位时也会给出同样的提示,CC 阈值推荐页在「仅安全事件」档会置灰并说明原因。 流量很大、磁盘吃紧的站点再考虑调档,一般部署保持默认即可。
「访问日志保留天数」只管窄行(默认 30 天),安全事件与报文仍跟随「删除历史日志(天)」。
关于「全局排除记录日志的IP」
按来源 IP 不记日志,与网站编辑里的「记录日志时排除URL」是两个维度;站点级清单在 网站防护 的「记录日志时排除IP」里,两份清单取并集。
- 语法与黑白名单一致:单个 IP、CIDR(
10.0.0.0/8)、通配符(192.168.1.*)、区间(10.0.0.1-10.0.0.50), 或group:组短码引用一个 IP 组(改组内容对所有引用它的站点立即生效)。 - 逗号或换行分隔,
#开头为注释;写错的模式在保存时就被拒绝并指出是哪一条。 - 保存即生效,不需要重启。
- 只静音正常请求:被排除 IP 的安全事件(命中规则、被拦截)照常记录。办公出口常常是一个 NAT 共享地址, 一刀切静音等于真被打了也看不见。
- 被排除的请求不写日志、不计入请求数统计、也不进「来源与路径分析」的汇总; 但站点的进出流量字节仍然照计,所以流量图上还能看到它们。
典型用法:把办公出口、监控探测机、压测机的 IP 填进去。
关于「IP Tag 存放位置」
从「主库」切到「读取 stat库」(或反向)时,会自动把原库里已积累的标签并到新库: 相同 IP + 标签的次数相加,首次访问时间取早的、最近访问时间取晚的,合并完原库的这部分数据清空,日志本身不受影响。 标签多时合并要跑一会儿,界面会显示「正在合并原库的历史标签…」并在完成后自动刷新。保存后立即生效,无需重启。
关于「日志记录类型」
- 全部:所有请求都记录(默认)。
- 非正常:只记录非放行的请求,可显著减少日志量。需要注意的是,「命中了规则但没有拦截」的请求属于安全事件,即使最终是放行的也会被记录下来,包括:自定义规则的放行(
RF.Allow/RF.AllowAll)、自定义规则的仅记录(RF.Log)、以及网站开启了仅记录模式时命中的请求。这样白名单被哪些请求用到、灰度观察的规则抓到了什么,都能在日志里查到。没有命中任何规则的普通请求在该模式下仍然不记录。
8. IP 提取问题
- 点击 IP 提取有问题? 打开对话框,配置从哪个 HTTP 头提取访客真实 IP。提供 Cloudflare、X-Forwarded-For、X-Real-IP 等常用头一键填入;为空则提取连接 IP,可填多个头(英文逗号分隔,按顺序取第一个有值的)。
9. AI 训练标记(可选)
- 在操作列点击 AI 标记 可对该条记录进行人工修正标记:误报(正常)/ 确认攻击(可选攻击类别)/ 忽略,便于导出 AI 训练数据时采用修正结果,也可取消标记。
字段说明
列表字段
| 字段 | 说明 |
|---|---|
| 访客身份 | 系统识别的访客身份标识,可在列上输入过滤。 |
| 耗时(ms) | 本次请求处理耗时(毫秒),可排序。 |
| 危害程度 | 本次访问的风险等级。 |
| 状态 | 防御结果:放行 / 阻止 / 禁止。 |
| 仅记录日志 | 是否处于「仅记录日志」模式(命中规则只记录不拦截)。 |
| AI 得分 | AI 智能检测给出的异常分值(0~1,越高越可疑)。 |
| 触发规则 | 本次访问命中的规则名称。 |
| 时间 | 访问发生时间,可排序。 |
| 域名 | 被访问的网站域名。 |
| 请求 | 请求方法(GET/POST 等)。 |
| 来源 IP | 访客来源 IP,旁有「加入不允许访问」按钮。 |
| 国家 / 省份 / 城市 | 来源 IP 的地理位置。 |
| 访问识别码 | 本次请求的唯一标识(req_uuid),可在列上输入过滤。 |
| 访问 url | 本次请求的 URL。 |
| Header | 请求头内容,可在列上输入过滤;仅「安全事件」视图提供(报文已单独存放,访问日志的窄行没有这一列)。 |
| User-Agent / Referer | 窄行上的独立列,两个视图都能按值筛选,在访问日志视图里顶替「请求」全文筛选的位置。 |
| status | 响应状态码。 |
| 操作 | 查询来源 IP / 详情 / AI 标记。 |
搜索筛选字段
| 字段 | 说明 |
|---|---|
| 网站 | 按指定网站筛选,可搜索、可清空。 |
| 访问 URL | URL 字面包含关键字,最多 2048 个字符;大小写匹配遵循数据库现有规则。窄行 URL 最多保留 2048 字节,超出已保存部分的内容无法在访问日志视图检索。 |
| 规则名称 | 按命中的规则名称模糊查询。 |
| 访问识别码 | 按请求唯一标识精确查询。填了识别码后不再需要时间范围与分区——它是主键,直接点查(界面会自动忽略日期与所选分区)。 |
| 访问状态 | 防御状态:全部 / 阻止 / 放行 / 禁止。 |
| 响应码 | 按 HTTP 响应状态码查询。 |
| 来源 IP | 按访客来源 IP 查询。 |
| 访问日期 | 访问时间区间(支持精确到时分秒)。 |
| 访问方法 | 全部 / POST / GET / CONNECT / HEAD / OPTIONS / PRI。 |
| 日志归档库 | 默认「自动」按访问日期决定查哪些分区;也可锁定某一个分区。选项显示该分区的时间段与记录数;存储已不在的分区标「文件缺失」且不可选。 |
常见问题
- 来源 IP 显示的是代理/CDN 的 IP 怎么办? 使用 IP 提取有问题? 配置真实 IP 头(如 Cloudflare 的 CF-Connecting-IP、通用的 X-Forwarded-For 等)。
- 为什么看不到导出按钮? 导出通过备份日志库文件实现,仅文件型数据库(SQLite)支持;MySQL / PostgreSQL 模式下没有日志文件,因此不提供导出。
- 访问日志和风险日志有什么区别? 访问日志是逐条原始访问记录;风险日志按来源 IP 聚合触发规则的攻击情况,侧重攻击研判。
- 详情里为什么提示未留存报文? 报文只保留在安全事件、观察名单留痕与采样样本上;普通请求只有窄行,没有报文。需要留普通请求的报文,可把可疑 IP 加入风险日志的观察名单。
- 切到访问日志视图后「请求」筛选不见了? 该筛选按报文全文匹配,只在安全事件视图可用。访问日志视图请用 User-Agent / Referer 两个列筛选。
- 配了排除 IP,为什么流量统计里还有它? 排除只作用于日志与请求数统计;进出字节由引擎侧单独计量,不经日志链路,所以流量图上仍会出现,这是预期行为。
- 归档库下拉里某个分区显示「文件缺失」,或查询时提示跳过了某些分区? 这个分区的记录还在,但对应的归档文件(MySQL / PostgreSQL 下是归档表)已经不在了,常见于手工删过文件;若提示「文件在,但里面没有任何数据」,说明文件被替换或清空过。其余分区照常查询。确认不需要后,在「分区管理」里删除这条记录即可。历史归档文件只会被读取,查询不会改动它们。
- 日志量太大怎么降? 优先把「访问日志档位」调成「采样入库」,或把办公出口、探测机 IP 填进「全局排除记录日志的IP」;实在需要极省再用「仅安全事件」,但要接受失去 CC 阈值推荐等能力。
- 访客拿着拦截页上的识别码来问,怎么查? 直接在 访问识别码 框粘贴,不用选日期和分区;CC 封禁期内的每次拦截都会留一条规则为「CC封禁」的窄行记录,可按识别码逐条对应。这类记录只留元数据、不重复留存请求报文。
更新记录
| 日期 | 适用版本 | 说明 |
|---|---|---|
| 2026-10-20 | >v1.3.25-beta.8(未发布) | 新增访问 URL 字面包含筛选,可组合其他条件查询访问日志、安全事件及历史归档;Vue2 与 Vue3 均已支持。 |
| 2026-10-13 | v1.3.25-beta.8 | CC 封禁期内的每次拦截都会留存一条规则为「CC封禁」的窄行记录,拦截页展示的识别码可按访问识别码直接查询(忽略日期与分区);此类记录不重复留存请求报文。 |
