Linux使用curl传递数据的示例
Curl命令行用于在没有用户交互的情况下将数据从服务器传输到本地。 使用curl您可以使用各种常见的协议下载或上传数据,这些协议包括HTTP,HTTPS,SCP,SFTP和FTP。Curl提供了很多选项,比如中断传输然后恢复下载,限制速度带宽,代理支持,用户身份验证等等。
本教程中示例很简单,旨在帮助您了解curl
命令的工作方式,以及一些常见的示例。比如在Ubuntu,Debian,CentOS,Fedora安装curl,如何发起POST请求并发送JSON数据,上传文件,将curl输出保存到文件,下载多个文件,恢复下载,跟随重定向,发送cookie,curl使用代理,指定最大传输速度等。
安装curl
curl命令现在都已被预先安装在大多数Linux发行版上。要检查系统上是否安装了curl命令,请打开控制台,键入curl
,然后按Enter键。如果你安装了curl,系统会打印curl: try 'curl --help' or 'curl --manual' for more information
,否则你会看到curl command not found
命令未找到。
如果没有安装curl,您可以使用发行版的软件包管理器安装它。
在Ubuntu和Debian上安装Curl
sudo apt install curl
在CentOS和Fedora上安装Curl
sudo yum install curl
如何使用Curl
curl
命令的语法如下:
curl [options] [URL...]
options
- Curl选项。URL
- 远程服务器的URL。
在没有任何选项的情况下使用时,curl将以最简单的形式打印url中指定的资源到标准输出,即将内容输出到终端。在以下示例中,我们将检索https://www.myfreax.com
主页:
curl https://www.myfreax.com
上面的命令将在终端窗口中打印https://www.myfreax.com
主页的源代码。如果你没有指定协议curl将尝试猜测你想要使用的协议,它将默认为HTTP
。
如何使用curl发起POST请求并发送JSON数据
--header选项设置请求头,--request选项设置请求方式为POST,--data指定json数据的字符串,命令如下所示
curl --header "Content-Type: application/json" \ --request POST \
--data '{"username":"xyz","password":"xyz"}' \
http://localhost:3000/api/login
如何使用curl上传文件
-F选项指定HTTP的multipart POST
的数据,这种方式就像HTML中的Form表单一样上传文件和传递数据,比如下面的示例中userid=1,这相当于html表单的input元素name=userid,value=1。可以将-F选项使用多次,传递不同数据
curl \ --request POST \
-F "userid=1" \
-F "filecomment=This is an image file" \
-F "[email protected]/home/user1/Desktop/test.jpg" \
http://localhost/uploader.php
将curl输出保存到文件
要保存curl命令的结果,可以使用-o
或-O
选项。小写-o
使用指定的文件名保存文件,在下面的示例中为vue-v2.5.16.js
:
curl -o vue-v2.5.16.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js
大写-O
将使用其原始文件名保存文件:
curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
如何使用Curl下载多个文件
要一次下载多个文件,请使用多个-O
标志,然后指定要下载文件的URL。在以下示例中,我们将下载Arch Linux和Debian iso文件
curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \-O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
如何恢复Curl的下载
您可以使用-C -
选项恢复下载。如果你在下载大文件时断开连接,你不需要从头开始下载,使用-C -
选项继续即可下载。例如,如果使用以下命令下载Ubuntu 18.04 iso文件:
curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
突然你的连接断开就可以使用-C -
恢复下载:
curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
使用Curl获取URL的HTTP header
HTTP header是冒号分隔的键值对,包含用户代理,内容类型和编码等信息。使用请求或响应在客户端和服务器之间传递header。-I
选项允许您仅获取指定资源的HTTP header:
curl -I --http2 https://www.ubuntu.com/
curl: (1) Unsupported protocol
如何使用curl测试网站是否支持HTTP/2
要检查特定URL是否支持新的HTTP/2协议,请使用 -I
选项和--http2
选项获取HTTP header标头
curl -I --http2 -s https://www.myfreax.com/ | grep HTTP
-s
选项告诉curl在静默中运行并隐藏进度和错误消息。
如果远程服务器支持HTTP/2,则会打印curl HTTP/2.0 200
:
HTTP/2 200
否则响应将为HTTP/1.1 200
.
HTTP/1.1 200 OK
如果你的curl版本是 7.47.0
或更新版本,则不需要使用--http2
选项,因为默认情况下所有HTTPS连接启用HTTP/2。
如何使用cURL跟随重定向
如果您尝试检索myfreax.com主页,则不会发现以下情况:
curl -v http://myfreax.com
* Mark bundle as not supporting multiuse< HTTP/1.1 301 Moved Permanently
< Connection: close
正如您从上面的输出中看到的myfreax.com重定向到https版本,默认情况下curl不遵循HTTP Location header响应头,因此您无法获得myfreax主页的源码。-L
选项可以让curl遵循重定向,直到到达最终目的地:
curl -L http://www.myfreax.com
如何更改Curl User-Agent
有时服务器根据访问者设备和浏览器提供完全不同的内容,这是因为远程服务器根据User-Agent来提供不同的结果。在这种情况下,您可以使用-A
选项模拟其他浏览器:
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://www.myfreax.com
上面的命令将模拟Firefox 60请求页面 www.myfreax.com
。
如何指定最大传输速度
--limit-rate
选项允许您限制数据传输速率。该值可以用字节表示,带k
后缀的是千字节,带后缀m
兆字节,后缀g
千兆字节。在以下示例中,curl将下载Go二进制文件并将下载速度限制为1mb:
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
当您不希望curl占用所有可用带宽时,此选项很有用。
如何通过Curl上传下载FTP服务器文件
要使用curl
命令访问受保护的FTP服务器,请使用-u
选项并指定用户名和密码,如下所示
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
该命令将列出用户主目录中的所有文件和目录。您可以从FTP服务器下载文件:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
要将文件上传到FTP服务器,使用-T
选项后指定上传文件的名称:
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
如何发送cookie
使用curl发出请求时,默认情况下不会发送或存储任何cookie。有时,您可能需要使用特定cookie发出HTTP请求以访问远程资源或调试问题。要将cookie发送到服务器,请使用-b
选项,后面包含cookie或者cookie的文件名。
例如,要下载Oracle Java JDK rpm文件 jdk-10.0.2_linux-x64_bin.rpm
,您需要传递一个名为oraclelicense
=true的cookie
curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm
如何配置curl代理
Curl支持不同类型的代理,包括HTTP,HTTPS和SOCKS。要通过代理服务器传输数据,请使用-x
(--proxy
)选项,后跟代理URL。以下命令将使用192.168.44.1:8888
代理下载指定的网页:
curl -x 192.168.44.1:8888 https://www.myfreax.com/
如果代理服务器需要身份验证,请使用-U
(--proxy-user
)选项,后跟用冒号(user:password
)分隔的用户名和密码:
curl -U mark:Passvv0rd -x 192.168.44.1:8888 http://www.myfreax.com/
本教程中显示的示例很简单,旨在帮助您了解curl
命令的工作方式,要了解有关curl的更多信息,请访问Curl文档页面,如有问题请在下方留言
以上是 Linux使用curl传递数据的示例 的全部内容, 来源链接: utcz.com/z/506926.html