Back to portfolio

Insta Manage 是我开发的本地单用户网页应用,用于从我自己的 Instagram 账号以及我获授权访问的账号下载并整理媒体内容。它会以原始画质保存帖子、轮播、Reels 和快拍,并连同说明文字与元数据一起保留。

按规则行事

从第一天起我就设下明确界限:不绕过 CAPTCHA 或双重验证,不绕开私密账号,也不规避速率限制。连接 Instagram 时,应用会打开真实的浏览器窗口,停在 Instagram 自己的登录页面。您在那里亲自登录,之后应用只读取会话 Cookie。它从不接触您的密码,保存的会话也会加密存放。

功能

  • 账号:添加用户名后,会立即获取其资料(头像、简介、粉丝数与帖子数)。
  • 后台下载:同步某个主页,或下载帖子、Reels、快拍,以及您自己的快拍存档。每项任务都在后台运行并实时显示进度。
  • 浏览与选择:先获取列表而不下载任何内容,然后挑选单个项目、按住 Shift 点选一段范围,或选择「仅选新增」。已下载的项目会标记为已保存。
  • 媒体库:分为全部、帖子、Reels、快拍和存档等标签页,各自带有实时计数,并可按内容发布年份筛选。
  • 任务日志:记录每一项后台任务的历史。
  • 安卓应用:用 Capacitor 封装,通过局域网加载我电脑上的同一个应用。

应用自身的安全

后台有独立登录,密码以 bcrypt 散列保存。每个 API 路由和已下载的文件都受签名的 httpOnly 会话 Cookie 保护,连续五次登录失败会触发 60 秒锁定。

技术栈

FastAPI、SQLAlchemy 与 MySQL,搭配 Alembic 迁移 · Instaloader 与 Playwright · Celery 与 Redis 处理后台任务 · React(Vite)与 Bootstrap · Capacitor 用于安卓。

最难的部分是快拍存档。Instagram 没有公开接口,因此应用会用保存的会话驱动真实浏览器。这也是最脆弱的功能,因为 Instagram 一次改版就可能让它失效。


Share: