curl 文件下载教程:参数、用法与实例 – wiki基地

cURL 文件下载教程:参数、用法与实例

引言

cURL(Client URL)是一个功能强大的命令行工具和库,用于通过 URL 传输数据。它支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、LDAP、LDAPS、DICT、TELNET、FILE、IMAP、POP3、SMTP、RTSP、RTMP 和 Gopher。在日常开发、系统管理以及网络调试中,cURL 因其灵活性和广泛的用途而备受青睐,尤其是在文件下载方面。

本文将详细介绍 cURL 在文件下载方面的常用参数、基本用法以及一些高级实例,帮助您充分利用 cURL 这一利器。

一、cURL 文件下载基础

默认情况下,当您使用 cURL 访问一个 URL 时,它会将获取到的内容直接输出到标准输出(即您的终端屏幕)。但对于文件下载,我们通常希望将内容保存到本地文件中。

1. 将内容输出到标准输出 (默认行为)

这是 cURL 的默认行为,如果您只是想快速查看文件的内容,这非常有用。

bash
curl https://example.com/path/to/file.txt

2. 保存为原文件名 (-O, --remote-name)

如果您希望将下载的文件保存为与远程服务器上相同的原始文件名,可以使用大写的 -O 参数。

bash
curl -O https://example.com/path/to/document.pdf

3. 保存为指定文件名 (-o, --output)

当您需要将下载的文件保存为自定义的本地文件名时,可以使用小写的 -o 参数,后面跟着您希望的文件名。

bash
curl -o my_local_report.pdf https://example.com/path/to/document.pdf

二、常用下载参数详解

cURL 提供了大量参数来精细控制下载行为。以下是一些最常用和重要的参数:

1. 断点续传 (-C -, --continue-at -)

如果您的下载因网络问题或其他原因中断,cURL 可以从上次中断的地方继续下载,这对于下载大文件尤其有用。使用 -C - 参数,cURL 会自动检测本地已下载部分的大小,并通知服务器从该位置开始传输剩余数据。

bash
curl -C - -O https://example.com/large_archive.zip

2. 跟随重定向 (-L, --location)

许多网站会使用 HTTP 重定向(例如,从 HTTP 到 HTTPS,或从短链接到最终资源)。默认情况下,cURL 不会跟随这些重定向,而是会显示重定向的响应头信息。使用 -L 参数,cURL 会自动跟随所有重定向,直到找到最终的资源。

bash
curl -L -O https://short.url/redirected_file.tar.gz

3. 限制下载速度 (--limit-rate)

为了避免 cURL 占用过多的网络带宽,您可以使用 --limit-rate 参数来限制下载速度。您可以指定一个速率值,支持 k(千字节)、m(兆字节)、g(吉字节)等单位。

“`bash

将下载速度限制在 500 KB/s

curl –limit-rate 500k -O https://example.com/very_large_video.mp4
“`

4. 静默模式 (-s, --silent)

在脚本或自动化任务中,您可能不希望 cURL 显示下载进度或错误信息。-s 参数会抑制所有这些输出,只输出实际下载的数据。

bash
curl -s -o log.txt https://example.com/server_log.txt

5. 显示进度条 (-#, --progress-bar)

如果您希望在终端中看到一个简洁的进度条,而不是详细的进度信息,可以使用 -# 参数。

bash
curl -# -O https://example.com/software_update.exe

6. 不验证 SSL 证书 (-k, --insecure)

当您连接到使用自签名证书或无效 SSL 证书的服务器时,cURL 默认会拒绝连接。-k 参数会禁用 SSL 证书验证。请谨慎使用此选项,因为它会降低连接的安全性,仅在您完全信任目标服务器的情况下使用。

bash
curl -k -O https://untrusted-server.com/test_data.json

7. 重试失败下载 (--retry)

如果下载因为临时网络问题或服务器繁忙而失败,cURL 可以自动重试指定次数。

“`bash

失败时重试 3 次

curl –retry 3 -O https://example.com/unstable_download.bin
“`

8. 设置超时 (--max-time)

为了防止 cURL 在连接或下载过程中无限期地等待,您可以使用 --max-time 参数设置一个最大允许时间(秒)。

“`bash

如果下载在 60 秒内未完成,则超时

curl –max-time 60 -O https://example.com/slow_server_file.txt
“`

三、高级用法与实例

除了上述基础参数,cURL 还能处理更复杂的下载场景。

1. 下载多个文件

  • 使用多个 -O 参数:
    在同一条命令中指定多个 -O 参数和 URL,可以下载多个文件。

    bash
    curl -O https://example.com/file1.txt -O https://example.com/file2.txt

  • 使用花括号表达式 {} (Brace Expansion):
    对于具有连续或相似命名模式的文件,可以使用花括号来简化命令。

    “`bash

    下载 image1.jpg, image2.jpg, image3.jpg

    curl -O https://example.com/images/image{1..3}.jpg

    下载 report_jan.pdf 和 report_feb.pdf

    curl -O https://example.com/reports/{report_jan,report_feb}.pdf
    “`

  • 从文件列表下载 (结合 xargs):
    如果您的下载 URL 存储在一个文本文件中(每行一个 URL),可以结合 xargs 来批量下载。

    urls.txt 文件内容示例:
    https://example.com/doc1.pdf
    https://example.com/doc2.pdf
    https://example.com/doc3.pdf

    下载命令:
    bash
    xargs -n 1 curl -O < urls.txt

2. 处理认证

从受保护的资源下载文件时,cURL 支持多种认证方式。

  • 基本认证 (-u, --user):
    对于需要用户名和密码的基本认证,可以直接在参数中提供。

    bash
    curl -u 用户名:密码 -O https://example.com/protected/archive.zip

    注意: 在命令行中直接输入密码存在安全风险,在自动化脚本中应考虑更安全的凭证管理方式。

  • 令牌认证 (-H Authorization):
    对于使用 API 令牌(如 Bearer Token)的认证方式,可以通过 -H 参数添加 Authorization 请求头。

    bash
    curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -O https://api.example.com/data.json

  • Cookie 处理:
    一些网站需要先登录才能访问受保护资源,登录过程通常会设置 Cookie。您可以使用 cURL 来保存和发送 Cookie。

    “`bash

    步骤1: 登录并保存服务器返回的 Cookie 到 cookies.txt 文件

    curl -c cookies.txt -d “username=myuser&password=mypass” https://example.com/login

    步骤2: 使用 cookies.txt 中的 Cookie 下载受保护的文件

    curl -b cookies.txt -O https://example.com/protected/file.zip
    ``
    这里,
    -c用于保存 Cookie,-b` 用于发送 Cookie。

四、总结

cURL 是一个功能极其丰富的工具,在文件下载方面提供了无与伦比的灵活性和控制力。从简单的文件保存到复杂的断点续传、认证处理和批量下载,cURL 都能轻松应对。掌握这些参数和用法,将极大地提高您在命令行环境下处理文件传输的效率。

这只是 cURL 功能的冰山一角。建议您查阅 cURL 的官方文档或使用 man curl 命令,根据具体需求探索更多高级参数和用法。The article has been generated based on the gathered information. I have included sections for introduction, basic downloads, common parameters, advanced usage (multiple files, authentication), and a conclusion. The language used is Chinese as requested.

I have completed the user’s request.

滚动至顶部