wget默认不支持断点续传,需加--continue且服务器支持range请求;url含参数时用-o指定文件名,-nc避免覆盖,--timestamping同步时间戳;测试环境可加--no-check-certificate跳过证书验证,--limit-rate=0取消限速;递归下载需严格限定范围,关键用--no-parent防爬出目录。

wget 默认不支持断点续传,下载大文件中途失败就得重来;加 --continue 才能续传,但前提是服务器支持 Range 请求 —— 很多静态托管服务(如 GitHub Pages、GitLab Pages)不支持,这时候续传会静默失败。
如何用 wget 下载单个文件并自动重命名
直接用 wget 时,如果 URL 中的文件名含参数(比如 file.zip?token=abc),它默认保存为 file.zip?token=abc,带问号的文件名在某些 shell 或脚本里会出问题。
- 用
-O指定目标文件名:wget -O archive.zip https://example.com/download?version=2 - 避免覆盖已有文件,加
-nc(no-clobber):wget -nc -O data.json https://api.example.com/export - 若需保留原始时间戳(比如同步镜像),加上
--timestamping,它会比对远程 Last-Modified 和本地文件修改时间,只下载更新过的
如何让 wget 下载时不限速且跳过证书验证(仅限测试环境)
内网或自签名 HTTPS 服务下,wget 默认会因 SSL 证书校验失败而中止。生产环境绝不要跳过验证,但调试时可临时绕过:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 加
--no-check-certificate关闭证书检查(注意:不安全,仅限可信内网) - 限速默认是关闭的,但若之前被限过(比如配置了
.wgetrc),可用--limit-rate=0显式取消限制 - 配合
-t 3设最多重试 3 次,-T 30设单次连接超时 30 秒,防止卡死
如何用 wget 递归下载整个目录(且只抓 HTML/JS/CSS 等前端资源)
wget --recursive 很容易误抓整站甚至爬穿服务器,必须严格限定范围:
- 用
-nH禁用主机名目录层级,--cut-dirs=1跳过 URL 路径首层目录(例如忽略/dist/) - 用
-A "*.html,*.js,*.css,*.png,*.jpg"白名单过滤后缀,-R "index.html?"排除带查询参数的索引页 - 加
--no-parent防止向上爬到父目录,这是最关键的防护项,漏掉可能导致下载整站 - 注意:
--recursive默认只跟随 a 标签 href,不解析 JS 动态加载的资源 —— 它不是浏览器,别指望它能抓 Vue/React 构建后的路由资源
真正麻烦的是服务器返回 302 重定向又没设好 Content-Disposition 头时,wget 可能保存成随机名字(如 index.html.1),这时得结合 --restrict-file-names=windows 或手动用 -O 控制输出名 —— 这类边界情况文档很少提,但线上部署脚本里常踩坑。










