网站首页 文章专栏 Curl 各种用法
Curl 各种用法
创建于:2021-07-04 08:31:45 更新于:2024-05-06 14:59:04 羽瀚尘 408
Curl Curl



[toc]

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载。curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。

Get


sh curl http://httpbin.org/get

返回
sh { "args": {}, "headers": { "Accept": "*/*", "Host": "httpbin.org", "User-Agent": "curl/7.52.1", "X-Amzn-Trace-Id": "Root=1-5f97e39f-2fe78673589b8b86539a4dd7" }, "origin": "111.225.144.239", "url": "http://httpbin.org/get" }

Post 表单

sh curl -d "a=1&b=2" http://httpbin.org/post
返回
sh { "args": {}, "data": "", "files": {}, "form": { "a": "1", "b": "2" }, "headers": { "Accept": "*/*", "Content-Length": "7", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "curl/7.52.1", "X-Amzn-Trace-Id": "Root=1-5f97e603-616effff445650dd1ccca2eb" }, "json": null, "origin": "111.225.144.219", "url": "http://httpbin.org/post" }

HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded

Post json

sh curl -H "Content-Type:application/json" -X POST -d '{"a":1,"b":2}' http://httpbin.org/post
返回
sh { "args": {}, "data": "{\"a\":1,\"b\":2}", "files": {}, "form": {}, "headers": { "Accept": "*/*", "Content-Length": "13", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "curl/7.52.1", "X-Amzn-Trace-Id": "Root=1-5f97e652-0e71be233088ec5145f64e6a" }, "json": { "a": 1, "b": 2 }, "origin": "111.225.144.175", "url": "http://httpbin.org/post" }

可以看到 post 数据放到了 data 里面,并且是 json 格式。httpbin.org 自动完成 json 解码并返回。

修改 User-Agent

方法 1 :使用 -A

sh curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' http://httpbin.org/get
返回
sh { "args": {}, "headers": { "Accept": "*/*", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-5f97e423-71f11e691a6938521e0680a8" }, "origin": "111.225.144.155", "url": "http://httpbin.org/get" }
可以看到其确实修改了 User-Agent

方法 2:使用 -H

sh curl -H 'User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' http://httpbin.org/get
返回
sh { "args": {}, "headers": { "Accept": "*/*", "Host": "httpbin.org", "User-Agent": "curl/7.52.1,Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-5f97e52e-0324cf4d2903376b6ce02b78" }, "origin": "111.225.144.175", "url": "http://httpbin.org/get" }
可以看到,原来的 curl/7.52.1 依然存在,仅是增加了一个 agent

保存 Cookies

Todo

设置 Cookies

命令行设置

sh curl -b 'user=foo;session=abcedfg' http://httpbin.org/get
返回
sh { "args": {}, "headers": { "Accept": "*/*", "Cookie": "user=foo;session=abcedfg", "Host": "httpbin.org", "User-Agent": "curl/7.52.1", "X-Amzn-Trace-Id": "Root=1-5f97e721-6a05dbeb1cfb0dcd16639e9e" }, "origin": "111.225.144.135", "url": "http://httpbin.org/get" }
可以看到,在返回的 headers.Cookie 里面有我们传过去的 Cookie

用文件设置

Todo

参考

  1. https://www.ruanyifeng.com/blog/2019/09/curl-reference.html