You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python自动登录需Cookie验证的网站并爬取账户余额?

解决Prudential登录及Cookie持久化爬取账户余额的方案

一、获取登录请求的Payload参数

  • 打开浏览器开发者工具(F12),切换到Network标签
  • 手动完成一次登录操作,在Network列表里定位登录请求(通常是POST方法,URL含login或auth关键字)
  • 点击该请求,查看Payload或Form Data标签:
    • 记录所有必填参数,比如username/user_id、password/passcode,还有可能存在的隐藏字段(如csrf_token、session_id这类从登录页面HTML提取的参数)
    • 这些参数后续用requests发送POST请求时必须完整携带

二、用requests Session管理Cookie

  1. 初始化Session并获取初始必要数据:
    import requests
    from bs4 import BeautifulSoup
    
    session = requests.Session()
    # 先请求登录页面,拿到初始Cookie和csrf_token(如果有)
    login_page = session.get("https://prudential.com/login")
    soup = BeautifulSoup(login_page.text, "html.parser")
    csrf_token = soup.find("input", {"name": "csrf_token"})["value"] # 按实际字段名调整
    
  2. 构造Payload发送登录请求:
    login_payload = {
        "username": "你的账号",
        "password": "你的密码",
        "csrf_token": csrf_token,
        # 其他必填参数
    }
    login_response = session.post("登录接口URL", data=login_payload, headers={
        "User-Agent": "和手动登录一致的UA",
        "Content-Type": "application/x-www-form-urlencoded" # 按实际请求头调整
    })
    
  3. 登录成功后,Session会自动保存有效Cookie,后续直接用session.get(余额接口URL)即可获取数据

三、处理陌生设备安全验证

  • 若触发设备验证,先检查登录响应内容:如果出现验证页面特征(比如"verify device"),提取验证码请求接口,发送获取验证码的请求;手动接收验证码后,构造验证Payload用Session发送到验证接口
  • 提前在目标设备手动登录并勾选"记住设备",后续自动化请求大概率不会再触发验证
  • 临时方案:登录成功后把Session的Cookie保存到本地,后续直接加载使用:
    import json
     # 保存Cookie
     with open("prudential_cookies.json", "w") as f:
         json.dump(session.cookies.get_dict(), f)
    
     # 加载Cookie
     session = requests.Session()
     with open("prudential_cookies.json", "r") as f:
         cookies = json.load(f)
         session.cookies.update(cookies)
    

四、Selenium验证码问题的临时应对

  • 用已登录过的浏览器配置文件启动Selenium(比如Chrome的用户数据目录),跳过首次登录的验证码和设备验证
  • 保持IP和UA与手动登录一致,避免频繁更换环境

内容的提问来源于stack exchange,提问作者Chalck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:25:06