影刀RPA避坑指南:Cookie管理与登录态保持的完整方案——为什么你的流程总是一觉醒来就掉线了
自动化流程最大的不确定因素,不是技术,是登录态。
流程跑了三天好好的,第四天报错「请先登录」。你打开浏览器一看,登录页面上赫然写着「会话已过期」。
这很正常。大多数网站的Cookie有效期就是3~7天,电商平台可能更短。
那问题来了:自动化流程怎么处理登录态?

一、先理解Cookie和登录态的关系
你登录网站后,服务器返回一个叫Cookie的东西,浏览器存下来。以后每次请求都带着这个Cookie,服务器就知道你是谁。
Cookie有有效期(Expires / Max-Age),到了日期就失效。有些平台还有「滑动过期」——如果一段时间没活动,即使还没到有效日期,Cookie也会失效。
所以自动化的核心问题是:怎么检测登录态失效了,失效了怎么自动重新登录。

二、检测登录态的三种方法
方法A:判断特征元素是否出现(最推荐)
每个网站的登录后和未登录状态,页面上一定有不同元素。
拼多多店群自动化报活动上架!
拼多多商家后台:
已登录 → 顶部出现「店铺名称」元素
未登录 → 出现「登录」按钮
淘宝千牛:
已登录 → 页面有「当前在线」标签
未登录 → 出现「账号登录」输入框
TEMU后台:
已登录 → 左侧有导航菜单
未登录 → 整个页面是登录表单
在流程的关键操作前,加一步登录态检测:

# 每次核心操作前执行
判断元素是否存在("店铺名称") -> 登录状态
如果 登录状态 == False:
输出日志("检测到登录态失效,开始重新登录")
调用子流程("A_登录流程")
方法B:检查当前URL
登录态失效后,有些网站会自动跳转到登录页。URL会变。
获取当前网页地址() -> 当前URL
如果 "login" 在 当前URL:
输出日志("已跳转到登录页,重新登录")
调用子流程("A_登录流程")
方法C:发起一个需要登录态的请求
对大后台系统,可以调一个简单的API来判断登录态:

HTTP请求(
方法="GET",
地址="https://seller.example.com/api/user/info"
) -> 响应
如果 响应["状态码"] == 401: # 401 = 未授权
输出日志("登录态失效")
调用子流程("A_登录流程")
三种方法可以组合使用。方法A最通用,方法C最精确。
三、自动登录的实现
登录流程单独拆成一个子流程,方便多处复用。
# 子流程:A_登录流程
# 1. 先清除旧的Cookie(关键步骤)
清除当前网页Cookie()
# 2. 打开登录页
打开网页("https://seller.example.com/login")
# 3. 执行登录
等待元素出现("账号输入框", 5秒)
输入文本("账号输入框", 全局变量.str_账号)
输入文本("密码输入框", 全局变量.str_密码)
# 4. 如果有验证码,走验证码处理(见下文)

判断元素是否存在("验证码图片"):
处理验证码()
# 5. 点击登录
点击元素("登录按钮")
# 6. 等待登录成功
等待元素出现("店铺名称", 10秒)
# 7. 标记登录成功
输出日志(f"登录成功,账号:{全局变量.str_账号}")
设置全局变量 {"bool_已登录": True}
关键:登录前先 清除当前网页Cookie(),把旧的可能失效的Cookie清掉,避免新的登录被旧的Cookie干扰。
四、Cookie持久化存储
如果你不想每次启动流程都重新登录,可以把Cookie保存到文件,下次加载。
保存Cookie
# 登录成功后
获取当前网页Cookie() -> cookie字符串
# 保存到文件
写入文本文件(
文件路径="D:\\cookie\\店铺A_cookie.txt",
内容=cookie字符串
)
加载Cookie

# 下次启动时
打开网页("https://seller.example.com") # 先打开目标域名
读取文本文件("D:\\cookie\\店铺A_cookie.txt") -> cookie字符串
设置Cookie(
cookie字符串=cookie字符串
)
# 刷新页面让Cookie生效
刷新页面()
# 验证登录态
判断元素是否存在("店铺名称") -> 登录状态
如果 登录状态 == False:
# Cookie也过期了,重新登录
调用子流程("A_登录流程")
⚠️ 注意:设置Cookie前必须先打开对应域名的网页,Cookie不能跨域设置。
五、多账号的Cookie管理
店群场景,多个店铺的Cookie要严格隔离。
店铺列表 = [
{"名称": "店铺A", "账号": "user_A", "密码": "pass_A", "Cookie文件": "D:\\cookie\\A.txt"},
{"名称": "店铺B", "账号": "user_B", "密码": "pass_B", "Cookie文件": "D:\\cookie\\B.txt"},
{"名称": "店铺C", "账号": "user_C", "密码": "pass_C", "Cookie文件": "D:\\cookie\\C.txt"},
]
遍历列表(店铺列表, 店铺):
输出日志(f"开始处理: {店铺['名称']}")
# 打开浏览器
打开网页("https://seller.example.com")
# 加载Cookie
如果 文件存在(店铺["Cookie文件"]):
读取文本文件(店铺["Cookie文件"]) -> cookie内容
设置Cookie(cookie内容)
[video(video-6jyrsYaJ-1781240466937)(type-csdn)(url-https://live.csdn.net/v/embed/526817)(image-https://v-

blog.csdnimg.cn/asset/1d3c3709da119dd8c13ab01e9b282520/cover/Cover0.jpg)(title-TEMU店群矩阵自动化运营核价报活动)]
刷新页面()
# 检测登录态
判断元素是否存在("店铺名称") -> 登录状态
如果 登录状态 == False:
调用子流程("A_登录流程", {"账号": 店铺["账号"], "密码": 店铺["密码"]})
# 登录成功后保存最新Cookie
获取当前网页Cookie() -> 新cookie
写入文本文件(店铺["Cookie文件"], 新cookie)
# 执行实际业务操作
调用子流程("B_核心业务", {"店铺名称": 店铺["名称"]})
这样每个店铺有独立的Cookie文件,互不干扰。
六、验证码处理
登录时遇到验证码,是自动化最大的痛。
方案优先级
| 方案 | 适用场景 | 可靠性 |
|---|---|---|
| 影刀AI打码 | 简单图文验证码 | 70~85% |
| 第三方打码平台(打码兔等) | 各类验证码 | 看平台质量 |
| 人工接入(暂停等待人工输入) | 复杂验证码(滑块等) | 100% |
| 降低频次触达 | 避免触发验证码 | 长期有效 |
人工接入的实现

遇到验证码时弹窗提醒,等待人工处理:
# 检测到验证码
判断元素是否存在("验证码图片"):
输出日志("遇到验证码,暂���等待人工处理")
# 发飞书消息通知
发送飞书消息("验证码通知", f"店铺{店铺名称}登录遇到验证码,请协助处理")
# 暂停60秒,等待人工输入
固定等待(60秒)
# 再次检测验证码是否消失(说明人工已处理)
判断元素是否存在("验证码图片") -> 验证码还在
如果 验证码还在:
输出日志("验证码仍未处理,跳过当前店铺")
继续循环 # 跳过一个店铺,处理下一个
七、防验策略
与其被动处理验证码,不如主动降低触发概率:
-
操作间隔不要太快:每次点击后等0.5~1秒,不要太密
-
分时段运行:不要7×24小时连续跑,设置定时任务,分早中晚三段
-
IP不要频繁切换:同一天内用同一个IP
-

-
一次只登录一个账号:不要并发登录多个
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。


2656

被折叠的 条评论
为什么被折叠?



