title: “影刀RPA Cookie管理实战:登录态保持与Session复用”
date: 2026-07-01
author: 林焱
影刀RPA Cookie管理实战:登录态保持与Session复用
做过爬虫或自动化的人都踩过这个坑:流程跑了30分钟,突然弹出登录框,之前采集的数据全没了。根源就是没管好Cookie。本文教你在影刀里正确管理Cookie,实现登录态长期保持。
什么情况用什么
必须管Cookie的场景:
目标网站登录有验证码,不想每次都打码
流程要跑好几小时,中途Session会过期
多个子流程都需要登录同一个账号,避免重复登录
账号有登录频率限制,避免触发风控
不需要专门管的场景:
- 流程很短,5分钟内跑完,Session不会过期
- 网站没有登录要求
怎么做
拼多多店群自动化报活动上架!
方法1:导出并复用Cookie文件
登录一次,把Cookie保存到文件,下次流程启动直接加载,跳过登录。
【影刀操作】- 第一步:登录并保存Cookie
- 新建流程「保存登录Cookie」
- 添加【打开网页】指令
- URL:
https://目标网站.com/login
- URL:
- 添加【填写】指令填入账号密码
- 添加【点击】指令点击登录按钮
- 添加【等待网页加载】指令(确认登录成功)
- 添加【Python】指令
importjson# 获取当前浏览器所有Cookiecookies=page.context.cookies()# 保存到文件withopen(r'C:\RPA配置\cookies.json','w',encoding='utf-8')asf:json.dump(cookies,f,ensure_ascii=False,indent=2)print(f'已保存{len(cookies)}个Cookie')
【影刀操作】- 第二步:加载Cookie跳过登录
- 在主流程开头添加【Python】指令
importjsonimportos cookie_file=r'C:\RPA配置\cookies.json'# 检查Cookie文件是否存在且未过期(7天内)ifos.path.exists(cookie_file):mtime=os.path.getmtime(cookie_file)importtime age_days=(time.time()-mtime)/86400ifage_days<7:withopen(cookie_file,'r',encoding='utf-8')asf:cookies=json.load(f)page.context.add_cookies(cookies)print('已加载Cookie,跳过登录')yda.set_variable('need_login',False)else:print('Cookie已过期,需要重新登录')yda.set_variable('need_login',True)else:yda.set_variable('need_login',True) - 添加【条件判断】指令
- 判断条件:变量
need_login等于 True - 如果为真:调用子流程「执行登录」
- 判断条件:变量
- 添加【打开网页】指令访问目标页面
- 添加【条件判断】指令检查是否被重定向到登录页
- 如果被重定向:删除旧Cookie文件,重新登录
方法2:通过接口请求获取Token
API类接口用Token认证,比Cookie更稳定。
【影刀操作】
- 添加【Python】指令
importrequestsimportjson# 用账号密码换Tokenlogin_url='https://api.example.com/auth/login'payload={'username':'your_user','password':'your_pass'}resp=requests.post(login_url,json=payload,timeout=10)resp.raise_for_status()token=resp.json()['data']['token']expired_at=resp.json()['data']['expired_at']# 保存Tokentoken_info={'token':token,'expired_at':expired_at}withopen(r'C:\RPA配置\token.json','w')asf:json.dump(token_info,f)yda.set_variable('api_token',token)print('Token获取成功,有效期至:',expired_at) - 后续所有API请求在Header里带上Token:
headers={'Authorization':f'Bearer{api_token}'}resp=requests.get('https://api.example.com/data',headers=headers)
方法3:检测登录失效并自动续登
长流程运行中途检测到登录失效,自动重新登录继续。
【影刀操作】
- 新建子流程「检查并确保已登录」
- 添加【获取当前URL】指令,保存到变量
current_url - 添加【条件判断】指令
- 判断条件:
current_url包含login或 包含auth - 如果为真(说明被踢到登录页):
- 添加【写入日志】指令:
检测到登录失效,正在重新登录 - 调用子流程「执行登录」
- 添加【打开网页】回到之前的页面
- 添加【写入日志】指令:
- 判断条件:
- 在主流程每隔20步调用一次「检查并确保已登录」
有什么坑
坑1:Cookie包含HttpOnly标记
有些网站的关键Cookie加了HttpOnly,JavaScript和影刀的Cookie操作都拿不到,只能用Playwright的网络层截获。
解决方法:用影刀的【Python】节点通过Playwright的request拦截器在登录时捕获响应头里的Set-Cookie。
坑2:Cookie跨域失效
TEMU店群矩阵自动化运营核价报活动
保存Cookie时记录的是A域名,在B子域名下不生效。
解决方法:保存Cookie时注意domain字段,对于.example.com格式的Cookie,添加时domain要带点前缀。
坑3:Token刷新没做好
Token有效期2小时,流程跑3小时,中途Token过期报401,后面所有请求都失败。
解决方法:每次API调用前检查Token剩余有效期,不足30分钟则提前刷新。
坑4:多实例抢Cookie
两个影刀实例同时运行,同时刷新了Cookie,互相覆盖,两个都失效。
解决方法:Cookie文件加文件锁,或者每个实例用不同的账号。
实战经验
某电商运营用影刀每天采集竞品数据,账号每天凌晨2点Cookie会过期。做法:流程开头先加载Cookie,加载后访问一次接口验证有效性,验证失败再走登录流程,整个流程不用人值守。
总结
Cookie管理的核心是"能不重新登录就不登录"。保存Cookie到文件、验证有效性、过期自动续登,三步走就能解决大部分登录维护问题。