curl 是一个功能强大的命令行工具,用于在网络上传输数据,支持多种协议(HTTP、HTTPS、FTP、SFTP、SCP、SMTP 等)。它被广泛用于测试 API、下载文件、调试网络请求等场景。
一、快速索引卡
| 用途 | 命令 |
| GET请求 |
|
| POST表单 |
|
| POST的JSON |
|
| 修改User-Agent |
|
| 添加Cookie |
|
| 查看详情 |
|
二、相关知识点
1.GET请求
# 基础
curl http://httpbin.org/get
curl:一个发出 HTTP 请求的命令行工具http://httpbin.org/get:请求的目标 URL
-
httpbin.org:专门用于 HTTP 测试的公开服务/get:该服务的 API 端点,会返回你请求中的各种信息
curl 默认发出 GET 请求,访问了 http://httpbin.org/get,服务器把收到的请求信息(即你发出的请求包)原样返回给你。
{
"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/8.18.0",
"X-Amzn-Trace-Id": "Root=1-69f491a4-19b5df83372bc5ca211d316b"
},
"origin": "XX.XX.XX.Xx",
"url": "http://httpbin.org/get"
}
1."args": {}
- 含义:URL 中的查询参数(Query String)
- 示例:如果你请求
http://httpbin.org/get?name=张三&age=25,这里会变成"args": {"name": "张三", "age": "25"} - 目前为空:因为你请求时没有带
?key=value这样的参数
2. "headers": { ... }
这是 httpbin 从你的请求中收到的 HTTP 请求头(不是你收到的响应头,而是它看到的你发来的请求头)。
- "Accept": "*/*"
- 告诉服务器:客户端能接受任何类型的响应内容
*/*表示任意 MIME 类型(文本、图片、视频等)
- "Host": "httpbin.org"
- 必选头,指明要访问的服务器域名(因为一台服务器可能托管多个网站)
- 这里表示你请求的主机名是
httpbin.org
- "User-Agent": "curl/8.18.0"
- 标识客户端的类型和版本
- 服务器知道你用了 curl 8.18.0(而不是浏览器)
- 网站可以据此返回不同内容(如给手机浏览器返回手机版页面)
- "X-Amzn-Trace-Id": "Root=1-69f491a4-19b5df83372bc5ca211d316b"
- 这是一个 非标准自定义头(以
X-开头) - 看起来是 httpbin 运行在 AWS(亚马逊云)上,AWS 负载均衡器自动添加的追踪 ID
- 用于调试、追踪请求在云环境中的完整路径
-
1:版本69f491a4:时间戳相关的十六进制- 后面的部分:唯一请求标识
3. "origin": "XX.XX.XX.XX"
- 这是 服务端看到的你的公网 IP 地址
- 也就是你的请求从哪个 IP 发到 httpbin.org
- 注意:这不是你电脑的内网 IP,而是你家庭路由器或 ISP 分配的公网出口 IP
4. "url": "http://httpbin.org/get"
- 服务端最终收到的完整 URL 是什么
- 包含协议、主机、路径,但没有参数(因为
args为空) - 如果你请求重定向过或 URL 有变化,这里会展示最终实际请求的 URL

# 带参数(注意URL要加引号)
curl "http://httpbin.org/get?name=zhang&age=25"

原理:参数附加在URL后面,?分隔URL和参数,&连接多个参数
2. POST请求
表单提交(application/x-www-form-urlencoded)
curl -X POST -d "username=admin&password=123456" http://httpbin.org/post

JSON提交(REST API常用)
curl -X POST -H "Content-Type: application/json" -d '{"username":"admin"}' http://httpbin.org/post

-X 指定请求方法,-d 发送数据,-H 添加请求头
3.修改User-Agent
# 方法1:-A 参数
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" http://httpbin.org/get

# 方法2:--user-agent
curl --user-agent "MyBot/1.0" http://httpbin.org/user-agent
安全意义:绕过简单的UA检测、模拟不同设备

4.添加Cookie
# 直接添加
curl -b "sessionid=abc123; role=admin" http://httpbin.org/cookies

# 从文件读取(模拟登录状态)
curl -b cookies.txt http://example.com/profile

# 保存响应中的Cookie到文件
curl -c cookies.txt -d "user=admin&pass=123" http://example.com/login

-b 发送Cookie,-c 保存Cookie
5. 常用辅助选项
| 选项 | 作用 | 使用场景 |
|
| 显示完整请求/响应 | 调试、分析协议细节 |
|
| 显示响应头 | 查看Set-Cookie、状态码 |
|
| 跟随重定向 | 测试登录跳转 |
|
| 忽略SSL证书错误 | 测试自签名证书站点 |
三、常见错误与解决
| 错误现象 | 可能原因 | 解决方法 |
|
| URL格式错误 | 检查是否有 |
|
| 目标不可达 | 检查网络/端口 |
|
| 服务器异常 | 加 |
| 返回HTML而不是JSON | 需要登录 | 添加Cookie |
| SSL证书错误 | 自签名证书 | 加 |

571

被折叠的 条评论
为什么被折叠?



