Awvs压缩包解压部署与扫描避坑指南:从校验到自动化验证
简介面向Web安全测试人员与开发者的AWVSAcunetix Web Vulnerability Scanner工具安装包资源可用于自动化检测SQL注入、XSS、文件包含等常见Web漏洞覆盖OWASP Top Ten关键漏洞支持定期扫描与报告生成适合网站上线前的安全评估及日常巡检。压缩包共含4个文件以Linux安装脚本sh、安装日志log、许可信息json及数据文件dat为主整体约219.62MB结构精简能帮助用户在Linux环境完成14.5版本部署。目前已有1393人学习下载。通过安装脚本与日志可梳理完整部署流程结合许可与数据文件可完成授权配置配合资源内对功能特性和最佳实践的梳理可掌握从扫描策略制定、漏洞深度分析到持续监控的完整工作流是上手AWVS并开展Web渗透测试的实用工具包。1. 拿到 Awvs 压缩包文件别急着解压先想明白它到底装了什么不少安全从业者第一次接触 Awvs 工具的压缩包文件都是从同事手里接过来一个几百 MB 的 zip 或 tar.gz然后顺手一解压、双击启动、填个目标 URL 就开始扫。但实际在项目里折腾过两三轮就会发现这个压缩包远不止“安装包”这么简单它里面可能装着扫描器主程序、命令行扫描器、规则库、配置模板甚至还包括一次完整扫描的历史任务数据。不同来源的包解压后的运行方式完全不同。本篇按“包体结构 → 校验解压 → 首次扫描 → 踩坑排查 → 自动化验证”的顺序把这套流程里的关键参数和常见问题讲清楚新手能直接照着做熟手也能对照着查边界。2. 解开压缩包之前包体构成、压缩格式与版本识别2.1 压缩包里通常有三类内容主程序、命令行扫描器、数据目录一个正规的 Awvs 压缩包文件内部结构通常不是一团乱麻。我经手过几类不同来源的包最常见的是三类内容混在一起主程序、命令行扫描器和数据目录。主程序是真正启动 Web 漏洞扫描服务的那部分。在 Linux 包里它一般是一组二进制文件加上一堆 .so 动态库和 .jar 文件在 Windows 包里则是一个或者几个 exe 主程序加资源文件。命令行扫描器是独立于服务端的一个可执行程序在 AWVS 体系里这个命令行工具很常见有的版本叫 wvsc有的版本叫 wvs_console命名并不统一。规则库是重头戏通常以 .poc、.xml 或 .db 形式存在放在类似 poc、rules、scripts 这样的子目录里。数据目录则记录着扫描任务、报告、用户配置和登录会话——这个目录至关重要你扫过的目标、生成的报告、存放的位置全靠它。很多人踩坑就踩在数据目录上。主程序更新了旧数据目录里的任务队列和报告格式跟新版不兼容结果升级后之前的扫描结果全部打不开。所以拿到压缩包之后第一件事不是找启动按钮而是先搞明白包里面哪些是程序文件、哪些是数据文件。2.2 zip 还是 tar.gz按目标环境的权限模型来选Awvs 工具的压缩包文件在 Windows 环境里基本是 zip在 Linux 环境里基本是 tar.gz。这个格局没什么悬念。zip 的优势是和 Windows 资源管理器天然配合双击就能解开文件权限在普通文件系统上也基本不敏感tar.gz 的优势是完整保留 Unix 权限位对可执行文件来说这个权限位非常重要——用 zip 在 Linux 解压经常得到一堆没有执行权限的文件二进制没法直接跑这就是很多人说的“玄学问题”实际就是权限模型不同。我一般这样处理如果目标机器是标准 Linux 服务器优先找 tar.gz或者把现有目录重新打成 tar.gz 再迁移如果团队习惯用 Windows 主机或虚拟机zip 工作流最不容易出问题。这里有个操作习惯值得形成固定动作任何 tar.gz 解压完成后都要立刻检查主程序文件的可执行权限确认ls -l输出里包含-rwxr-xr-x之类的权限位。如果发现是-rw-r--r--直接用chmod x补上否则后面启动时只会得到一堆权限报错。2.3 区分“解压即用”和“安装壳”两种包的操作路径完全不同同样是压缩包一种是已经解压好的程序树解开就能用另一种只是官方安装程序的外壳压缩包里只有一个 setup.exe 或 installer解压后还得再执行一遍真正的安装流程。这两种包的操作路径完全不同搞混了会白白浪费时间。识别方法很简单先列包内清单看有没有大量 .res、.xml、.poc 文件组成的程序目录。如果有这通常是解压即用的迁移包或便携包形态如果清单里只有一个安装程序和几个资源文件那就是安装壳。对安装壳来说解压只是第一步后续还要按安装向导走跳过安装直接运行是跑不起来的。还有一种更隐蔽的情况压缩包里既有程序文件又带着数据库初始化脚本和目录结构这种多半是内部团队自己打的迁移包数据目录里甚至已经有历史任务启动后会自动加载旧任务列表。这时候要特别注意数据目录路径不能乱改改了等于告诉后端“我换地方了”旧任务列表自然就丢了。3. 校验、解压与启动把这套压缩包真正跑起来3.1 解压前先做哈希校验别让损坏的包浪费一下午拿到 Awvs 工具的压缩包文件之后我建议先做完整性审计再考虑解压。这个动作看起来多此一举但实际救过我好几次。文件在传输过程中可能因为磁盘坏道、网络中断、FTP 断点续传出问题导致包体缺了某个规则文件而解压过程未必会报错——真正等到扫描的时候才发现规则没加载那才是真的浪费时间。# 先计算压缩包的 SHA-256 值 sha256sum awvs-linux.tar.gz # 如果分发方提供了 .sha256 校验文件可以直接用 -c 参数比对 sha256sum -c awvs-linux.tar.gz.sha256第一行命令算出当前文件的哈希值第二行命令用分发方提供的校验文件做自动比对。官方分发或者内部规范化打包一般都会附带一个 .sha256 或 .md5 文件这个文件本身也要看一眼内容确认对的是当前这个包。比对通过之后再往下走。如果校验文件不存在至少执行一次gzip -t或zip -T做结构完整性检查能过滤掉大部分传输损坏的情况。3.2 解压并核对目录结构补可执行权限、防路径覆盖校验通过之后进入解压环节。我常用的方式是把包解到一个独立目录不直接解到 /opt 根下方便后续整体迁移和删除。mkdir -p /opt/awvs tar -xzf awvs-linux.tar.gz -C /opt/awvs ls -l /opt/awvs find /opt/awvs -maxdepth 3 -type f | head -20这里用tar -xzf解压 tar.gz-C指定目标目录。解压后先ls -l看一眼权限位再用find快速浏览前几层的文件分布确认有没有解出意外的顶层目录。很多包解压后会在 /opt/awvs 下再生成一层带版本号的目录比如 awvs_scan_14这时候后续启动脚本和命令行工具的路径就要对应调整。如果发现主程序没有执行权限补一下chmod x /opt/awvs/wvsc /opt/awvs/awvs_scanner 2/dev/null || true这里2/dev/null是屏蔽“文件不存在”的提示|| true是避免因为找不到文件导致脚本退出。因为不同版本命令行扫描器命名不一样用这个写法做一次容错补权后面再逐个确认实际存在的文件。3.3 启动服务前先搞定用户与数据目录老手也常栽在这很多从压缩包解出来的程序官方说明会特别强调不要用 root 直接运行扫描服务。原因不难理解扫描器需要访问目标站点也可能处理一些临时文件以 root 运行时一旦某个漏洞利用组件出问题影响范围会被放大。安全工具自己先违反最小权限原则说不过去。useradd -r -s /bin/false awvs 2/dev/null || true mkdir -p /opt/awvs/data chown -R awvs:awvs /opt/awvs chmod 750 /opt/awvs/datauseradd -r创建一个系统账户-s /bin/false禁止该用户登录 shell进一步收紧权限边界。数据目录单独建在 /opt/awvs/data 下权限设成750只允许 awvs 用户和同组用户访问。这个收尾动作很关键否则后面写报告、存任务队列的时候会遇到权限拒绝报错信息又往往很模糊排查半天才发现是目录属主不对。启动方式取决于包的类型。有的解压即用包自带启动脚本比如 start.sh直接执行即可有的需要手工执行主程序。我一般会先看包内有没有 README 或启动脚本没有的话运行主程序二进制文件并指定数据目录参数。这里特别提醒数据目录路径最好显式指定不要依赖默认相对路径。默认相对路径会随着你从哪个目录启动而变化换个工作目录再启动服务可能就找不到历史任务了相当于一次静默的数据丢失。4. 跑通第一次 Web 漏洞扫描命令行参数与输出格式4.1 命令行扫描器的最小可用命令解压部署完成之后很多人习惯打开 Web 界面填写目标 URL。但对于压缩包迁移场景我更推荐先把命令行扫描器跑通。命令行扫描器是独立于服务端的可执行程序参数直接输出可控很容易验证整个包是否工作正常。./wvsc \ --target http://192.0.2.10:8080/ \ --scan-type full \ --output-format xml \ --output-file /opt/awvs/scan_results.xml echo exit code: $?这段参数的含义很清楚--target指定要扫描的 URL--scan-type指定扫描类型常用取值有 full、quick 和 sql 等full 全量检测耗时最长但覆盖最全--output-format决定报告格式xml、html、pdf 是常见选项--output-file给出报告存放路径。命令执行后$?表示退出码一般 0 表示正常结束非 0 表示扫描过程出现异常。不同版本的命令行扫描器参数名略有差异有的版本用--url而不是--target有的版本用--scan-mode而不是--scan-type。所以最稳妥的做法是先执行./wvsc --help或./wvsc -h查看当前版本的参数清单再根据实际输出调整。不要凭记忆直接套老版本的参数。4.2 带登录态的扫描配置认证参数Web 漏洞扫描有个绕不开的场景大多数业务系统需要登录后才能看到功能页面。不带认证信息直接扫只能扫到登录页等于白扫。命令行扫描器一般支持通过认证参数传入登录信息。./wvsc \ --target http://192.0.2.10:8080/ \ --auth login.php|admin|Str0ngPss \ --auth-type form \ --output-format html \ --output-file /opt/awvs/scan_report.html这里的--auth参数有三段用竖线分隔登录表单地址、用户名、密码。--auth-type form表示采用表单登录方式有的系统是 HTTP Basic 认证参数取值就换成 basic。登录扫描比匿名扫描慢很多因为扫描器要模拟登录态在每个请求里携带会话凭证还要处理会话过期和重新登录的流程。如果扫描结果里全是登录页面相关的告警先别怀疑工具八成是认证参数没写对。4.3 报告格式与退出码先看退出码再看报告内容命令行扫描器跑完之后第一件事是看退出码第二件事才是打开报告。退出码非 0 时报告文件里可能只有半截结果不能直接用。我见过有人把退出码 1 的报告当成完整报告提交最后被复核发现漏了不少检测项。报告格式的选择也有讲究。html 适合人工阅读xml 适合程序解析pdf 适合直接归档。如果是自动化流程建议输出 xml 并保留原始输出后续可以转成其他格式也可以做历史对比。命令行扫描器的好处就在这里输出路径可控、格式稳定方便接入后续的自动化验证流程。这里提一个重要细节很多压缩包里的命令行扫描器是精简版规则库可能只有完整版的一部分。扫出来的结果偏少不一定是目标系统安全也可能是规则库不全。这时需要回到包结构检查规则库目录是否存在且完整。5. Awvs 压缩包使用避坑指南现象、原因与解决5.1 解压后所有文件权限都是 644二进制无法执行这个现象在 zip 包解压到 Linux 环境时最典型。现象是文件都好端端在那里权限位却没有一个带 x执行主程序直接提示 Permission denied而文件属主看起来又是对的。原因很直接zip 格式本身不保存 Unix 权限位解开后默认是 644可执行位丢失。解决方式是用 chmod 对二进制和脚本统一补权但更推荐的做法是团队内部分发时直接用 tar.gz保留权限位彻底避免这个坑。find /opt/awvs -type f \( -name *.sh -o -name wvsc -o -name awvs_scanner \) -exec chmod x {} \;这个命令把指定名称的脚本和扫描器二进制全部加上执行权限一条命令解决多个文件的问题。需要注意find的-exec在文件名带空格时也能正确处理不会因为路径里有空格而出错。5.2 启动服务后进程秒退日志里提示数据库初始化失败现象是启动脚本执行完进程立刻退出日志里出现数据库初始化失败的提示。原因多数是数据目录不可写或者数据目录里缺了初始化所需的模板文件。压缩包是从别的机器直接拷过来的原机器的数据目录路径和你本机不同或者数据目录属主不是当前运行用户。解决方式分成两步。第一步确认数据目录存在且属主正确第二步看包内是否带有初始化模板。有的包在首次启动时会自动创建数据文件有的包需要把 data 模板复制到指定位置再启动。mkdir -p /opt/awvs/data chown -R awvs:awvs /opt/awvs/data ls -la /opt/awvs/data先执行这三条命令查状态再启动服务。如果目录为空但程序仍报数据库初始化失败基本可以判断包内的模板文件缺失需要找回完整的包而不是在现有包上继续折腾。5.3 扫描能跑但结果异常少检查规则库是否完整常见现象是扫描目标有明显漏洞但报告里只有一两条低危告警。排查后确认目标确实存在漏洞问题是规则库没加载完整。压缩包里规则库目录存在但解压过程中部分文件丢失或者解压后规则目录路径与程序默认路径不一致。解决方式分两级。先看规则库目录是否完整再检查程序配置中规则库路径是否正确。规则库文件数量常见的从几百到几千不等如果目录里只有几个文件大概率是包不完整。处理办法是把规则库目录放回程序默认路径或者通过配置文件显式指定目录位置。5.4 架构不匹配压缩包是 x86_64目标主机是 ARM64这类问题在虚拟机镜像迁移到 ARM 架构服务器时越来越常见。现象是解压、赋权限都没问题但一执行二进制就报 Exec format error。原因很朴素压缩包里编译好的二进制是 x86_64 架构ARM64 主机无法直接加载。解决方式不是靠参数调整而是去拿对应架构的压缩包重新部署。检查方法是用 file 命令查看二进制格式。file /opt/awvs/wvsc执行后输出里会明确显示是 x86-64 还是 ARM。看到 Exec format error 时直接跑这个命令十秒钟就能定位问题不用在环境变量和依赖库上白费力气。6. 把验证变成习惯包完整性审计与自动化收尾技巧6.1 解压前后文件清单比对防包内文件缺失的最稳手段压缩包经过多次拷贝、转存有时会发生文件缺失但结构完整的怪事。最稳妥的验证手段是解压前导出完整清单解压后再次导出清单两份做 diff。脚本产品和安装包产品通常都支持这种清单核对。tar -tzf awvs-linux.tar.gz | sort /tmp/list_before.txt find /opt/awvs -type f | sort /tmp/list_after.txt diff /tmp/list_before.txt /tmp/list_after.txttar -tzf只列出包内文件名不解压find列出实际落盘的文件两个清单排序后做 diff可以快速看出哪些文件解压失败或路径偏移。这个习惯看起来很基础但能避免很多“扫不出来”“启动报错”背后的隐性问题。我在一次临时接手团队扫描平台的时候用过这个方法当场发现规则库目录里有十几个文件没落盘追查后确认是分发时压缩包本身就不完整——那个包用了很久问题一直没被发现就是因为大家默认压缩包是可靠的。6.2 最后的习惯迁移包要留版本标记、校验文件和已知问题清单经过几次翻车之后我现在给内部团队打包扫描器迁移包一定会放三样东西版本标记文件、校验文件和已知问题清单。版本标记文件里写清楚主程序版本、规则库版本、打包日期校验文件就是配套的 .sha256已知问题清单记录这个包在当前环境下的特殊注意事项比如某个版本在容器内运行需要额外挂载目录或者某个版本命令行工具的认证参数有变化。这个做法看起来增加了打包成本实际带来的收益很大。团队里任何一个人拿到压缩包先看版本标记和校验文件再决定是否解压整个过程有据可查。我自己的习惯是任何一个经过手的 Awvs 压缩包文件解压后都会随手执行一遍安全配置检查和文件清单比对确认结果没问题后再交给下一个环节。扫描工具是拿来检验系统安全的它自身的安全性和完整性不值得被忽略。希望这些经验和踩过的坑能帮到你少走弯路。本文还有配套的精品资源点击获取

