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
- 使用 -D 参数保存请求的 Cookies:
curl -o page1.html -D cookie.txt http://www.baidu.com
- 模拟浏览器请求并保存 Cookies:
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -o page.html -D cookie.txt http://mydomain.net
- 请求时携带 Cookie:
curl -b cookie.txt http://www.baidu.com
3. 使用 curl 上传和下载文件
3.1 文件上传
使用 -F
参数上传文件: curl -F 'file=@test.png;type=image/png' http://www.baidu.com/upload
- 使用
-F
参数时,默认使用文件上传格式 - 可指定多个文件和文件类型,用
;
分隔
3.2 文件下载
Curl 下载文件时使用 -O 选项,默认使用网络文件的名字作为本地文件名。
文件下载方式有:
- 可以使用重定向保存到指定文件: … >> index.html
- 如果想要为下载的文件指定名称,则使用
-o
代替-O
,curl -o file2.pdf www.example.com/file.pdf
-
-#
,显示下载进度和速度等信息,可使用 -s 关闭显示 -
--limit-rate
,设置下载时最大下载速度,如--limit-rate 1m
- 使用
-C
参数可以设置开启断点续传
curl http://mirrors.163.com/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso
批量下载文件文章来源:https://www.toymoban.com/news/detail-725763.html
- 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 代理,设置用户名、密码、认证信息方式如下文章来源地址https://www.toymoban.com/news/detail-725763.html
# 使用HTTP代理访问;如果未指定端口,默认使用8080端口;
# protocol 默认为 http_proxy,其他可能的值包括:
# http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
# 如: --proxy 8.8.8.8:8080; -x "http_proxy://aiezu:123@aiezu.com: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:123456@113.185.19.192:80 http://baidu.com
curl -x 113.185.19.192:80 -U aiezu:123456 http://baidu.com
#指定代理协议、用户名和密码,basic 认证方式
curl -x HTTPS_PROXY://aiezu:123456@113.185.19.192:80 http://baidu.com
#指定代理用户名和密码,ntlm 认证方式
curl -x 113.185.19.192:80 -U aiezu:123456 --proxy-ntlm http://baidu.com
到了这里,关于Linux 从入门到精通:curl 命令使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!