如何用Python自动登录需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
- 初始化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"] # 按实际字段名调整 - 构造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" # 按实际请求头调整 }) - 登录成功后,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
相关产品推荐
相关产品推荐

