掌握curl:Linux系统必备的网络工具实战教程

掌握curl:Linux系统必备的网络工具实战教程
最新回答
触动了心弦丶

2021-08-03 17:13:56

curl是Linux系统中一个功能强大的命令行工具,用于通过URL传输数据,支持多种协议,适用于API调试、文件传输、网络诊断和脚本自动化等场景。 以下是关于curl的详细介绍及实战教程:

一、curl概述
  • 全称:Client URL,是一个命令行工具和库。
  • 支持协议:HTTP/HTTPS、FTP、SMTP、POP3、RTSP、DICT等超过100种协议。
  • 主要作用

    发送网络请求并接收响应。

    支持文件上传和下载。

    处理认证、代理、Cookie、重定向等复杂网络操作。

  • 特点:纳前

    轻量简洁:命令行操作,无需图形界面。

    跨平台:支持Linux、Windows、Mac等操作系统。

    脚本友好:适合自动化和API测试。

二、curl应用场景
  1. API调试:测试RESTful接口(GET/POST/PUT/DELETE等)。
  2. 文件传输

    下载远程文件。

    上传文件到服务器(如FTP/SCP)。

  3. 网络诊断

    检查服务器响应状态。

    分析请求头和响应头。

  4. 脚本自动化:在Shell或Python脚本中集成网络请毁销求。
三、curl的基本使用1. 安装
  • Debian系列(如Ubuntu):apt install -y curl
  • CentOS系列:yum install -y curl
2. 语法curl [options] [url]
  • options:选项参数,用于控制请求行为。
  • url:请求的路径,可以是HTTP、HTTPS、FTP等URL。
四、常用选项参数1. 请求控制选项
  • -X或--request:指定请求方法(GET、POST、PUT、DELETE等)。curl -X GET
    https://www.baidu.com
  • -H或--header:添加请求头,可以多次指定。curl -H "content-type: application/json; charset=utf-8" -H "Authorization: Bearer TOKEN"
    https://api.example.com
  • -d:发送POST数据(表单数据,自动设置Content-Type为application/x-www-form-urlencoded)。curl -d "name=John&age=30"
    https://api.example.com/submit
  • -D或--dump-header:将响应头保存到文件。curl -D headers.txt
    https://www.baidu.com
  • -L或--location:自动跟随重定向(301/302状态码)。curl -L
    http://www.baidu.com
  • -b或--cookie:发送Cookie(格式:name=value或文件路径)。curl -b "sessionid=12345"
    https://example.com
  • -c或--cookie-jar:将服务器返回的Cookie保存到本地文件,便于后续访问。curl -c cookies.txt
    https://example.com/login
2. 数据传输选项
  • -o:下载内容保存到文件。curl -o download.zip
    https://example.com/file.zip
  • -O:下载内容,文件名称跟随远程文件。curl -O
    https://example.com/file.zip
  • -F或--form:发送表单文件或数据(模拟浏览器上传,自动设置multipart/form-data)。curl -F "file=@local.jpg"
    https://api.example.com/upload
  • -T或--upload-file:上传文件(PUT或POST请求)。curl -T report.pdf ftp://ftp.example.com/upload/
3. 输出与调试选项
  • -v或--verbose:显示详细调试信息(请求头、响应头、连接过程等)。curl -v
    https://www.baidu.com
  • -s或--silent:静默模式(不显示进度条),但错误信息仍会显示纤茄游。curl -s
    https://example.com
    > content.txt
  • -S或--show-error:在静默模式下显示错误信息(需配合-s使用)。curl -sS
    https://invalid-url.com
  • --trace:跟踪请求过程(更详细的调试日志)。curl --trace trace.log
    https://example.com
4. 其他高级选项
  • --proxy:使用代理服务器(格式:host:port,支持HTTP/SOCKS5)。curl --proxy 127.0.0.1:8080
    https://example.com
  • --insecure或-k:忽略HTTPS证书验证(不安全,仅用于测试)。curl -k
    https://self-signed.example.com
  • --user或-u:基本认证(用户名:密码)。curl -u admin:password123
    https://auth.example.com
  • --ntlm:使用NTLM认证(Windows域环境)。curl --ntlm -u domainuser:password
    https://intranet.example.com
  • --limit-rate:限制传输速度(如100k表示100KB/s)。curl --limit-rate 100k
    https://example.com/big-file.zip
  • --retry:失败后重试次数(网络波动时有用)。curl --retry 5
    https://flaky-api.example.com
  • --range:断点续传(请求部分内容,用于下载大文件)。curl --range 0-1024
    https://example.com/large-file.zip
  • -x或--compressed:启用压缩(自动处理gzip/bzip2等编码)。curl -x
    https://example.com
五、常用案例1. 模拟域名访问
  • 作用:请求192.0.2.1,但告诉服务器“我是fake.example.com”。curl -H "Host: fake.example.com"
    http://192.0.2.1
2. 下载文件
  • 短选项-o:指定输出文件名。curl -o filename.html
    https://example.com/page.html
  • 大写-O:使用URL中的文件名。curl -O
    https://example.com/filename.zip