相关新闻

Activiti运行表ACT_RU_VARIABLE深度解析:变量作用域与存储机制

Activiti运行表ACT_RU_VARIABLE深度解析:变量作用域与存储机制

如果你接手过Activiti工作流项目,一定有过这样的经历:在某个节点用delegateExecution.setVariable("orderId", "xxx")存了一个变量,结果到下一个节点getVariable取出来是null,翻遍日志看不出原因,…

2026/10/17 6:28:56 阅读更多 →
BFS求最短路全攻略:原理、模板、变式与调试

BFS求最短路全攻略:原理、模板、变式与调试

1. 从一道迷宫题说起:BFS凭什么能解最短路如果你刚接触算法竞赛或者刷题圈,大概率听过这句话:无权图上的最短路,用BFS。但很多人只是把这句话背下来,真到了做题时——第一步就卡住了:为什么要用BFS&#xf…

2026/10/17 6:28:56 阅读更多 →
Large Language Model-Based Task Offloading and Resource Allocation for Digital Twin Edge Computin...

Large Language Model-Based Task Offloading and Resource Allocation for Digital Twin Edge Computin...

文章主要内容和创新点 主要内容 本文研究了数字孪生边缘计算网络中的任务卸载与资源分配问题。该网络包含多个车辆和一个服务器,车辆在每个时隙会生成多种计算任务,任务卸载到服务器时存在排队挑战。研究核心包括: 分析车辆生成异构任务导致的服务器队列积压问题,及其对系…

