影刀RPA 浏览器Cookie的保存与注入:跨流程保持登录态
每次跑流程都要重新登录一遍,不烦吗?更烦的是:每次登录触发验证码,整个流程就卡住了。
这篇文章讲怎么把登录态(Cookie)保存下来,下次流程直接复用,省去重复登录的麻烦。
Cookie到底是什么
对RPA来说,你只需要知道三件事:
- Cookie是浏览器存储的一小段文本,由网站写入,浏览器自动携带。
- 你登录成功后,网站会在Cookie里写一个"身份令牌"(比如
sessionid=abc123)。 - 下次访问时浏览器自动带上这个Cookie,网站就认得你——不需要再登录。
所以Cookie的保存和注入等于:把"我是谁"的证明存起来,下次直接亮出来。
影刀的Cookie操作方式
影刀提供了两个跟Cookie相关的动作:
| 动作 | 作用 |
|---|---|
| 【获取Cookie】 | 把当前页面的所有Cookie读出来 |
| 【设置Cookie】 | 向浏览器注入Cookie |
操作流程:
拼多多店群自动化上架方案
第一次运行(登录): 1. 【打开网页】→ 登录页 2. 【填写】用户名、密码 3. 【点击】登录按钮 4. 【等待元素】→ 确认登录成功 5. 【获取Cookie】→ 保存到变量 cookies_data 6. 【写入文件】→ 把 cookies_data 保存到本地文件 后续运行(自动登录): 1. 【打开网页】→ 目标页面(此时是未登录状态) 2. 【读取文件】→ 读取之前保存的 Cookie 3. 【设置Cookie】→ 注入 Cookie 4. 【刷新页面】→ Cookie生效,登录态恢复 5. 开始正常操作Cookie保存为JSON文件
影刀的【获取Cookie】返回的是一个列表,每条Cookie是一个字典结构:
[{"name":"sessionid","value":"abc123def456","domain":".example.com","path":"/","expires":1735689600},{"name":"user_token","value":"eyJhbGciOi...","domain":".example.com","path":"/","expires":1735689600}]在Python节点里保存和加载:
importjsonimportos# === 保存Cookie ===cookie_file=r'C:\RPA_data\cookies\example_cookies.json'os.makedirs(os.path.dirname(cookie_file),exist_ok=True)# cookie_data 是从影刀【获取Cookie】动作传入的Cookie列表withopen(cookie_file,'w',encoding='utf-8')asf:json.dump(cookie_data,f,ensure_ascii=False,indent=2)print(f'Cookie已保存,{len(cookie_data)}条')# === 加载Cookie ===withopen(cookie_file,'r',encoding='utf-8')asf:cookies=json.load(f)# cookies 传回影刀,用于【设置Cookie】动作Cookie注入的正确顺序
新手容易犯的错误是——先打开目标页面,再注入Cookie,然后发现没生效。
正确顺序:
1. 【打开网页】→ 先打开目标域名下的任意页面(哪怕只是首页) 这一步的目的是建立浏览器会话,让域名和Cookie能关联上 2. 【设置Cookie】→ 把之前保存的Cookie注入当前会话 注意:要逐条设置,或者一次性批量注入 3. 【刷新页面】→ 让浏览器带上新注入的Cookie重新发请求 4. 验证登录状态 → 页面右上角出现了用户名 → 注入成功 → 页面跳转到登录页 → Cookie已过期,需要重新登录如果顺序反了(先刷新再注入Cookie),Cookie没在刷新请求里带上,等于没注入。
Cookie过期检测与自动重登录
Cookie总有有效期。可能是几个小时,也可能一周。不管多久,总有到期的一天。
你的流程需要能检测过期并自动重登录:
功能:检查登录态,无效则自动登录1.【打开网页】→ 目标页面2.【加载Cookie】→ 注入之前保存的Cookie3.【刷新页面】4.检测登录状态: 【执行JS】检测页面上是否有关键的用户信息元素 var userElem=document.querySelector('.user-name');if(userElem&&userElem.innerText.length>0){return'已登录';}else{return'未登录';}5.IF 检测结果=='已登录':【日志输出】"Cookie有效,跳过登录"→ 开始正常操作 ELSE:【日志输出】"Cookie已过期,执行登录"【打开网页】→ 登录页面 【填写】用户名 【填写】密码 【点击】登录按钮 【等待元素】→ 确认登录成功 【获取Cookie】→ 覆盖旧的Cookie文件 → 开始正常操作这个逻辑放在每个流程的入口,不管Cookie有没效都能跑通。
Cookie安全注意事项
Cookie里包含你的身份凭证。如果Cookie文件被别人拿走,他就能以你的身份登录那个网站。
安全建议:
1. Cookie文件不要放在公开目录。
不要放在桌面、共享文件夹、版本控制仓库里。放在本地专用目录(如C:\RPA_data\cookies\)。
2. 定期清理过期Cookie。
Cookie文件存久了会累积很多无效的Cookie。建议每周自动清理并重新登录一次。
TEMU店群如何管理运营?
3. 不要在日志里打印Cookie内容。
Cookie里可能包含敏感信息。调试时不要用【日志输出】输出完整的Cookie值。
4. 不同网站用不同的Cookie文件。
不要把所有网站的Cookie搅在一起。一个网站一个文件,命名规范:
cookies_example_com.json → example.com cookies_taobao_com.json → taobao.com cookies_crm_system.json → 内部CRM系统Cookie的替代方案:浏览器Profile
除了Cookie,还有一个更彻底的方案——浏览器Profile。
浏览器的Profile就是整个用户数据文件夹,包含Cookie、LocalStorage、浏览历史、插件数据等。用Profile等于完全复刻了一个"已经登录的浏览器环境"。
在影刀中配置浏览器Profile:
1. 在影刀浏览器设置中指定"用户数据目录" 2. 指向一个专用的文件夹,比如 C:\RPA_data\chrome_profile 3. 用影刀浏览器打开网页 → 手动登录一次 → 关闭浏览器 4. 下次影刀再次使用这个Profile,登录态还在Profile vs Cookie方案对比:
| 维度 | Cookie方案 | Profile方案 |
|---|---|---|
| 设置复杂度 | 简单 | 中等 |
| 生效范围 | 单个域名 | 所有域名 |
| LocalStorage | 不支持 | 支持 |
| 多流程共享 | 文件共享 | 共用同一个目录 |
| 兼容性 | 广泛 | 某些网站可能不认Profile恢复 |
一般建议:简单的登录态保持用Cookie方案;复杂场景(需要LocalStorage、多域名共享登录态)用Profile方案。
总结:登录成功后保存Cookie到本地文件 → 下次打开时注入Cookie再刷新 → 检测过期自动重登录。这个流程写好了,你的RPA就能摆脱"每次都得登录"的痛苦。
作者:林焱