当前位置: 首页 > Linux

wget和curl命令详解

时间:2023-04-06 22:07:27 Linux

wget命令wget命令用于从指定的URL下载文件。wget非常稳定。在带宽窄、网络不稳定的情况下具有很强的适应性。如果由于网络原因下载失败,wget会一直尝试,直到下载完整个文件。如果服务器中断了下载过程,它将再次连接到服务器并从中断的地方继续下载。这对于从连接时间有限的服务器下载大文件很有用。命令格式:wget[option]URL资源1.下载单个文件wgethttp://www.example.com/testfile.zip下载的文件保存在当前目录下,下载过程中会显示进度条,包括(下载完成百分比、已下载字节数、当前下载速度、剩余下载时间)2.下载并使用不同的文件名保存wget-Omyfile.ziphttp://www.example.com/testfile.zip-Ocustom文件名:重命名下载的文件。如果不指定“-O”选项,wget会默认使用url路径中最后一个“/”之后的所有字符作为下载的文件名,如wgethttp://www.example.com/testfile?id=123,下载的文件名为testfile?id=1233。断点续传wget-chttp://www.example.com/testfile.zip-c:继续执行上次下载当下载的文件很大或者由于网络原因,文件还没下载完就已经断开连接.使用-c选项可以在网络连接恢复时从之前的下载任务继续下载,而不用重启下载文件wget默认情况下,连接下载文件会重试20次。如果网络一直有问题,可能会下载失败。如果需要,您可以使用--tries增加重试次数。例如,设置最多40次重试:wget--tries=40http://www.example.com/testfile.zip4。后台下载wget-bhttp://www.example.com/testfile.zip-b:later平台运行方式下载时,当下载很大的文件来不及下载时,可以后台下载.后台下载时,会在当前下载目录下创建一个“wget-log”文件记录下载日志,可以使用tail-fwget-log命令查看下载进度5.带宽控制和下载quotawget--limit-rate=downloadspeedhttp://www.example.com/testfile.zip--limit-rate=下载速率:限制下载速率不超过指定速率。例如:--limit-rate=300k当你执行wget时,默认会占用所有可能的宽带下载,但是当你要下载一个大文件,需要下载其他文件时,就需要限制速度。如果还需要限制下载配额,可以使用选项“-Q下载配额”,下载数据超过指定配额就会停止下载。注意该选项对单文件下载无效,只适用于多文件下载或递归下载,例如:wget-Q10m-idowload.txt,如果不指定下载配额,则包含的所有urldownload.txt文件将被下载,如果指定下载配额为10m。如果下载数据超过10m,以下url的下载会停止(正在下载一个文件,下载数据超过下载配额,会继续完成文件的下载,不会立即停止下载)。6、多文件下载wget-iurlfile-iurlfile:从指定文件中获取要下载的URL地址。如果有多个url资源需要下载,可以先创建一个文件,将下载地址的url逐行写入文件中。文件,然后使用“-i”选项指定要批量下载的文件7.密码认证下载wget--http-user=USER--http-password=PASShttp://www.example.com/testfile.zip--http-user=USER:设置http用户名为USER--http-password=PASS:设置http密码为PASS--ftp-user=USER:设置ftp用户名为USER--ftp-password=PASS:设置ftp密码为PASS。对于需要证书认证的网站,只能使用其他下载工具,比如curl8。递归下载wget-rhttp://www.example.com/path1/path2/-r:递归下载整个站点(www.example.com)resource-nd:递归时不创建逐层目录下载,下载所有文件到当前目录;如果不指定该选项,则默认根据资源在站点的位置创建相应的目录-np:递归下载不搜索上级目录,只在当前路径path2下下载;如果不指定该选项,则默认搜索整个站点-A后缀:指定要下载文件的后缀,多个后缀用逗号隔开-R后缀名称:排除要下载文件的后缀,并用逗号分隔多个后缀-L:递归时不输入其他主机。如果不指定此选项,如果站点包含指向外部站点的链接,这可能会导致无限下载内容。例子,只下载path2路径下的所有pdf和png文件,将所有文件保存在当前下载目录下,不另外创建目录:wget-r-nd-np-Apdf,pnghttp://www.example.com/path1/path2/curlcurl命令是一个使用URL规则在命令行上工作的文件传输工具。它支持文件的上传和下载,是一个综合性的传输工具,但按照传统,习惯上称curl为下载工具。作为一个强大的工具,curl支持包括HTTP、HTTPS、ftp等多种协议,还支持POST、cookies、身份验证、从指定偏移量下载部分文件、用户代理字符串、速度限制、文件大小、进度条等功能,ETC。。要自动化网页处理和数据检索,curl可以提供帮助。类似wget的下载功能1.单文件下载curl[-o自定义文件名|-O]http://www.example.com/index.html-o自定义文件名:输出服务器响应到指定文件-O:同-o选项,区别在于url路径最后一个“/”之后的部分作为文件名。如果不指定这两个选项,curl会默认将服务器响应内容输出到终端。2.断点续传通过curl-O-Coffsethttp://www.example.com/testfile.zip-Coffset:从指定的offset继续下载,如果让curl自动,offset以字节为单位可以用"-"而不是偏移量来推断正确的恢复位置,例如:curl-O-C-http://www.example.com/testfile.zip3。带宽控制和下载配额curl-O--limit-rate下载速度http://www.example.com/testfile.zip--limit-rate下载速度:限制下载速度不超过指定的速度。例子:--limit-rate500k--max-filesize下载配额:指定最大可下载文件大小处理复杂的网页请求1.自动重定向curl-Lhttp://www.example.com-L:自动重定向到重定向link(Location)有些链接在访问时会自动跳转(响应状态码为3xx),-L参数会让HTTP请求跟随服务器的重定向。例如:访问“http://a.com”会重定向到“http://b.com”,使用“-L”选项会返回“http://b.com”的响应内容2.显示响应头信息curl-ihttp://www.example.com-i:输出包含响应头信息-I:输出只包含响应头信息,不包含响应内容3.显示通信过程curl-vhttp://万维网。example.com-v:显示一次http通信的全过程,包括端口连接和http请求头信息。如果需要查看额外的通信信息,也可以使用选项“--traceoutputfile”或“--trace-asciioutputfile”,例如:curl--trace-asciioutput.txthttp://www.example.com,打开文件“output.txt”查看结果。4、指定http请求方式curl-Xrequestmethodhttp://www.example.com/test-X请求方式:指定http请求方式(GET|POST|DELETE|PUT等)。默认为“GET”5、添加HTTP请求头curl-H'kev:value'http://www.example.com/test-H'kev:value':添加HTTP请求头。示例:-H'Content-Type:application/json'添加多个请求头,-H选项可以重复多次。例如:curl-H'Accept-Language:en-US'-H'Secret-Message:xyzzy'http://www.example.com/test6。传递请求参数curl-XPOST-d'parameters'http://www.example.com/test-d'parameters':指定POST请求体。参数形式可以是“k1=v1&k2=v2”,也可以是json字符串--data-urlencode'parameter':同-d,区别是发送的数据会自动进行URL编码。使用-d参数后,HTTP请求头会自动加上“Content-Type:application/x-www-form-urlencoded”,请求会自动转为POST方式,所以“-XPOST”可以省略。如果发送的请求体是json字符串,需要指定“Content-Type:application/json”,例如:curl-d'{"user":"zhangsan","password":"123456"}'-H'Content-Type:application/json'http://www.example.com/login当参数较多时,可以将参数数据保存到本地文本,然后从文本中读取参数数据。例如:curl-d'@requestData.txt'-H'Content-Type:application/json'http://www.example.com/login如果想将表单数据作为GET请求发送,可以直接之后将参数添加到url。例如:curlhttp://www.example.com/login?user=zhansan&password=1234567。文件上传curl-F'file=@file'https://www.example.com/test-F'file=@file':模拟http形式向服务器上传文件。更多参数形式:file=@file;name1=value1;name2=value2上传文件时,-F选项默认会在HTTP请求头中添加Content-Type:multipart/form-data,默认文件MIME类型isapplication/octet-stream指定上传文件的MIME类型。以下示例指定MIME类型为“image/png”curl-F'file=@photo.png;type=image/png'https://google.com/profile指定上传文件名。在下面的示例中,原始文件名为“photo.png”,但服务器收到的文件名为“me.png”curl-F'file=@photo.png;filename=me.png'https://google.com/profile8.设置源URLcurl-e'sourceURL'https://www.example.com-e'sourceURL'or--referer'sourceURL':设置源URL,即http请求的Referer字段标头。相当于直接用-H选项设置请求头的“Referer”字段9.设置客户端用户代理curl-A'代理信息'https://www.example.com-A'代理信息'或者--user-agent'代理信息':设置客户端用户代理,即http请求头的User-Agent字段。直接用-H选项设置请求头“User-Agent”字段相当于把“User-Agent”改成Chrome浏览器,例子:curl-A'Mozilla/5.0(Linux;Android6.0;Nexus5Build/MRA58N)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.149MobileSafari/537.36'https://www.example.com去掉“User-Agent”请求头,例子:curl-A''https://www.例如.com10。设置cookiecurl-b'参数'https://www.example.com-b'参数'或--cookie'参数':设置cookie参数。参数形式可以是key1=value1;key2=value2...,也可以是file-cfile:将服务器响应的cookie信息写入文件。至于具体的cookie值,可以从“Set-Cookie”字段中获取,可以将服务器返回的cookie信息保存到一个文件中,然后将这个文件作为下次请求的cookie信息,如下:curl-ccookies.txthttp://example.comcurl-bcookies.txthttp://example.com11。设置服务器认证的用户名和密码curl-u'user[:password]'https://www.example.com-u'user[:password]':设置服务器认证密码的用户名和密码。当只有用户名时,执行curl后会提示输入密码。wget相对于curl是一个独立的下载程序。它不需要额外的资源库。它还允许您下载网页或FTP目录中的任何内容,您可以享受其非凡的下载速度,简单明了。curl是libcurl库支持的多功能工具。它可以下载网络内容,但同时可以做更多的事情。在使用上,wget倾向于下载网络文件;curl倾向于调试网络接口,相当于一个没有图形界面的PostMan工具参考文章:http://www.ruanyifeng.com/blog/2011/09/curl.html