5月29日 22:48

cURL 如何处理 Cookie 和会话管理?

发送 Cookie:-b "name=value" 发单个,-b cookies.txt 从文件读。保存 Cookie:-c cookies.txt 把响应 Set-Cookie 写入文件。同时发送和保存:-b cookies.txt -c cookies.txt(同一文件读写维持会话)。会话管理就是循环请求时每次 -b -c 同一个 cookie 文件,服务器通过 session_id 识别用户。

追问

-b "key=val" 自动生成 Cookie 头,更简洁。-H "Cookie: key=val" 手动写原始头,适合精确控制。多个 Cookie:-b "a=1" -b "b=2" 或 -H "Cookie: a=1; b=2"。

Netscape 格式:每行 tab 分隔 7 个字段——domain\tflag\tpath\tsecure\texpiration\tname\tvalue。由 -c 自动生成。

如何模拟登录后访问受保护页面?

curl -c cookies.txt -X POST login-url -d user=xxx -d pass=xxx,然后 curl -b cookies.txt protected-url。JWT 认证则不同——登录响应里的 token 需手动提取放到 Authorization 头。

Cookie 存客户端,Session 存服务器端。Cookie 里的 session_id 是钥匙,服务器用这把钥匙找 Session 数据。cURL 模拟的是 Cookie 传输层。

加 -v 查看 Cookie 和 Set-Cookie:curl -v -b cookies.txt URL 2>&1 | grep -i cookie。常见问题:Domain/Path 不匹配、Secure 标记在 HTTP 下不发送、SameSite 跨站不携带。

标签:cURL