沙滩星空的博客沙滩星空的博客

linux下curl命令的用法

-X 指定HTTP动词,默认GET
-d/--data 传送POST数据
-H/--header 发送头部信息
-I/--head 只打印头部信息
-o/--output 保存网页为指定文件
-x/--proxy <host[:port]> 在给定的端口上使用HTTP代理


注:

在linux下

curl http://mywebsite.com/index.php?a=1&b=2&c=3

GET参数只能获取到参数a

由于url中有&,其他参数获取不到。
在linux系统中& 会使进程系统后台运行。

必须加反斜杠 \& 字符进行转义才能GET获取到所有参数

curl http://mywebsite.com/index.php?a=1\&b=2\&c=3

保存输出到指定文件

curl -o baidu.html www.baidu.com

使用代理

curl -x 'http://user:password@proxyhost:port' www.google.com

模拟POST表单提交

curl  -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "param1=value1&param2=value2"

POST提交json数据

curl  -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}'

POST提交文件数据

curl -X POST -H "Content-Type: application/json" -d "@data.json" http://localhost:3000/data
curl -X POST -H "content-type:application/xml" -d @/home/data.xml https://test.com/receipt.php

data.json

{"token": "34fd666d1ba8f614e1c772a5d7f3310b","goods_id":10001,"goods_num": 1,"goods_sku_id": 10002}

POST请求务必带请求头参数-H, json 数据的最后一个元素,不能有 逗号 , 不然服务器很可能识别不了。


实践:

模拟浏览器下载JDK。
打开谷歌浏览器,进入https://www.oracle.com官网。进入下载连接下载。发现链接经过多次跳转。

https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.deb
https://edelivery.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.deb
http://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.deb?AuthParam=1567250286_bfef1f20bca2e4e33d9976a0ee0ea9ba
https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.deb?AuthParam=1567250286_bfef1f20bca2e4e33d9976a0ee0ea9ba

查看第一次跳转的Headers请求头,记下User-Agent, Referer, Cookie
初始链接为CURL的请求链接:

https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.deb

请求方式-X GET, 跟随链接跳转-L,保存文件 -o jdk-12.0.2_linux-x64_bin.deb
附加Headers请求头:User-Agent, Referer, Cookie
Headers的Cookie包含双引号,双引号前,记得用转义符\

curl -X GET -L -o jdk-12.0.2_linux-x64_bin.deb \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36" \
-H "Referer: https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html" \
-H "Cookie: s_fid=264A5B6C979D3820-3ADF2A53FA2A980A; s_cc=true; ELOQUA=GUID=38379DC4766948388D1A5FDE4F4350EA; _gcl_au=1.1.1790173711.1567247965; gpw_e24=https%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk12-downloads-5295953.html; oraclelicense=accept-securebackup-cookie; s_sq=%5B%5BB%5D%5D; s_nr=1567248765957-New; RT=\"sl=2&ss=1567247819229&tt=208584&obo=0&bcn=%2F%2F17d98a5f.akstat.io%2F&sh=1567248071253%3D2%3A0%3A208584%2C1567247963769%3D1%3A0%3A144484&dm=oracle.com&si=8e134f06-4f3a-46fd-ba05-f13e957361a0&nu=https%3A%2F%2Fdownload.oracle.com%2Fotn-pub%2Fjava%2Fjdk%2F12.0.2%2B10%2Fe482c34c86bd4bf8b56c0b35558996b9%2Fjdk-12.0.2_linux-x64_bin.deb&cl=1567248765945&r=https%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk12-downloads-5295953.html&ul=1567248766962\""  \
https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.deb

注:

如果只是下载文件,推荐使用wget命令。
实践发现 wget -c 命令下载文件,速度比 curl 快得多。原因暂不明确。

使用 wget -c 断点续传

wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

使用 wget -O 下载并以不同的文件名保存

wget -O wordpress.tar.gz  http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz



wget命令详解 https://www.cnblogs.com/sx66/p/11887022.html

curl工具post用法 https://blog.51cto.com/xwandrew/2128988

未经允许不得转载:沙滩星空的博客 » linux下curl命令的用法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址