2026/10/17 6:28:56 阅读更多 →

最新新闻

前端RSA加密实战:分段加密解决长文本与中文乱码问题

前端RSA加密实战:分段加密解决长文本与中文乱码问题

1. 前端加密到底在解决什么问题前端做加密这件事,很多刚接触的人第一反应是“前端代码都是明文的,加密有什么意义”。这个疑问很合理,但忽略了一个关键场景:数据在网络上传输的过程中,经过的每一层节点都可能被截获。前…

2026/10/17 6:56:01 阅读更多 →
知识蒸馏、RAG与微调:大模型应用落地的三种核心技术对比

知识蒸馏、RAG与微调:大模型应用落地的三种核心技术对比

很多人第一次接触大模型的应用开发时,都会被这几个术语绕晕:知识蒸馏、RAG检索增强、微调(Fine-tuning)。乍一看都是“让模型变聪明”的手段,真到选型的时候才发现,它们解决问题的层次完全不同——有的改模…

2026/10/17 6:56:01 阅读更多 →
AI智能名片小程序源码二次开发与上线避坑指南

AI智能名片小程序源码二次开发与上线避坑指南

简介:这份小程序源码包以AI智能名片为核心场景,面向具备一定前端与后端基础、希望研究名片类小程序完整实现思路的开发者与学习者。包内共406个文件,以wxss样式、wxml结构、js逻辑与json配置构成小程序主体,另有php接口文件、html…

