curl命令

本文详细介绍了CURL命令的各种使用场景,包括下载文件、断点续传、网络限速、文件重定向等。此外还讲解了如何使用CURL进行授权访问、上传文件、设置代理以及传递请求数据等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址: http://www.thegeekstuff.com/2012/04/curl-examples/


下载单个文件,默认将输出打印到标准输出中(STDOUT)中

curl http://www.centos.org

通过-o/-O选项保存下载的文件到指定的文件中:
-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地

1 # 将文件下载到本地并命名为mygettext.html
2 curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
3 
4 # 将文件保存到本地并命名为gettext.html
5 curl -O http://www.gnu.org/software/gettext/manual/gettext.html

同样可以使用转向字符">"对输出进行转向输出

同时获取多个文件

1 curl -O URL1 -O URL2

若同时从同一站点下载多个文件时,curl会尝试重用链接(connection)。

通过-L选项进行重定向
默认情况下CURL不会发送HTTP Location headers(重定向).当一个被请求页面移动到另一个站点时,会发送一个HTTP Loaction header作为请求,然后将请求重定向到新的地址上。
例如:访问google.com时,会自动将地址重定向到google.com.hk上。

复制代码
 1 curl http://www.google.com
 2 <HTML>
 3 <HEAD>
 4     <meta http-equiv="content-type" content="text/html;charset=utf-8">
 5     <TITLE>302 Moved</TITLE>
 6 </HEAD>
 7 <BODY>
 8     <H1>302 Moved</H1>
 9     The document has moved
10     <A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/&amp;ust=1379402837567135amp;usg=AFQjCNF3o7umf3jyJpNDPuF7KTibavE4aA">here</A>.
11 </BODY>
12 </HTML>
复制代码

上述输出说明所请求的档案被转移到了http://www.google.com.hk。

这是可以通过使用-L选项进行强制重定向

1 # 让curl使用地址重定向,此时会查询google.com.hk站点
2 curl -L http://www.google.com

断点续传

通过使用-C选项可对大文件使用断点续传功能,如:

复制代码
1 # 当文件在下载完成之前结束该进程
2 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
3 ##############             20.1%
4 
5 # 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载
6 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
7 ###############            21.1%
复制代码

对CURL使用网络限速
通过--limit-rate选项对CURL的最大网络使用进行限制

1 # 下载速度最大不会超过1000B/second
2 
3 curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

下载指定时间内修改过的文件

当下载一个文件时,可对该文件的最后修改日期进行判断,如果该文件在指定日期内修改过,就进行下载,否则不下载。
该功能可通过使用-z选项来实现:

1 # 若yy.html文件在2011/12/21之后有过更新才会进行下载
2 curl -z 21-Dec-11 http://www.example.com/yy.html

CURL授权

在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权

1 curl -u username:password URL
2 
3 # 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露
4 curl -u username URL

从FTP服务器下载文件

CURL同样支持FTP下载,若在url中指定的是某个文件路径而非具体的某个要下载的文件名,CURL则会列出该目录下的所有文件名而并非下载该目录下的所有文件

1 # 列出public_html下的所有文件夹和文件
2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
3 
4 # 下载xss.php文件
5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

上传文件到FTP服务器

通过 -T 选项可将指定的本地文件上传到FTP服务器上

复制代码
# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
复制代码

获取更多信息

通过使用 -v 和 -trace获取更多的链接信息

通过字典查询单词

复制代码
1 # 查询bash单词的含义
2 curl dict://dict.org/d:bash
3 
4 # 列出所有可用词典
5 curl dict://dict.org/show:db
6 
7 # 在foldoc词典中查询bash单词的含义
8 curl dict://dict.org/d:bash:foldoc
复制代码

为CURL设置代理

-x 选项可以为CURL添加代理功能

1 # 指定代理主机和端口
2 curl -x proxysever.test.com:3128 http://google.co.in

 

其他网站整理

保存与使用网站cookie信息

1 # 将网站的cookies信息保存到sugarcookies文件中
2 curl -D sugarcookies http://localhost/sugarcrm/index.php
3 
4 # 使用上次保存的cookie信息
5 curl -b sugarcookies http://localhost/sugarcrm/index.php

传递请求数据

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据
可以通过 --data/-d 方式指定使用POST方式传递数据

复制代码
1 # GET
2 curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
3 
4 # POST
5 curl -u username --data "param1=value1&param2=value" https://api.github.com
6 
7 # 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
8 curl --data @filename https://github.api.com/authorizations
复制代码

注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

1 curl -d "value%201" http://hostname.com

在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。

1 curl --data-urlencode "value 1" http://hostname.com

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:

1 curl -I -X DELETE https://api.github.cim

上传文件

1 curl --form "fileupload=@filename.txt" http://hostname/resource

 

http://curl.haxx.se/docs/httpscripting.html

