欧卡2中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

需要三步,才能开始

只需两步,慢速开始

查看: 99|回复: 0
收起左侧

[Linux] 使用curl模拟Flask网站登录获取Cookie

[复制链接]
知行 发表于 2025-6-28 17:03 | 显示全部楼层 |阅读模式

要使用 curl 模拟登录 Flask 网站并获取 Cookie,需根据网站是否有 CSRF 保护选择不同方法。以下是详细步骤:


方法一:无 CSRF 保护的登录

如果 Flask 未启用 CSRF 保护(如 WTF_CSRF_ENABLED = False):

 复制代码 隐藏代码
curl -X POST \   -d "username=你的用户名&password=你的密码" \   -c cookies.txt \  # 保存 Cookie 到文件   http://example.com/login

方法二:有 CSRF 保护的登录(推荐)

大多数 Flask 应用使用 Flask-WTF 提供 CSRF 保护,需先获取 Token:

步骤 1:获取 CSRF Token

 复制代码 隐藏代码
# 获取登录页面 HTML 并提取 CSRF Token curl -s -c cookies.txt http://example.com/login > login.html # 从 HTML 提取 Token (示例,实际需根据页面调整) token=$(grep 'name="csrf_token"' login.html | sed 's/.*value="\([^"]*\)".*/\1/')

步骤 2:携带 Token 登录

 复制代码 隐藏代码
curl -X POST \   -b cookies.txt \          # 使用初始 Cookie   -d "username=你的用户名" \   -d "password=你的密码" \   -d "csrf_token=$token" \  # 添加 CSRF Token   -c session_cookies.txt \  # 保存登录后的 Cookie   http://example.com/login

关键参数说明

参数 作用
-X POST 指定 POST 方法
-d "key=value" 发送表单数据
-c 文件 将响应中的 Cookie 保存到文件
-b 文件 发送请求时携带文件中的 Cookie
-s 静默模式(不显示进度)

验证登录

检查 session_cookies.txt 文件内容。若成功,会看到类似:

 复制代码 隐藏代码
# Netscape HTTP Cookie File .example.com TRUE    /   FALSE   1699999999  session   eyJ1c2VyIjoiYWRtaW4ifQ.YZPhfg.dE4GzLz...

 复制代码 隐藏代码
curl -b session_cookies.txt http://example.com/dashboard

常见问题排查

  1. CSRF Token 提取失败
    检查登录页面的 <form> 中是否包含类似字段:

     复制代码 隐藏代码
    <input type="hidden" name="csrf_token" value="TOKEN_VALUE">

    调整 grep/sed 命令匹配实际 HTML 结构。

  2. 登录后重定向
    添加 -L 参数跟随重定向:

     复制代码 隐藏代码
    curl -L -b session_cookies.txt http://example.com/dashboard
  3. JSON API 登录
    如果登录接口使用 JSON:

     复制代码 隐藏代码
    curl -X POST -H "Content-Type: application/json" \ -d '{"username":"admin", "password":"123"}' \ -c cookies.txt \ http://example.com/api/login

提示:实际参数需通过浏览器开发者工具(Network 标签)查看真实请求格式。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服QQ936487697|联系我们|手机版|欧卡2中国 ( 湘ICP备11020288号-1 )

GMT+8, 2025-7-24 23:41 , Processed in 0.120565 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表