cURL

mac2024-04-06  33

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。

查看网页
curl www.baidu.com
保存网页
# 将服务器的回应保存成文件,保存路径是当前路径 curl -o 文件名 www.baidu.com
自动跳转
# 自测跟 curl www.baidu.com 命令一样 curl -L www.baidu.com
显示响应头信息
# -i 会显示响应头信息跟网页代码 curl -i www.baidu.com
显示通信过程
# -v 参数会显示一次http通信整个过程,包括端口连接和相应头信息 curl -v www.baidu.com # 下面的命令可以查看更详细的通信过程 # 直接写入文件名时,保存路径是当前路径 curl --trace output.txt www.baidu.com # 或者 curl --trace-ascii output.txt www.baidu.com
发送表单信息

GET方法:

curl example.com/form.cgi?data=xxx

POST方法:

# POST 方法必须把数据跟网址分开 curl -X POST --data "data=xxx" example.com/form.cgi # 参数--data-urlencode 可以给表单数据进行URL编码 curl -X POST --data-urlencode "data=April 1 " example.com/form.cgi

-d 参数用于发送 post 请求的数据体

# 使用-d 参数后,http请求会自动加上标头Content-Type:application/x-wwww.form-urlencoded curl -d "login=emma&password=123" -X POST https://baidu.com

PUT方法:

curl -X PUT -d '123123123' http://127.0.0.1:3001/1

DELETE方法:

curl -X DELETE http://127.0.0.1:3001/1
HTTP 动词

curl默认的http动词是get,使用 -X 参数可以支持其他动词:

curl -X POST www.baidu.com curl -X DELETE www.baidu.com
文件上传

表单样式:

<form method="POST" enctype='multipart/form-data' action="upload.cgi">   <input type=file name=upload>   <input type=submit name=press value="OK"> </form> curl --form upload=@localfileName --form press=ok url

-F 参数可以用来向服务器上传二进制文件

# 下面命令会给HTTP请求加上标头 Content-Type:multipart/form-data,然后将文件photo.png作为file 字段上传 curl -F "file=@photo.png" http://baidu.com # -F 参数也可以指定 MIME 类型 curl -F "file=@photo.png;type=image/png" http://baidu.com # -F 参数也可以指定文件名 curl -F "file=@photo.png;filename=me.png" https:baidu.com # 上面命令中,原始文件名为photo.png,但服务器接收到的文件名为me.png
Referer字段

在请求头中添加 referer 字段,表示从哪里跳转过来

curl --referer https://baidu.com

-e 参数也可以用来设置HTTP的标头Referer,表示请求的来源

curl -e "https://baidu.com?q=example" https://example.com
User Agent 字段

这个字段是用来表示客户端是设备信息,服务器有时会根据这个字段,针对不同设备返回不同格式网页

curl --user-agent "[user agent]" [url]
Cookie

“–cookie” 参数可以让 curl 发送 cookie 字段

curl --cookie "name=xxx" www.baidu.com # "-c cookie-file" 可以保存服务器返回的cookie到文件 curl -c cookies https://baidu.com # "-b cookie-file" 可以使用这个文件作为cookie 信息 curl -b cookies https://baidu.com

-b 参数用来向服务器发送 Cookie

# 下面命令会生成一个标头 Cookie:foo=bar,向服务器发送一个名为foo\值为bar的Cookie curl -b "foo=bar" https://baidu.com # 下面命令读取本地文件 cookies.txt curl -b cookies.txt https://baidu.com

具体的cookie值,可以从http response 头信息的 set-cookie 字段中得到

增加头信息

在请求头部消息中增加一个头信息

curl --header "Content-Type:application/json" http://baidu.com
模拟慢网速的环境
# 宽限制在每秒 200K 字节 curl --limit-rate 200k https://baidu.com
指定HTTP请求的代理

-x

# 下面命令指定HTTP请求通过myproxy.com:8080 的sockes5代理发出 # 不指定sockes5 代理的话,默认为HTTP curl -x socks5://james:cats@myproxy.com:8080 https://www.baidu.com
最新回复(0)