curl 常用命令
-A
-A
参数指定客户端的用户代理标头,即User-Agent
。curl 的默认用户代理字符串是curl/[version]
。
1
| 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' https://google.com
|
也可以通过-H 参数直接指定标头,更改 User-Agent。
1
| curl -H 'User-Agent: php/1.0' https://google.com
|
-b
-b
参数用来向服务器发送 Cookie,可以指定也可以读取本地文件
1
| curl -b 'foo1=bar;foo2=bar2' https://google.com
|
-c
-c
参数将服务器设置的 Cookie 写入一个文件。
1
| curl -c cookies.txt https://www.google.com
|
-d
-d
参数用于发送 POST 请求的数据体。
1
| curl -d'login=emma&password=123'-X POST https://google.com/login
|
使用 -d
参数以后,HTTP 请求会自动加上标头 Content-Type : application/x-www-form-urlencoded
。并且会自动将请求转为 POST 方法,因此可以省略 -X POST
。
-d
参数可以读取本地文本文件的数据,向服务器发送。
1
| curl -d '@data.txt' https://google.com/login
|
–data-urlencode
--data-urlencode
参数等同于 -d
,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。
1
| curl --data-urlencode 'comment=hello world' https://google.com/login
|
-e
-e
参数用来设置 HTTP 的标头 Referer
,表示请求的来源。
1
| curl -e 'https://google.com?q=example' https://www.example.com
|
-H
参数可以通过直接添加标头 Referer
,达到同样效果。
1
| curl -H 'Referer: https://google.com?q=example' https://www.example.com
|
-F
-F
参数用来向服务器上传二进制文件。
1
| curl -F 'file=@photo.png' https://google.com/profile
|
上面命令会给 HTTP 请求加上标头 Content-Type: multipart/form-data
,然后将文件 photo.png
作为 file
字段上传。
-F
参数可以指定 MIME 类型。
1
| curl -F 'file=@photo.png;type=image/png' https://google.com/profile
|
上面命令指定 MIME 类型为 image/png
,否则 curl 会把 MIME 类型设为 application/octet-stream
。
-H
-H
参数添加 HTTP 请求的标头。
1
| curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login
|
-k
-k
参数指定跳过 SSL 检测。
-L
-L
参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。
-o/-O
-o
参数将服务器的回应保存成文件,等同于 wget
命令。区别在于 -o
可以指定文件保存名
-u
-u
参数用来设置服务器认证的用户名和密码。
-v
-v
参数输出通信的整个过程,用于调试。
-x
-x
参数指定 HTTP 请求的代理。如果没有指定代理协议,默认为 HTTP。
-X
-X
参数指定 HTTP 请求的方法。
1
| curl -X POST https://www.example.com
|
使用不同的版本的http协议
默认1.0版本
1 2
| curl --http1.1 https://www.example.com curl --http2 https://www.example.com
|
使用不同的 ssl 版本访问
1 2 3
| curl -1 https://www.example.com curl -2 https://www.example.com curl -3 https://www.example.com
|
使用不同的 ip 协议
1 2
| curl -4 https://www.example.com curl -6 https://www.example.com
|
指定 dns 访问网站
1
| curl --dns-servers 8.8.8.8 https://www.example.com
|
利用 curl 回传文件
采用 golang 编写一个简单的获取文件上传的后端
main.go文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package main import ( "flag" "go-upload/runserver" ) func main() { filedir := flag.String("f", "", "保存路径") lport := flag.String("p", "8088", "运行端口") flag.Parse() if *filedir != "" && *lport != "" { runserver.Runserver(*filedir, *lport) } else { flag.Usage() } }
|
root.go文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package runserver import ( "fmt" "github.com/gin-gonic/gin" "net/http" )
func Runserver(filedir string, lport string) { r := gin.Default() b := filedir r.POST("/upload", func(c *gin.Context) { file, err := c.FormFile("file") s := b + "/" + file.Filename if err != nil { c.String(500, "err") } err = c.SaveUploadedFile(file, s) if err != nil { c.String(http.StatusOK, "err") } c.String(http.StatusOK, "ok") }) r.Run(":" + lport) }
|
1 2
| curl -F "file=@文件路径" http://localhost:8088/upload
|