影刀RPA避坑指南_Cookie管理与登录态保持完整方案

影刀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. 如果有验证码,走验证码处理(见下文)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c7e4ca4f007f4c6a97219ef8e1e10c4c.png#pic_center)

判断元素是否存在("验证码图片"):
    处理验证码()

# 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-
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/062f5cd7a6ff47b49a8ca3b31759fda4.png#pic_center)
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)
    
    # 再次检测验证码是否消失(说明人工已处理)
    判断元素是否存在("验证码图片") -> 验证码还在
    
    如果 验证码还在:
        输出日志("验证码仍未处理,跳过当前店铺")
        继续循环  # 跳过一个店铺,处理下一个

七、防验策略

与其被动处理验证码,不如主动降低触发概率:

  1. 操作间隔不要太快:每次点击后等0.5~1秒,不要太密

  2. 分时段运行:不要7×24小时连续跑,设置定时任务,分早中晚三段

  3. IP不要频繁切换:同一天内用同一个IP

  4. 在这里插入图片描述

  5. 一次只登录一个账号:不要并发登录多个


作者:林焱

在这里插入图片描述

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值