必须掌握的命令行工具之curl

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

bash 复制代码
// 发起一个普通的客户端请求:
$ curl https://www.example.com

常用参数

Headers相关

-H--header

bash 复制代码
# 设置请求头
$ curl -H "Content-Type:application/json" https://www.example.com

-A--user-agent

修改User-Agent客户端信息。默认的ua是 curl/[version]。

bash 复制代码
# 添加ua
$ curl -A "Chrome/76.0.3809.100" https://www.example.com

# 移除信息ua
$ curl -A "" https://www.example.com

-e--referer

设置请求的来源。

bash 复制代码
curl -e 'https://google.com?q=example' https://www.example.com
# 或使用 -H
curl -H 'Referer: https://google.com?q=example' https://www.example.com

Cookie相关

向服务器发送 Cookie。

bash 复制代码
# 设置cookie
$ curl -b 'foo=bar' https://www.example.com

# 使用文件内容作为cookie信息
$ curl -b cookies.txt https://www.example.com 

-c

将服务器设置的 Cookie 写入一个文件

bash 复制代码
$ curl -c cookies.txt https://www.example.com

Method相关

-X

修改请求方式,默认是GET

bash 复制代码
# POST
$ curl -X POST https://www.example.com

-d--data--data-urlencode

参数用于发送 POST 请求的数据体。使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法

bash 复制代码
# 
$ curl --d "data=xxx" https://www.example.com

# json
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://www.example.com

# 等同于-d 、区别在于会自动将发送的数据进行 URL 编码。
$ curl --data-urlencode 'comment=hello world' https://google.com/login

-G

用来构造 URL 的查询字符串。

bash 复制代码
# https://google.com/search?q=kitties&count=20
$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search

# 如果数据需要 URL 编码
# https://google.com/search?ids=1%2C1
$ curl -G --data-urlencode 'ids=1,2' https://google.com/search

查看请求信息

-i-I

查看响应头

bash 复制代码
# 显示http response的头信息,连同网页代码一起
$ curl -i https://www.example.com

# 只显示http response的头信息
$ curl -I https://www.example.com

-v

显示一次http通信的整个过程。(包括握手、请求头、响应头、响应体)

其他

-o -O

将服务器的回应保存成文件

bash 复制代码
# 制定文件名
$ curl -o example.html https://www.example.com

# 将 URL 的最后部分当作文件名。文件名为bar.html。
$ curl -O https://www.example.com/foo/bar.html
相关推荐
今夕资源网4 天前
Windows Terminal更舒适的命令行环境 仅11MB 支持并行运行WSLLinux子系统 github开源项目
windows·github·命令行·cmd·terminal
Jesse1218 天前
lint-staged与ls-lint配合使用时的陷阱
代码规范·命令行
ZZJsky1239 天前
我把每周都要手敲的发布分支,做成了一个 CLI
命令行
特立独行的猫a11 天前
使用 vcpkg 将 pngquant 命令行移植到鸿蒙 PC(OpenHarmony )
华为·harmonyos·命令行·vcpkg·pngquant·三方库·鸿蒙pc
栩栩云生11 天前
x-cmd v0.8.15: claw AI 助手升级,连微信、飞书更稳了;free 新增专家模式,直接把底层内存细节喂给你
github·agent·命令行
深海鱼在掘金14 天前
从Claude Code泄露源码看工程架构:第四章—— 一次请求的完整生命周期与流式执行引擎设计
人工智能·设计模式·命令行
深海鱼在掘金14 天前
从Claude Code泄露源码看工程架构:第二章——项目架构总览与分层设计哲学
人工智能·架构·命令行
就叫年华吧丶15 天前
Git Bash、CMD 与 PowerShell 的区别详解
linux·git·命令行·powershell·cmd·gitbash
特立独行的猫a15 天前
使用 vcpkg 为OpenHarmony(鸿蒙PC)构建 OpenSSH 命令行工具
harmonyos·openharmony·命令行·openssh·vcpkg·鸿蒙pc
donecoding20 天前
从零搭建 Monorepo 自动发布工作流(GitHub Actions + pnpm + Lerna)
ci/cd·命令行·前端工程化