Administrator
发布于 2024-03-05 / 15 阅读
0
0

命令行网络工具介绍 —— curl、wget

一、命令行请求、下载工具 —— 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&param2=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


评论