Linux 从入门到精通:curl 命令使用详解

1. curl 安装和使用介绍

curl 命令是一个在 Linux 系统中利用 URL 工作的命令行文件传输工具,常用于服务访问和文件下载。curl 支持 HTTP、HTTPS、FTP 等多种协议(默认是 HTTP 协议),可用于模拟服务请求以及上传和下载文件。

1.1 安装命令

并非所有系统都自带 curl 命令,对于简洁版的 Linux 系统,可以使用命令安装: yum install curl ,安装完成后,使用 curl --version 查看版本信息。

1.2 简单使用

  • curl 命令的标准语法: curl [options] [url]
  • 不使用参数项执行请求: curl http://www.baidu.com
  • 不使用参数时会直接请求指定的服务地址,并将请求结果源代码输出到命令行中。
    在这里插入图片描述

1.3 使用参数项

常见参数项包括:

  • -i :显示响应头信息
  • -o :将请求结果写入到指定文件中
  • -s :静默模式,不显示额外信息
  • -w :指定输出内容格式

如测试接口是否正常: curl -o /dev/null -s -w %{http_code} http://www.baidu.com

  • 更多参数项,可以使用 curl -h/--help 查询。

2. 使用 curl 模拟 GET/POST 请求

2.1 模拟 GET 请求

  • 直接使用 curl 无参请求方式默认为 GET 请求,如: curl http://localhost:8080/getUserInfo?id=1
  • 还可以使用 -X 参时来指定请求方式为 GET

2.2 模拟 POST 请求

POST 请求时,可以使用以下参数:

  • -X :指定请求方式(如 POST)
  • -H :指定请求头信息(如 “Content-Type:application/json”)
  • -d :指定请求参数内容(可以使用多次,或一次指定多个参数,甚至传递 json 对象;还可以使用文件作为参数)
### 指定地址、请求头信息、请求类型、请求参数
curl 'http://localhost:8080/cnd_inke/qc/v2/inke' \
-H "Content-Type:application/json" \
-H 'Authorization:bearer' \
-X POST \
-d '{"Id":"12330245","visitTimes":1,"docType":"散文","docId":"36e5854f5f0e4f80b7ccc6c52c063243"}'
  • -H 指定 headers 头的时候需要单个使用,即一个 -H 指定一个头字段信息

2.3 发送 json 数据

使用 POST 请求体是 json 格式数据,使用 -d 参数可以指定 json 字符串;也可以将数据放在 json 文件中,然后引用文件作为参数。

### test.json 文件存储 json 字符串
curl 'http://localhost:8080/cnd_inke/qc/v2/inke' \
-H "Content-Type:application/json" \
-H 'Authorization:bearer' \
-X POST \
-d ’@/test.json'

2.4 携带 Cookies

  1. 使用 -D 参数保存请求的 Cookies: curl -o page1.html -D cookie.txt http://www.baidu.com
  2. 模拟浏览器请求并保存 Cookies: curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -o page.html -D cookie.txt http://mydomain.net
  3. 请求时携带 Cookie: curl -b cookie.txt http://www.baidu.com

3. 使用 curl 上传和下载文件

3.1 文件上传

使用 -F 参数上传文件: curl -F '[email protected];type=image/png' http://www.baidu.com/upload

  • 使用 -F 参数时,默认使用文件上传格式
  • 可指定多个文件和文件类型,用 ; 分隔

3.2 文件下载

Curl 下载文件时使用 -O 选项,默认使用网络文件的名字作为本地文件名。
文件下载方式有:

  1. 可以使用重定向保存到指定文件: … >> index.html
  2. 如果想要为下载的文件指定名称,则使用 -o 代替 -Ocurl -o file2.pdf www.example.com/file.pdf
  3. -# ,显示下载进度和速度等信息,可使用 -s 关闭显示
  4. --limit-rate ,设置下载时最大下载速度,如 --limit-rate 1m
  5. 使用 -C 参数可以设置开启断点续传
curl http://mirrors.163.com/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

批量下载文件

  • curl 还支持下载多个文件,只需要多次指定 -O 和文件地址即可,如 curl -O [URL1] -O [URL2] -O [URL3] ...
  • 如果多个文件地址符合规律,可以使用正则来批量下载:curl -O ftp://ftp.example.com/file[1-30].jpg

4. curl 使用 ip 代理请求服务

4.1 设置代理信息

curl 命令还可以使用 -x 参数来设置 http(s) 代理、socks 代理,设置用户名、密码、认证信息方式如下

# 使用HTTP代理访问;如果未指定端口,默认使用8080端口;
# protocol 默认为 http_proxy,其他可能的值包括:
# http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
# 如: --proxy 8.8.8.8:8080; -x "http_proxy://aiezu:[email protected]:80"
-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
  • 参数 -x 与 --proxy 等价
  • 如果未指定端口,默认使用 8080 端口
  • protocol 协议默认为 http_proxy 代理

4.2 使用 ip 代理示例

# 指定 http 代理 IP 和端口
curl -x 113.185.19.192:80 http://baidu.com
#显式指定为 http 代理
curl -x http_proxy://113.185.19.192:80 http://baidu.com
 
#指定 https 代理
curl -x HTTPS_PROXY://113.185.19.192:80 http://baidu.com
 
#指定代理用户名和密码,basic 认证方式
curl -x aiezu:[email protected]:80 http://baidu.com
curl -x 113.185.19.192:80 -U aiezu:123456 http://baidu.com
#指定代理协议、用户名和密码,basic 认证方式
curl -x HTTPS_PROXY://aiezu:[email protected]:80 http://baidu.com
 
#指定代理用户名和密码,ntlm 认证方式
curl -x 113.185.19.192:80 -U aiezu:123456 --proxy-ntlm http://baidu.com

你可能感兴趣的:(linux,linux,服务器)