Linux常用命令--curl与wget

摘要

  • curl与wget的基本使用方法

  • 本文基于CentOS8(x86_64)

curl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 查看页面内容,默认GET请求
curl url

# 简单验证的页面登录方法
curl -u user:passwd url

# 下载文件要指定下载后的文件名称
curl -o fileName url
# 显示下载进度条,-C断点续传,-o下载后的文件名称
curl -C -# -o fileName url

# -X, --request 指定请求方法
# -d, --data DATA HTTP POST data
# -X指定请求协议,-H指定请求头,多个请求头就使用多个-H,-d指定请求数据
curl url \
-X POST \
-d "{\"data\":\"content\"}" \
-H "content-type: application/json"

curl url \
-X POST \
-d "name=zhangsan&age=30"
-H "content-type: application/x-www-form-urlencoded"

# --data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码
curl --data-urlencode 'name=张三' url

# -G, --get Send the -d data with a HTTP GET
# 发出一个 GET 请求,实际请求的 URL 为url?name=zhangsan&age=30。如果省略-G,会发出一个 POST 请求。
curl -G -d 'name=zhangsan' -d 'age=30' url

# 上传文件,注意文件名称前面要加上@,后面跟本地文件路径,不指定type默认会把 MIME 类型设为application/octet-stream,不指定filename默认使用上传文件名称作为服务器端接收到的文件名称
curl -F 'file=@photo.png;type=image/png;filename=me.png' -H "Content-Type: multipart/form-data" url

# 同时传递文件和普通属性,有多少个参数,后面就跟多少个-F指定要上传携带的参数值
curl -F 'file=@photo.png;type=image/png;filename=me.png' -F 'name=java' -H "Content-Type: multipart/form-data" url
# 同时传递文件和json属性
curl -F 'file=@photo.png;type=image/png;filename=me.png' -F 'jsonBody={"name":"java"};type=application/json' -H "Content-Type: multipart/form-data" url

# 通过FTP进行下载,-O 将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录)
curl -O ftp://user:pass@ip:port/file 

# 通过FTP进行上传,-T 指定上传文件
curl -T file ftp://user:pass@ip:port/path 

# 显示libcurl使用的CA证书捆绑包的内置路径,用于解决 curl: (60) SSL certificate problem: certificate has expired 的问题时,定位证书的位置,然后从 https://curl.se/docs/caextract.html 下载新版进行替换
curl-config --ca

小贴士

  • 有些系统没有默认安装curl,可以通过yum install curl -y的方式进行安装,也可以通过源码进行安装,这里给出源码安装的过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装依赖
yum install gcc cmake openssl openssl-devel

# 下载源码:https://github.com/curl/curl/releases/
wget https://github.com/curl/curl/releases/download/curl-8_0_1/curl-8.0.1.tar.gz
tar -zxcf curl-8.0.1.tar.gz

# 进入curl目录下,创建一个build文件夹,用于存放编译产生的中间文件、动态库、头文件等内容
cd curl-8.0.1
mkdir build
cd build

# 通过cmke生成Makefile,注意,cmake的语法是:cmake [路径],.. 表示上一级目录
cmake ..

# 编译并安装
make && make install

# 更新系统的链接库
ldconfig -v

wget

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 下载到当前目录
wget url
# 下载到指定文件中
wget -O saveFile url
# 下载file.txt中的所有链接
wget -i file.txt
# 断点续传,最多重试5次
wget -c -t 5 url
# 递归下载整个网站,递归深度为5
wget -r -l 5 url
# 只下载rar格式的文件
wget -m --accept=rar url
# 不下载gif格式的文件
wget -m --reject=gif url
# 不下载已经存在的文件,设置超时时间5s
wget -nc -T 5 url
# 下载速度限制为1m/s,默认全速下载
wget --limit-rate=1m url
# 使用需要用户名和密码认证的ftp下载
wget --ftp-user=USERNAME --ftp-password=PASSWORD ftp://url
# 访问https连接提示证书过期时,如果确认可以安全访问,可以加上--no-check-certificate
wget --no-check-certificate https://xxxxx