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

红太狼 2023-10-09 20:50 146阅读 0赞

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 文件中,然后引用文件作为参数。

  1. ### test.json 文件存储 json 字符串
  2. curl 'http://localhost:8080/cnd_inke/qc/v2/inke' \
  3. -H "Content-Type:application/json" \
  4. -H 'Authorization:bearer' \
  5. -X POST \
  6. -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 'file=@test.png;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 代理,设置用户名、密码、认证信息方式如下

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

4.2 使用 ip 代理示例

  1. # 指定 http 代理 IP 和端口
  2. curl -x 113.185.19.192:80 http://baidu.com
  3. #显式指定为 http 代理
  4. curl -x http_proxy://113.185.19.192:80 http://baidu.com
  5. #指定 https 代理
  6. curl -x HTTPS_PROXY://113.185.19.192:80 http://baidu.com
  7. #指定代理用户名和密码,basic 认证方式
  8. curl -x aiezu:123456@113.185.19.192:80 http://baidu.com
  9. curl -x 113.185.19.192:80 -U aiezu:123456 http://baidu.com
  10. #指定代理协议、用户名和密码,basic 认证方式
  11. curl -x HTTPS_PROXY://aiezu:123456@113.185.19.192:80 http://baidu.com
  12. #指定代理用户名和密码,ntlm 认证方式
  13. curl -x 113.185.19.192:80 -U aiezu:123456 --proxy-ntlm http://baidu.com

发表评论

表情:
评论列表 (有 0 条评论,146人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Linux常用命令入门精通

    Linux常用命令:从入门到精通 引言 在计算机领域,Linux操作系统是最常用的操作系统之一。它的开源性质和强大的性能使其成为服务器和个人电脑的首选操作系统。本篇

    相关 eNSP入门精通-VRP命令

    命令行视图 命令行界面分成了若干种命今行视图,使用某个命令行时,需要先进入到该命令所在的视图。最常用的命令行视图有用户视图、系统视图和接口视图,三者之间既有联系,又有一定