Shell下curl的使用

本文详述了curl命令的使用方法,包括其基本语法、常见选项、URL类型扩展功能以及如何通过curl实现web浏览器的基本功能。文章还介绍了curl支持的协议、环境变量和高级特性,帮助开发者更高效地进行HTTP请求。

 curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。当然curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。本文只探讨其强大的HTTP功能。

通用语法:

curl [option] [URL...]

在处理URL的时候其支持类型于SHELL的名称扩展功能,如http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL

下面介绍选项功能:

不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上

-o out  将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件

-O  按服务器上的名称保存下载的文件

-r/--range  from-to 下载指定range内的数据

-C 在保存文件时进行续传

-A/--user-agent  <ua>  指定发送请求的用户代理 如 curl -A My-Agent/1.0.0 www.apple.com 

-x  ip:port 指定使用的http代理,如curl -x 192.168.1.1:8080 www.apple.com

-D head.txt  将服务器的返回的header保存为文件,头部的cookie也可被保存   curl -D header.txt www.apple.com

-c <file> 保存服务器的cookie文件

-b/--cookie  <name=data>   向服务器提交cookie,若无=则name视为文件名  curl -b cookie.txt www.apple.com

-e url  设置引用头的值

-T localfile  向服务器PUT文件 如curl -T 1.mp3  www.apple.com/upload.php

-d <key=value>  向服务器POST表单数据 如curl -d "order=111&count=2" http://www.apple.com/buy

-F <key=value> 向服务器POST表单 curl -F "web=@index.html;type=text/html" url.com

如果希望从本地文件中获取表单数据,则在文件名前加@ 如 curl -d @data.xml http://www.apple.com

若希望从标准输入获取则用curl -d - http://www.apple.com

-E cert.pem  指定本地证书

-H <header:value>  为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.apple.com

-I  构造一个HEAD请求

-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com

--compressed 采用压缩方式接收返回数据

--connect-timeout <s> 设置超时时间

-v 详细输出,包含请求和响应的首部

--retry num

--retry timeo 指定重试的次数和间隔

--tcp-nodelay 打开TCP_NODELAY选项  不进行捎带确认

环境 变量:http_proxy [protocol://]<host>[:port]




 





在Linux Shell环境下,`curl` 是一个非常强大的工具,用于传输数据,支持多种协议,下面结合参考内容介绍其常见使用方法: ### 发送POST请求并携带JSON数据 可以使用 `-d` 参数来指定POST请求的数据,同时使用 `-H` 参数来设置请求头。示例如下: ```bash curl -d '{"Pin": "${line}"}' -H"tp-app-id:publicclouds" -H"tp-sig:e26fe2c1924d9b4d86d19145434e3a5e" -H"tp-ts:14x6204133" -H"Content-Type:application/json" http://localhost:8070/alarm/activityPush ``` 此命令向 `http://localhost:8070/alarm/activityPush` 发送一个POST请求,携带JSON格式的数据,同时设置了多个请求头信息 [^1]。 ### 定时执行curl请求 输入以下指令可以向指定URL发送一个带有JSON数据的POST请求: ```bash curl 'https://www.zhaodao88.com/message/webhook/send?code=2e0e2152-8c88-4096-8370-25204c87676b' -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": {"content": "找到APP"}}' ``` 注意需要将URL替换成实际要请求的地址 [^2]。 ### 将返回内容输出到文件 使用 `-O` 参数可以将返回内容输出到当前目录下,和URL中文件名相同的文件中(不含目录),示例: ```bash curl -O http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz ``` 此命令会将指定URL的文件下载到当前目录,并以URL中的文件名命名 [^3]。 ### 将curl结果存入变量 在Shell脚本中可以将 `curl` 的结果存入变量,同时在获取MD5值时,`echo` 要加 `-n` 以避免换行影响输出结果 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值