网站首页 文章专栏 Curl 各种用法
[toc]
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载。curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
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"
}
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
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 解码并返回。
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
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
。
Todo
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