<think>我们正在讨论curl命令的使用方法和示例。根据引用内容,curl是一个命令行工具,用于向服务器发送请求并获取数据,支持多种协议如HTTP、HTTPS、FTP等。以下是一些常用的curl命令及其用法示例: 1. **基本用法**:获取网页内容 ```bash curl https://example.com ``` 这将发送GET请求到指定URL并在终端显示返回的内容。 2. **保存文件**:使用`-o`选项将输出保存到文件 ```bash curl -o filename.html https://example.com ``` 3. **静默模式**:使用`--silent`选项不显示进度信息 ```bash curl --silent https://example.com ``` 4. **跟随重定向**:使用`-L`选项自动跟随重定向 ```bash curl -L https://example.com ``` 5. **发送POST请求**:使用`-d`选项发送POST数据 ```bash curl -d "name=value" https://example.com/form ``` 如果需要发送JSON数据,可以设置Content-Type头: ```bash curl -H "Content-Type: application/json" -d '{"key":"value"}' https://example.com/api ``` 6. **使用Cookie**:使用`-b`选项从文件中读取Cookie ```bash curl -b cookies.txt https://example.com ``` 也可以直接指定Cookie字符串: ```bash curl -b "sessionid=1234" https://example.com ``` 7. **设置请求头**:使用`-H`选项添加自定义请求头 ```bash curl -H "User-Agent: MyBrowser" -H "Accept: application/json" https://example.com ``` 8. **限制速率**:使用`--limit-rate`限制下载速率 ```bash curl --limit-rate 200K -O https://example.com/largefile.zip ``` 9. **忽略SSL证书验证**:使用`--insecure`选项(不推荐在安全环境下使用) ```bash curl --insecure https://example.com ``` 10. **上传文件**:使用`-T`选项上传文件 ```bash curl -T localfile.txt ftp://example.com/upload/ ``` 11. **调试信息**:使用`-v`选项显示详细请求信息(调试用) ```bash curl -v https://example.com ``` 12. **使用代理**:通过`-x`选项设置代理 ```bash curl -x http://proxy-server:port https://example.com ``` 引用[1]和[2]提供了curl的基本介绍和示例,引用[3]详细说明了如何使用cookie。这些引用内容可以作为curl命令使用的参考。 §§相关问题§§ 1. 如何用curl发送PUT请求? 2. 如何用curl处理HTTP认证(如Basic Auth)? 3. 如何用curl模拟浏览器行为(如设置User-Agent)? 4. 如何用curl测试API的响应时间? 5. 如何用curl下载文件并显示进度条?</think>### Curl命令使用指南 Curl(Client URL)是一个强大的命令行工具,用于传输数据,支持多种协议(HTTP/HTTPS/FTP/FTPS/SFTP等)。以下是核心用法和示例: --- #### 一、基础操作 1. **获取网页内容** ```bash curl https://example.com ``` - 输出结果到终端(默认行为) 2. **保存文件** ```bash curl -o output.html https://example.com ``` - `-o`:指定输出文件名(支持任意扩展名) 3. **静默模式** ```bash curl --silent https://example.com ``` - 隐藏进度条和错误信息[^2] --- #### 二、HTTP请求控制 1. **发送GET请求** ```bash curl "https://api.example.com/data?id=123" ``` 2. **发送POST请求** ```bash curl -X POST -d "name=John&age=30" https://api.example.com/users ``` - `-X`:指定请求方法 - `-d`:发送表单数据(自动设置`Content-Type: application/x-www-form-urlencoded`) 3. **发送JSON数据** ```bash curl -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com ``` - `-H`:添加请求头 4. **上传文件** ```bash curl -F "file=@local_path.txt" https://upload.example.com ``` --- #### 三、会话与认证 1. **使用Cookie** ```bash curl -b cookies.txt https://example.com # 读取cookie文件 curl -c new_cookies.txt https://example.com # 保存服务器返回的cookie ``` - `-b`:发送Cookie(`--cookie`缩写)[^3] - `-c`:保存Cookie到文件(`--cookie-jar`缩写) 2. **基础认证** ```bash curl -u username:password https://auth.example.com ``` --- #### 四、高级功能 1. **跟随重定向** ```bash curl -L https://example.com/redirect ``` - `-L`:自动处理301/302重定向 2. **限速下载** ```bash curl --limit-rate 200K -O https://example.com/largefile.zip ``` - 限制速度为200KB/s 3. **断点续传** ```bash curl -C - -O https://example.com/bigfile.iso ``` 4. **跳过SSL验证**(测试用) ```bash curl --insecure https://self-signed-cert.example.com ``` --- #### 五、调试与诊断 1. **显示请求详情** ```bash curl -v https://example.com # 查看请求头/响应头 curl -i https://example.com # 仅显示响应头+内容 ``` 2. **测试响应时间** ```bash curl -w "响应时间: %{time_total}s\n" -o /dev/null https://example.com ``` --- ### 典型场景示例 | 场景 | 命令示例 | |--------------------------|--------------------------------------------------------------------------| | 下载文件并重命名 | `curl -o image.jpg https://example.com/photo.png` | | 提交JSON到API | `curl -H "Content-Type: application/json" -d '{"task":"update"}' API_URL`| | 带Cookie访问受限资源 | `curl -b "sessionid=abc123" https://member.example.com/profile` | | 通过代理访问 | `curl -x http://proxy:8080 https://external.com` | > 提示:使用`curl --help`查看所有选项,或`man curl`查看完整手册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值