2026/10/17 6:56:01 阅读更多 →
降AI率免费工具有没有?10个降AIGC高频问题解答,论文AI检测一次过!

降AI率免费工具有没有?10个降AIGC高频问题解答,论文AI检测一次过!

毕业季又到了,论文 AIGC 检测的要求一年比一年严,市面上能用的降 AI 工具也一年比一年多。可工具一旦选错,付出的代价往往超出预期:拿一篇 3 万字的硕士论文来说,第一次处理没达标的话,工具费、检测费再加上…

2026/10/17 6:56:01 阅读更多 →
AI写作辅助平台8款AI论文工具梯队榜,毕业论文轻松搞定!

AI写作辅助平台8款AI论文工具梯队榜,毕业论文轻松搞定!

四大测评维度解析: 学术专业性:工具是否理解学术规范,输出内容是否符合论文逻辑与深度要求。文献支撑能力:能否引用真实、权威的参考文献,避免"空中楼阁"式生成。查重合规性:生成内容的原创性如何…

2026/10/17 6:56:01 阅读更多 →
AI辅助科研:赋能学术创新与高效科研成果产出的新路径探索

AI辅助科研:赋能学术创新与高效科研成果产出的新路径探索

很多2026级新生刚入学或刚转博,就被开题报告这四个字整得心力交瘁。最崩溃的不是写不出来,而是你辛辛苦苦熬夜半个月翻出来的创新点,导师看一眼就冷冷地抛回一句:这个方向十年前就有人做透了,前沿性在哪?或…

2026/10/17 6:55:01 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →