登录一次就能一直发视频:social-auto-upload Cookie 持久化原理与多账号实战指南
【免费下载链接】social-auto-upload自动化上传视频到社交媒体:抖音、小红书、视频号、tiktok、youtube、bilibili项目地址: https://gitcode.com/GitHub_Trending/so/social-auto-upload
每次发视频都要扫码登录抖音、小红书、视频号的创作者后台,是多平台视频自动上传里最磨人的环节。social-auto-upload 用 Cookie 持久化解决了它:扫码一次,登录态就存成本地 JSON 文件,之后上传前自动校验、失效才重新登录。下面把存储、安检、日常使用串成一条完整链路讲清楚。
登录一次长期发视频:解决的是什么痛点
手动多平台分发像跑配送单:每到一家平台,都得先"刷脸"。用脚本做视频自动上传时更尴尬——脚本替你点不动"扫码"那个按钮,流程每次都卡在登录页。
social-auto-upload 的思路很直白:把浏览器的登录态(Cookie)当成一张"门卡",进门时复制一份收进文件,之后每次要开平台页面就先"读卡"。这就是 Cookie 持久化的全部含义,也是它能免人工值守的基础。
登录态是怎么保存的:一张 JSON 门卡
先说结论:存下来的不是一行密码,而是浏览器状态的完整快照,落成 JSON 文件。
以 myUtils/login.py 的登录流程为例:工具拉起浏览器打开平台创作者页,等你手动扫码(最多等约 200 秒);页面一跳转就说明登录成功,紧接着用一行代码把浏览器上下文写盘:
await context.storage_state(path=cookies_dir / f"{uuid_v1}.json")Playwright 的storage_state()吐出的,就是各域名下登录凭证的 name=value 对加少量存储数据——本质上和浏览器插件里"导出 Cookie 为 JSON"是同一份东西。选 JSON 的原因是浏览器原生认这个格式:下次"免登"时把它交给一个全新浏览器即可,不需要再碰账号密码。
文件放在哪?三个入口各有约定,但都是一个账号一份文件、平台互不干扰:
- 命令行
sau用cookies/{平台}_{账号名}.json,如cookies/douyin_myaccount1.json(见 sau_cli.py 的resolve_account_file); - examples/ 下示例脚本用
cookies/{平台}_uploader/account.json,如 examples/get_douyin_cookie.py 里的cookies/douyin_uploader/account.json; - Web 后端在
cookiesFile/下按 UUID 命名,并把"平台、文件、账号名"登记进本地 SQLite 库(表结构见 db/createTable.py)。
门卡存好了,但卡会过期——怎么知道它还能用?
上传前自动安检:工具如何判断登录态是否有效
所以每次上传前,工具都会做一次"安检":拿 JSON 文件新建一个全新浏览器上下文(等于浏览器自动完成登录),打开平台发布页,等 5 秒看自己有没有被弹回登录界面。
核心逻辑在 myUtils/auth.py 的check_cookie函数里按平台分发,各平台只差"盯哪个元素"。以抖音为例:
await page.goto("https://creator.douyin.com/creator-micro/content/upload") try: await page.get_by_text("扫码登录").wait_for(timeout=5000) return False # 出现"扫码登录" → cookie 失效 except: return True # 没出现 → 登录态有效5 秒后还停在发布页就放行,被弹去扫码页说明已失效。小红书盯"手机号登录"、视频号盯"微信小店"、快手盯"机构服务",原理相同。
还有两个细节:登录流程(myUtils/login.py)在文件落盘后会立即跑一次check_cookie,验证通过才回报"登录成功",避免存下来其实已失效;上传前校验不通过时,命令行会直接给出可执行的提示,例如Douyin cookie is missing or expired: ... Run sau douyin login --account xxx first.——照着重跑登录命令即可。
原理讲完,来看实际操作。
social-auto-upload 登录实战:怎么登录、多账号怎么区分
登录就是一条命令,以抖音为例:
sau douyin login --account myaccount1 sau douyin login --account myaccount2执行后浏览器打开,扫码即可。完成后工具自动写好cookies/douyin_myaccount1.json和cookies/douyin_myaccount2.json,多账号上传就是这么朴素:上传时--account指定用哪个账号,工具自动找对应文件。快手、小红书同理,全部命令见 docs/CLI.md。
B 站略不同,不需要浏览器,直接在终端画出二维码,扫码后登录态就写进文件:
另外每个平台都有check子命令(如sau douyin check --account xxx),可以主动确认门卡是否有效,不必等上传时才发现。
日常使用注意三点:
- 🔒 JSON 等价于该平台的账号密码,别发给别人、别提交进公开仓库;
- 建议定期备份
cookies/目录,文件丢了只能重新登录; - 同平台换号用不同的
--account命名,别覆盖旧文件。
命令跑通了,剩下都是使用中的常见问题。
常见问题 FAQ
问:cookie 过期了怎么办?各平台有效期不一,工具不承诺永久有效。看到 "cookie missing or expired" 提示后,重跑对应平台的login命令即可,新文件会覆盖旧的,后续上传自动使用新登录态。
问:cookie 文件丢了,要重新登录吗?要。这份 JSON 是免登的唯一凭据,工具无法凭空恢复登录态,只能重新扫码,所以才有备份建议。文件是纯文本,可以直接打开预览,内容就是一组 name=value 的凭证对:
问:不同平台、不同入口的路径为什么不一样?CLI、examples、Web 三套约定对应不同场景(CLI 靠文件名区分账号,Web 用 UUID 防冲突),但文件内容都是同一份storage_stateJSON,懂一套就都懂。
问:A 机器登录的,B 机器能用吗?能。把 JSON 拷到 B 机器的对应路径(装好依赖)即可。传输时留意权限——这是一张能进你账号的门卡。
问:为什么第一次必须扫码?扫码是"拿到门卡"的动作,持久化机制是"之后不用再扫"。没扫过码,就没有卡可存。
最后三条实用提醒收个尾:
- 新平台先跑一次
sau {平台} login --account {名字},随后把 JSON 备份一份; - 上传报 "cookie missing or expired" 时不用查源码,重跑登录命令即可继续;
- 多账号、多平台上传时按"平台_账号名"区分文件命名,出问题时一眼能找到该看哪张门卡。
【免费下载链接】social-auto-upload自动化上传视频到社交媒体:抖音、小红书、视频号、tiktok、youtube、bilibili项目地址: https://gitcode.com/GitHub_Trending/so/social-auto-upload
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考