一、命令行请求、下载工具 —— curl、Wget
curl 和 Wget(web get) 都是开源、免费的命令行请求工具,都支持 HTTP - Get、Post 请求。curl 支持更加广泛的网络协议,可以自定义各种请求参数,在模拟 Web 请求上面更擅长;wget 支持断点续传、递归下载,所以在文件下载方面更擅长。类比的话,curl 是精简的命令行浏览器,wget 则是迅雷下载器。
curl 在 win10 及之后的版本都预安装了,wget 需要另外安装。
二、常用命令
1、curl - post(x-www-urlencoded-formdata)
curl http://httpbin.org/post -X POST -d 'u=admin&pw=123456'
2、curl - post(json)
这里使用了 Unix/Linux 命令行中的转义字符
\
,用于表示命令行的继续,用来确保命令行在多行中正确解析 。重点:
\
前面要留一个空格,\
必须是最后一个字符(后面不能有空格),不然命令行会截断命令。
curl -vs -k -H "Accept: application/json" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"username":"123456"}' \
http://httpbin.org/post
# 引入 json 文件作为参数
curl -H "Content-Type: application/json; charset=utf-8" \
-d @param.json http://httpbin.org/post
参数解析:
-v:verbose 打印详细信息(和 -s 一同时,-s失效)
-s:--silent 不输出任何信息(header、连接信息等,只有返回信息,默认)
-k:跳过SSL检测。服务器可能使用自签名的SSL证书不加会报错,目前没遇到过。
-X:指定请求方法
-d:发送 POST 请求提交的数据,使用 -d 参数后,会自动将请求转为POST,如果没有指定 Content-Type,HTTP 请求会自动加上标头 Content-Type : application/x-www-form-urlencoded,可省略 -X POST
-H(--header):指定请求头(一个请求头参数对应一个 -H)
@param.json:引入文件作为参数
3、curl - post(multipart/form-data)表单提交
curl -F "username=root" -F "password=root" \
-F "head_image=@test.jpg" http://httpbin.org/post
4、wget - post(x-www-urlencoded-formdata)不推荐
# -O - 打印结果的标准输出(控制台),没有此参数默认保存到 post 文件中
wget --post-data="param1=value1¶m2=value2" -O - http://httpbin.org/post
5、wget - post (json) 不推荐
# -O - 打印结果的标准输出(控制台),没有此参数默认保存到 post 文件中
wget --header="Content-Type:application/json" --post-file=file.json -O - http://httpbin.org/post
三、下载命令
1、下载文件
curl -O http://man.linuxde.net/text.iso # --remote-name 保留远程文件
wget http://www.linuxde.net/text.iso # 不用参数,直接下载文件
2、下载并重命名
curl -o rename.iso http://man.linuxde.net/text.iso # --output 输出写到指定文件
wget -O rename.zip http://www.linuxde.net/text.iso # --output-document
3、断点续传
curl -O -C - http://man.linuxde.net/text.iso # --continue-at 断点续传
wget -c http://www.linuxde.net/text.iso
4、限速下载
curl --limit-rate 50k -O http://man.linuxde.net/text.iso
wget --limit-rate=50k http://www.linuxde.net/text.iso
5、wget打包网站下载
# --mirror:镜像整个网站,包括子目录和文件
# --convert-links:转换下载的文件中的链接,使其指向本地文件,以便离线浏览
# -p : 下载页面内所有资源,包括图片,视频,音频等
# -P 指定目录,不用则当前目录
wget --mirror -p --convert-links -P /var/www/html http://man.linuxde.net/
5、模拟浏览器(设置 User-Agent)
如果远程服务器阻止 wget 下载资源,我们可以通过 -U 选项模拟浏览器进行下载。
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" http://httpbin.org/get
wget -U 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.43 Safari/537.36' https://download.redis.io/releases/redis-6.0.8.tar.gz