简介
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。
命令
-A
参数指定客户端的 User-Agent。curl 的默认用户 UA 是 curl/[version]
curl -A "UA"
-b
参数用来向服务器发送 Cookie。也可以读取本地文本文件(cookie)发送至服务器
curl -b "token=123" curl -b cookie.txt
-c
参数将服务器设置的 Cookie 写入一个文件。
curl -c cookie.txt
-d
参数用于发送 POST 请求的数据体
curl -d "param=123"
--data-urlencode
参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。
curl --data-urlencode "param=测试"
-e
参数用来设置 HTTP 的标头 Referer,表示请求的来源。
curl -e "https://www.baidu.com"
-F
参数用来向服务器上传二进制文件。
#上面命令会给 HTTP 请求加上标头 Content-Type: multipart/form-data,然后将文件 test.jpg 作为 file 字段上传。 curl -F "[email protected]" #也可以知道 MIME curl -F "[email protected];type=image/jpeg" #也可以重命名 curl -F "[email protected];filename=123.jpg"
-G
参数用来构造 URL 的查询字符串。
#命令会发出一个 GET 请求,实际请求的 URL 为 https://google.com/search?q=kitties&count=20。如果省略--G,会发出一个 POST 请求。 curl -G -d 'q=param' -d 'count=20'
-H
参数添加 HTTP 请求的标头。
#所有标头都可以设置,cookie,UA,来源等. curl -H 'Accept-Language: en-US'
-i
参数打印出服务器回应的 HTTP 标头
curl -i https://www.example.com
-I
参数向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。
#--head 参数等同于-I curl -I https://www.example.com
-k
参数指定跳过 SSL 检测。
-L
参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。
--limit-rate
用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境。
-o
参数将服务器的回应保存成文件,等同于 wget 命令
-O
参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名。
-s
参数将不输出错误和进度信息。
-S
参数指定只输出错误信息,通常与-s 一起使用。
-u
参数用来设置服务器认证的用户名和密码。
curl -u 'bob:12345'
-v
参数输出通信的整个过程,用于调试。
-x
参数指定 HTTP 请求的代理。
#socks5 curl -x socks5://user:[email protected]:8080 #HTTP curl -x user:[email protected]:8080
-X
参数指定 HTTP 请求的方法。