wget 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

wget 命令安装:


-bash: pidof: command not found

#Debian
apt-get install wget

#Ubuntu
apt-get install wget

#Alpine
apk add wget

#Arch Linux
pacman -S wget

#Kali Linux
apt-get install wget

#CentOS
yum install wget

#Fedora
dnf install wget

#OS X
brew install wget

#Raspbian
apt-get install wget

#Docker
docker run cmd.cat/wget wget

wget 命令补充说明:


wget 是非交互式的,这意味着它可以在后台运行,而用户未登录,这使您可以开始检索并断开与系统的连接,让 wget 完成工作。相比之下,大多数 Web 浏览器需要持续的用户交互,这使得传输大量数据变得困难。wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget 会不断的尝试,直到整个文件下载完毕。

wget 命令语法:


wget [option]... [URL]...

wget 命令选项:


启动参数:

-V, –-version 显示wget的版本后退出
-h, –-help 打印语法帮助
-b, –-background 启动后转入后台执行
-e, –-execute=COMMAND 执行 `.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

记录和输入文件参数:

-o, –-output-file=FILE 把记录写到FILE文件中
-a, –-append-output=FILE 把记录追加到FILE文件中
-d, –-debug 打印调试输出
-q, –-quiet 安静模式(没有输出)
-v, –-verbose 冗长模式(这是缺省设置)
-nv, –-non-verbose 关掉冗长模式,但不是安静模式
-i, –-input-file=FILE 下载在FILE文件中出现的URLs
-F, –-force-html 把输入文件当作HTML格式文件对待
-B, –-base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–-sslcertfile=FILE 可选客户端证书
–-sslcertkey=KEYFILE 可选客户端证书的KEYFILE
–-egd-file=FILE 指定EGD socket的文件名

下载参数:

–-bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –-tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –-output-document=FILE 把文档写到FILE文件中
-nc, –-no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –-continue 接着下载没下载完的文件
–progress=TYPE 设定进程条标记
-N, –-timestamping 不要重新下载文件除非比本地文件新
-S, –-server-response 打印服务器的回应
–-spider 不下载任何东西
-T, –-timeout=SECONDS 设定响应超时的秒数
-w, –-wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Y, –-proxy=on/off 打开或关闭代理
-Q, –-quota=NUMBER 设置下载的容量限制
–limit-rate=RATE 限定下载输率

目录参数:

-nd –-no-directories 不创建目录
-x, –-force-directories 强制创建目录
-nH, –-no-host-directories 不创建主机目录
-P, –-directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项参数:

-–http-user=USER 设定HTTP用户名为 USER.
-–http-passwd=PASS 设定http密码为 PASS
-C, –-cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许)
-E, –-html-extension 将所有text/html文档以.html扩展名保存
-–ignore-length 忽略 `Content-Length’头域
-–header=STRING 在headers中插入字符串 STRING
-–proxy-user=USER 设定代理的用户名为 USER
-–proxy-passwd=PASS 设定代理的密码为 PASS
-–referer=URL 在HTTP请求中包含 `Referer: URL’头
-s, –-save-headers 保存HTTP头到文件
-U, –-user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION
-–no-http-keep-alive 关闭 HTTP活动链接 (永远链接)
–-cookies=off 不使用 cookies
–-load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
-–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

FTP 选项参数:

-nr, -–dont-remove-listing 不移走 `.listing’文件
-g, -–glob=on/off 打开或关闭文件名的 globbing机制
-–passive-ftp 使用被动传输模式 (缺省值).
-–active-ftp 使用主动传输模式
-–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载参数:

-r, -–recursive 递归下载--慎用!
-l, -–level=NUMBER 最大递归深度 (inf 或 0 代表无穷)
–-delete-after 在现在完毕后局部删除文件
-k, –-convert-links 转换非相对链接为相对链接
-K, –-backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –-mirror 等价于 -r -N -l inf -nr
-p, –-page-requisites 下载显示HTML文件的所有图片

递归下载中的包含和不包含(accept/reject):

-A, –-accept=LIST 分号分隔的被接受扩展名的列表
-R, –-reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –-domains=LIST 分号分隔的被接受域的列表
–-exclude-domains=LIST 分号分隔的不被接受的域的列表
–-follow-ftp 跟踪HTML文档中的FTP链接
–-follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –-ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –-span-hosts 当递归时转到外部主机
-L, –-relative 仅仅跟踪相对链接
-I, –-include-directories=LIST 允许目录的列表
-X, –-exclude-directories=LIST 不被包含目录的列表
-np, –-no-parent 不要追溯到父目录
wget -S –-spider url 不下载只显示过程

wget 命令参数:


URL:下载指定的URL地址。

wget 命令实例:


commandnotfound.cn 下载默认的主页文件(index.htm),该文件将保存到工作目录:

wget https://commandnotfound.cn

commandnotfound.cn 下载文件 archive.zip,并将下载的带宽使用限制为 200k/s

wget --limit-rate=200k https://commandnotfound.cn/files/archive.zip

commandnotfound.cn 下载文件 archive.zip,如果当前目录中存在部分下载,将从停止的地方继续下载,即断点续传功能。

wget -c https://commandnotfound.cn/files/archive.zip

在后台下载 archive.zip,在过渡期间返回到命令提示符。

wget -b https://commandnotfound.cn/files/archive.zip

对于下载非常大的文件的时候,我们可以使用参数 -b 进行后台下载,你可以使用以下命令来察看下载进度:

tail -f wget-log

使用“网络蜘蛛”模式检查远程文件是否存在。输出将类似于以下内容:

wget --spider https://commandnotfound.cn/files/archive.zip

Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: 1206 (1.2K) [application/zip]
Remote file exists.

将网站 www.example.org 的完整镜像下载到文件夹 ./example-mirror 以进行本地查看。

wget --mirror -p --convert-links -P ./example-mirror http://www.example.org

成功传输了 5M 后,停止下载 archive.zip,可以使用 -c 选项恢复此传输。

wget -Q5m https://commandnotfound.cn/files/archive.zip

下载并以不同的文件名保存,并伪装 UserAgent 下载:

wget -O commandnotfound.zip http://commandnotfound.cn/wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"

wget 命令其他骚操作:

wget --tries=40 URL           #增加重试次数
wget -i filelist.txt          #下载多个文件,filelist.txt 里每行一个下载地址
wget --reject=gif URL         #过滤指定格式下载,如过滤掉GIF图片
wget -r -A.pdf URL            #下载指定格式文件
wget -o download.log URL      #把下载信息存入日志文件

#FTP 下载
wget ftp-url
wget --ftp-user=USERNAME --ftp-password=PASSWORD URL

wget 命令的坑:


有时候 wget 遇到 Read error at byte 50955488/82054170 (Connection reset by peer). Retrying.,通常是由于对方服务器的设置导致,可以尝试加入以下参数

#设置 UA
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"

#设置每次下载之间,等待或随机等待时间
--wait=15
--random-wait

wget 命令扩展阅读:




wget 命令评论