在您的Linux终端中从Internet下载文件。wget是一个免费的网页文件下载工具。它将来自互联网的数据保存到文件中或在终端上显示。这实际上也是Firefox或Chromium等网络浏览器的工作方式。一个区别是Web浏览器默认在图形窗口中呈现网页,并且通常需要用户主动操作它们。wget工具以非交互方式使用,这意味着您可以使用脚本或定期使用wget下载文件,无论您是否在电脑前。使用wget下载文件您可以通过提供指向特定URL的链接来使用wget下载文件。如果您提供默认为index.html的URL,则将下载该索引页面。默认情况下,该文件将下载到您当前的工作目录,并保留其原始名称。$wgethttp://example.com--2021-09-2017:23:47--http://example.com/Resolvingexample.com...93.184.216.34,2606:2800:220:1:248:1893:25c8:1946正在连接到example.com|93.184.216.34|:80...已连接。已发送HTTP请求,正在等待响应...200OKLength:1256(1.2K)[text/html]Savingto:'index.html'通过使用带有-符号的--output-document,您可以指示wget将数据发送到标准输出:$wgethttp://example.com--output-document-|head-n4
ExampleDomain您可以使用--output-document选项(缩写为-O)为下载的文件命名任何您想要的名称:$wgethttp://例子。com--output-documentfoo.htmlResumedownload如果您正在下载一个非常大的文件,您可能会遇到下载中断。使用--continue(缩写为-c),wget可以确定从文件中的何处继续下载。也就是说,下次您下载4GB的Linux发行版ISO时,如果出现问题并打扰您,您不必重新开始。$wget--continuehttps://example.com/linux-distro.iso下载一系列文件如果你想下载的不是单个大文件,而是一系列文件,wget也能提供很好的帮助。如果你知道要下载的文件的路径和文件名的一般格式,你可以使用Bash语法来表示一系列数字的开始和结束来表示一系列文件名:$wgethttp://example.com/file_{1..4}.webp镜像整个站点使用--mirror选项您可以下载整个站点,包括它的目录??结构。这和使用选项--recursive--levelinf--timestamping--no-remove-listing是一样的,表示可以无限递归获取你指定域下的所有内容。但您也可能获得比预期更多的内容,具体取决于网站本身的年龄。如果你使用wget打包整个站点,选项--no-cookies--page-requisites--convert-links非常有用,它确保打包的站点是全新的和完整的,并且副本站点或多或少是独立的Theself-contained。修改HTML标头计算机发送的通信消息包含大量用于数据交换的元数据。HTTP标头是初始数据的一部分。当您浏览网站时,您的浏览器会发送HTTP请求标头。使用--debug选项查看wget为每个请求发送的标头:$wget--debugexample.com---requestbegin---GET/HTTP/1.1User-Agent:Wget/1.19。5(linux-gnu)Accept:*/*Accept-Encoding:identityHost:example.comConnection:Keep-Alive---requestend---您可以使用--header选项修改请求标头。事实上,这通常用于模仿特定的浏览器,测试或兼容一些只能与特定代理通信的编码不良的站点。将请求识别为来自Windows上的MicrosoftEdge:$wget--debug--header="User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36Edg/91.0.864.59"http://example.com你也可以伪装成一些移动设备:$wget--debug--header="User-Agent:Mozilla/5.0(iPhone;CPUiPhoneOS13_5_1,如MacOSX)AppleWebKit/605.1.15(KHTML,如Gecko)Version/13.1.1Mobile/15E148Safari/604.1"http://example.com查看响应标头与浏览器如何发送请求标头同样,响应也包含头信息。您可以使用--debug选项查看响应中的标头信息:$wget--debugexample.com[...]---responsebegin---HTTP/1.1200OKAccept-Ranges:bytesAge:188102Cache-控制:max-age=604800Content-Type:text/html;charset=UTF-8Etag:"3147526947"Server:ECS(sab/574F)Vary:Accept-EncodingX-Cache:HITContent-Length:1256---responseend---200OKRegisteredsocket3forpersistentreuse.URI内容编码='UTF-8'Length:1256(1.2K)[text/html]Savingto:'index.html'processing301response200responsecode意味着一切都在意料之中。301响应表示URL已永久移动到另一个位置。这是站点管理员为访问旧地址的用户留下“线索”以便在内容迁移后找到新地址的常用方法。默认情况下,wget将遵循重定向,这是大多数情况下用户想要的。当然,你可以使用--max-redirect选项来控制wget默认处理301响应重定向的次数。将其设置为0意味着不会自动重定向到新地址:$wget--max-redirect0http://iana.org--2021-09-2111:01:35--http://iana。org/Resolvingiana.org...192.0.43.8,2001:500:88:200::8Connectingtoiana.org|192.0.43.8|:80...已连接。已发送HTTP请求,等待响应...301永久移动位置:https://www.iana.org/[以下]超过0次重定向。同时你也可以设置成其他值来控制wget可以重定向多少次。扩展缩短的URL使用--max-redirect选项对于在实际访问缩短的URL之前查看它们很有用。缩写URL对于用户无法完整复制和粘贴长URL的印刷媒体或具有字符限制的社交网络很有用(这在Mastondon等现代开源社交网络上不是问题)。这个缩写有点冒险,因为这些目的地隐藏在自然界中。结合使用--head选项和--location选项来检查HTTP标头并解压缩最终目的地,您可以在不加载整个资源的情况下查看缩写URL的完整内容:$wget--max-redirect0"https://bit.ly/2yDyS4T"--2021-09-2111:32:04--https://bit.ly/2yDyS4TResolvingbit.ly...67.199.248.10,67.199.248.11正在连接到bit.ly|67.199.248.10|:443...已连接。已发送HTTP请求,正在等待响应...301永久移动位置:http://example.com/[以下]超过0个重定向。Location输出的倒数第二行,显示实际目的地。使用wget如果您开始考虑使用单个命令来实现访问整个网站的过程,wget可以帮助您快速高效地获取Internet上的信息,而无需将精力浪费在图形界面上。为了帮助您将其构建到您通常的工作流程中,我们创建了一个常见的wget用法和语法列表,包括使用它来查询API的概述。在此处下载Linuxwget备忘单。