Linux命令CURL用法


Curl是一个命令行方式下传输数据的开源传输工具,支持多种协议包括:FTP,HTTP,HTTPS,IMAP,POP3,TELNET等。同样支持HTTP POST方法,PUT方法,FTP上传,cookie,用户名/密码认证,下载文件端点续传等,功能十分强大。

1. 先来试试

curl http://www.baidu.com ,回车之后,HTML内容就显示在屏幕上了。

2. 下载

curl –o baidu.html http://www.baidu.com ,执行后还可以看到下载进度提示,完成100%后会自动退出了,把网页保存到baidu.html中了。

它还有一个大写O的选项,是按照服务器上的文件名保存到本地,如果执行curl –O http://www.baidu.com ,是会报错的,提示找不到文件名,如果换成curl –O http://baike.baidu.com/view/1326315.htm , 就自动保存文件为1326315.html。

Windows下像flashget这样的工具还支持分块以及断点续传,curl也毫不示弱。

-C或--continue-at:断点续传,用法如下:

curl -C http://www.example.com

-r或--range:分块下载,用法:

curl -r 0-10240 -o "example.part1" http://www.example.com/example.zip &

curl -r 10241-20480 -o "example.part2"

http://www.example.com/example.zip

其中加&表示在后台执行,需要按CTRL+C才能退出。

不过下载完后需要自己把这些破碎的文件合并起来

如果你用UNIX或苹果,用 cat example.part* > example.zip就可以

如果用的是Windows,用copy /b example.part1+example.part2 example.zip来解决

3. 上传

-T/--upload-file:往服务器上传文件,用法:

curl -T "img[1-1000].png" ftp://example.com/upload/

或上传多个文件

curl -T "{file1,file2}" http://www.example.com

4. POST方法

-d或--data参数:post请求,用法为curl -d “id=1&name=test” http://example.com/example.php ,

需把请求的参数和URL分开,同时可以使用curl -d “id=1” -d “name=test” http://example.com/example.php ,相当于提交了两个参数。当提交的参数值中有特殊字符就需要先转义。如空格时,就需要转义成%20。

--data-urlencode参数:就可以自动转义特殊字符,无需人工事先转义。

-F或--form:将本地文件上传到服务器,用法为:curl -F “filename=@/home/test/test.pic” http://example.com/example.php 。千万不能漏掉@符号。

5. 设置referer

有时候我们如果直接请求某个URL不能成功,它需要判断referer是否正确,那就可以通过-e或--referer参数模拟

curl --referer http://www.example.com http://www.example.com

6. 指定User Agent

-A/--user-agent:伪装成指定的浏览器Chrome访问,用法:

curl -A “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36” http://www.example.com

7. 伪造cookie

-b或--cookie: 有两种用法,一是指定参数和值:curl --cookie "name=xxx" http://www.example.com ;二是从文件读取:curl -b /cookie.txt http://www.example.com

8. 保存cookie

-c/--cookie-jar:curl命令执行后保存操作时生成的cookie到文件:

curl -c ./cookie.txt -d username=aaaa -d pwd=****** http://www.example.com

9. 定义输出显示内容

现在为止对它的崇拜已经是犹如滔滔江水连绵不绝了,慢!还有一个powerful的选项.

-w/--write-out: 可以定义输出的内容,如常用的http码,tcp连接时间,域名解析的时间,握手时间及第一时间响应时间等,非常强大。

用法如:

curl -o /dev/null -s -w %{http_code} "http://www.baidu.com" 打印出返回的http码

curl -o /dev/null -s -w “time_total: %{time_total}\n" "http://www.baidu.com" 打印响应时间

如果你对curl还有更大的兴趣,其他更多的功能请找无所不能的男人帮忙吧!


### 如何在 Linux 中使用 `curl` 命令 #### 安装 curl 对于大多数现代 Linux 发行版,默认情况下已经安装了 `curl`。如果没有,则可以通过包管理器来安装它。 - 对于基于 Debian 的系统,如 Ubuntu: ```bash sudo apt-get update && sudo apt-get install curl ``` - 对于基于 Red Hat 的系统,比如 CentOS 或 Fedora: ```bash sudo yum install curl ``` 或者,在较新的版本上可能需要使用 `dnf` 替代 `yum`[^1]。 #### 使用 curl 下载文件 `curl` 是一个强大的工具,可以用来下载网络资源并保存到本地磁盘中。最简单的例子是从互联网获取网页内容并将它们显示在终端里: ```bash curl http://example.com/ ``` 如果希望将远程服务器上的文件下载下来而不是打印其内容至标准输出流,那么应该加上 `-o` 参数指定目标路径名或带有通配符的目标目录名称;也可以利用 `-O` 来保持原始文件的名字不变而直接存储到当前工作空间内[^2]。 #### 设置 HTTP 请求头 有时候为了模拟浏览器行为或者其他特殊需求,发送自定义HTTP头部可能是必要的操作之一。这可通过 `-H` 选项完成,后面跟随具体的键值对字符串表示法(即 `"Key: Value"`)。例如设置 User-Agent 字段为 Chrome 浏览器样式: ```bash curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" https://www.example.com ``` #### POST 数据提交 当向 Web API 提交表单数据或其他类型的负载体时,通常会采用POST方法。此时可借助 `-d` 参数传递要上传的数据给服务端处理程序解析。下面是一个简单实例展示了怎样通过 JSON 格式的请求体来进行 RESTful 风格的服务调用[^3]: ```bash curl -X POST \ -H 'Content-Type: application/json' \ -d '{"username":"admin","password":"secret"}' \ https://api.example.com/login ``` #### 处理 HTTPS 和 SSL/TLS 默认情况下,`curl` 支持安全协议传输层安全性(TLS),并且能够自动验证证书链的有效性和主机名匹配情况。然而某些场景下可能会遇到不受信任CA签发的SSL证书问题,这时可以通过添加参数 `--insecure` 跳过这些检查过程继续执行后续动作,但这不是推荐的做法因为存在安全隐患风险[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值