linux 工具curl详解
curl
是一个常用的命令行工具,用于在 Linux 系统中进行数据传输。它支持多种协议,如 HTTP、HTTPS、FTP、SFTP、SMTP 等。下面是 curl
的常见用法和选项详解:
基本用法
-
GET 请求
curl https://www.example.com
这个命令会发送一个简单的 GET 请求,获取
https://www.example.com
的内容并输出到标准输出。 -
POST 请求
curl -X POST -d "key1=value1&key2=value2" https://www.example.com
-X POST
指定 HTTP 请求方法为 POST,-d
后面跟的是要提交的数据。注意,数据格式为key=value
。 -
通过文件发送 POST 请求
curl -X POST -d @data.txt https://www.example.com
@data.txt
表示从文件data.txt
中读取要提交的数据。 -
发送 JSON 数据
curl -X POST -H "Content-Type: application/json" -d '{"key1": "value1", "key2": "value2"}' https://www.example.com
-H
用来设置请求头,这里设置了Content-Type
为application/json
。 -
获取 HTTP 头信息
curl -I https://www.example.com
-I
会获取响应的 HTTP 头,而不获取响应体。
常用选项详解
-
-X 或 --request 指定 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。
curl -X PUT https://www.example.com
-
-d 或 --data 提交数据,常用于 POST 请求。
curl -X POST -d "key=value" https://www.example.com
-
-H 或 --header 设置 HTTP 请求头。
curl -H "User-Agent: curl" https://www.example.com
-
-u 或 --user 设置 HTTP 认证用户和密码,格式为
username:password
。curl -u username:password https://www.example.com
-
-L 或 --location 如果服务器响应 3xx 状态码并且提供了
Location
头信息(重定向),-L
会让curl
自动跟随重定向请求。curl -L https://www.example.com
-
-o 或 --output 将响应数据保存到文件。
curl -o filename.html https://www.example.com
-
-O 或 --remote-name 按照服务器提供的文件名保存文件。
curl -O https://www.example.com/file.zip
-
-v 或 --verbose 显示详细的请求和响应信息,适用于调试。
curl -v https://www.example.com
-
-s 或 --silent 让
curl
处于静默模式,不输出任何进度信息。curl -s https://www.example.com
-
-k 或 --insecure 允许
curl
忽略 SSL 证书验证(用于测试)。curl -k https://www.example.com
-
--max-time 设置请求的最大超时时间(单位秒)。
curl --max-time 10 https://www.example.com
-
-F 或 --form 上传文件或表单数据。
curl -F "file=@filename.txt" https://www.example.com/upload
-
--http2 强制使用 HTTP/2 协议进行请求。
curl --http2 https://www.example.com
-
-T 或 --upload-file 上传本地文件到服务器。
curl -T localfile.txt ftp://ftp.example.com/remote_path/
进阶用法
-
使用代理
curl -x http://proxy.example.com:8080 https://www.example.com
-x
用于指定代理服务器。 -
下载多个文件
curl -O https://www.example.com/file1.zip -O https://www.example.com/file2.zip
-
使用 Cookies
curl -b "name=value" https://www.example.com
-b
用于发送 cookies,值可以是一个字符串或包含 cookie 的文件。 -
保存 Cookies
curl -c cookies.txt https://www.example.com
-c
用于将 cookies 保存到文件中。 -
检查 URL 是否有效
curl --head --silent --fail https://www.example.com
--head
获取头信息,--silent
静默模式,--fail
如果请求失败,返回非零状态码。
综合示例
-
通过代理下载文件
curl -x http://proxy.example.com:8080 -O https://www.example.com/file.zip
-
上传文件并保存响应
curl -F "file=@localfile.zip" -o response.txt https://www.example.com/upload
-
POST 请求并处理响应
curl -F "file=@localfile.zip" -o response.txt https://www.example.com/upload
这些是 curl
工具的一些常见用法和选项。curl
还支持许多高级功能,具体可以通过 man curl
或 curl --help
来查看完整的文档。