博客 / Linux/ wget 命令详解:破解防盗链、镜像网站与批量下载实战指南

wget 命令详解:破解防盗链、镜像网站与批量下载实战指南

wget 命令详解:破解防盗链、镜像网站与批量下载实战指南

wget 命令基础用法与防盗链破解

wget 是一个功能强大的命令行下载工具,支持 HTTP、HTTPS 和 FTP 协议。它常用于批量下载文件、镜像网站以及处理需要特定请求头的下载场景。

核心参数说明

  • -r:递归下载。对于 HTTP/HTTPS,会下载指定页面及其链接的资源(深度可调);对于 FTP,会下载指定目录下的所有文件。
  • -m:镜像模式。相当于同时使用 -r-N 参数,适合创建网站镜像。
  • -k:转换链接。下载完成后,将 HTML 文件中的绝对链接转换为相对链接,便于本地浏览。
  • -N:时间戳检查。只下载比本地文件更新的文件(基于文件大小和修改时间)。
  • -p:下载页面所需的所有资源(如图片、CSS、JS)。
  • -np:不追溯至父目录。仅在指定目录及其子目录中递归。
  • -nd:不创建目录结构。所有文件都下载到当前目录。
  • --accept:指定接受的文件扩展名(如 --accept=iso,jpg)。
  • --reject:指定拒绝的文件扩展名。
  • -H:跨主机下载。当网站资源(如图片)托管在其他域名时使用。

场景示例

示例一:破解 Referer 防盗链

当目标网站通过检查 HTTP Referer 头来防盗链时,可以使用 --referer 参数伪造来路,从而下载受保护的文件。

wget -E --referer http://example.com/ -r -m -k http://img.example.com/2015/

此命令会:

  1. 设置 Referer 头为 http://example.com/
  2. 递归下载 http://img.example.com/2015/ 目录下的所有文件。
  3. 启用镜像模式(-m)和链接转换(-k)。

注意:Referer 防盗链是一种基础防护,现代网站常采用更安全的 token 验证、签名或 Cookie 校验等方式。对于此类高级防护,仅靠 wget 参数难以破解,可能需要分析其认证逻辑或使用更专业的工具。

示例二:无防盗链的整站下载

对于无防护的网站,可直接递归下载所有页面和资源。

wget -r -p -np -k http://xxx.com/xxx/

此命令会:

  1. 递归下载指定路径下的所有内容。
  2. 下载页面所需的所有资源(-p)。
  3. 不追溯至父目录(-np)。
  4. 转换链接为本地相对路径(-k)。

示例三:下载特定目录下的文件

若只需下载某个目录下的文件,且不希望创建复杂的本地目录结构,可结合 -np-nd 参数。

wget -r -np -nd http://example.com/packages/

此命令会:

  1. 递归下载 packages 目录下的所有文件。
  2. 不追溯至父目录。
  3. 所有文件直接保存到当前目录,不创建子文件夹。

若要过滤文件类型,可添加 --accept--reject 参数:

wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

此命令仅下载扩展名为 .iso 的文件。

示例四:镜像整个网站(含跨域资源)

若要完整镜像一个网站,包括托管在其他域名上的资源(如图片、样式表),可使用以下命令:

wget -m -k -H http://www.example.com/

此命令会:

  1. 启用镜像模式(-m)。
  2. 转换链接(-k)。
  3. 允许跨主机下载(-H),确保外部资源也被抓取。

注意事项与最佳实践

  1. 遵守法律法规与 robots.txt:在下载任何网站内容前,请确保你拥有相应权限,并遵守该网站的 robots.txt 规则及相关法律法规。未经授权的抓取可能构成侵权。
  2. 控制请求频率:可添加 --limit-rate=200k 限制下载速度,或使用 --wait=2 设置请求间隔,避免对目标服务器造成过大压力。
  3. 处理认证:若网站需要登录,可使用 --user--password 参数(注意密码安全),或通过 --header 添加 Cookie。
  4. 更新与维护:wget 命令参数可能随版本更新而变化,建议通过 wget --help 或查阅官方文档获取最新信息。

发表评论

您的邮箱不会公开。必填项已用 * 标注。