Skip to content

About

闪星者 · 本地多平台手动发布工作台。v2 起完全重写为 Python 桌面程序(前身开发代号「聚星器」,已并入本仓库):不带浏览器内核、不引入网络库、不模拟点击、不注入脚本——只把 Chrome 开到正确的账号身份上、把文案摊在手边,登录与发布由人完成。抖音/小红书/快手/哔哩哔哩/视频号,每个账号独立 Chrome 身份,全程本地运行。v1 的 Electron 版(基于 MatrixMedia)保留在 v1-electron 标签。GPL-2.0

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

379 Commits

Folders and files

Repository files navigation

闪星者 StarFlare

本地运行的多平台手动发布工作台。整理文案、一键复制、用对应的 Chrome 个人资料打开平台官网—— 发布动作全部由你本人在官网手动完成。

说白了就是一个记事本 + 浏览器书签夹,外加"按工作区切换 Chrome 账号"这一件事。

版本说明:v2 是一次完全重写

闪星者有两代,它们不共用任何一行代码。

第一代 v1-electron 第二代(当前)
技术栈 Electron + Vue Python + PySide6
来源 基于 hanliang97/MatrixMedia 改造 全新编写,与 MatrixMedia 无代码关系
状态 打上 v1-electron 标签永久保留 主分支

取回第一代:

git checkout v1-electron

第二代重写的出发点只有一个:把软件的能力压到最小。第一代是一个内嵌了完整 Chromium 的 Electron 程序;第二代连一个浏览器内核都不带,也不引入任何网络库。理由见下面「它不做什么」。

第二代的开发代号曾叫「聚星器」,现已并入闪星者,作为闪星者的第二代发布。

它做什么

  • 建工作区(例如「游戏」「房地产」),每个工作区绑定一份 Chrome 个人资料,用颜色区分
  • 写作品草稿:标题、简介、标签,自动保存
  • 需要时给某个平台单独写一份文案,不写就用通用版
  • 勾选本次要发的平台,进入发布工作台
  • 预置列表里没有的平台,自己加:填个名字和入口网址就能用
  • 一键复制文案,一键用正确的那份 Chrome 个人资料打开平台官网
  • 发布完自己标一下「已发布」,点「本次发布完成」回到草稿列表
  • 留下一条发布记录:时间、平台、标题、简介第一句,仅此而已

它不做什么

这是这个软件最重要的部分。

  • ❌ 不联网。源码里不允许出现任何网络库,有测试守着(tests/test_safety.py)
  • ❌ 不读取、不导出、不上传 Cookie、密码、令牌
  • ❌ 不用浏览器自动化、远程调试端口、脚本注入、自动填表、模拟点击
  • ❌ 不调用任何平台的非公开接口
  • ❌ 不抓后台数据,不判断发布是否成功,不绕验证码
  • ❌ 不做代理切换、指纹伪装、反检测
  • ❌ 不内嵌浏览器控件,不在软件里显示投稿页

软件唯一的对外动作是启动 chrome.exe 并传一个网址,就这一行代码,在 src/starflare/chrome.py 的 open_url() 里。

登录、验证码、选文件、点发布,全部由你本人在 Chrome 里完成。

实测过的证据

运行中的进程(Get-NetTCPConnection / 模块列表):

TCP 连接数       : 0
UDP 端点数       : 0
加载的 Qt 库     : Qt6Core, Qt6Gui, Qt6Widgets(没有 Qt6Network)
_socket.pyd      : 未加载
_ssl.pyd         : 未加载
winhttp/wininet  : 未加载
dnsapi/urlmon    : 未加载

两点如实说明:

  • ws2_32.dll(Windows 套接字基础库)会被加载,它由 Qt6Core 和 Windows 运行时 自己拉进来,几乎每个 Windows 图形程序都有。本软件的代码没有任何东西用它—— 证据是上面的连接数为 0。要连它都不加载就得换掉 Qt,不现实。
  • 从源码跑的时候,PySide6 的发行包里躺着一个 Qt6Network.dll,是官方包的一部分, 装了 PySide6 就有。它从未被加载,因为代码里没有 from PySide6.QtNetwork import ...。 打包版把它连同所有网络库一起删掉了,成品里根本不存在这个文件——见下面「打包」一节。

源码里出现的网址只有那 5 个平台首页,唯一去向是当作命令行参数交给 chrome.exe。

关于 Chrome 个人资料的三道防线

Chrome 的个人资料在磁盘上叫 Default、Profile 1、Profile 6,和你在 Chrome 里 看到的显示名(比如「琉璃」)完全不是一回事。命令行必须传目录名。

实测发现:如果传进去的资料名不存在,Chrome 不会报错,而是静默新建一份空白资料并打开。 软件如果不管,你就会在一个完全陌生的账号状态下上传——这就是账号混用的来源。

所以:

  1. 启动前先检查目标资料目录真实存在,不存在就拒绝启动并弹窗,绝不让 Chrome 自己新建
  2. 只用列表形式传参,禁止拼接命令行字符串("Profile 6" 拼成字符串会被截断成 Profile)
  3. 按钮旁边常驻显示即将打开哪份资料,你点之前看得见

另外,工作区的颜色是整个界面的强调色——进「游戏」全蓝,进「房地产」全绿。 这样"我现在在哪个工作区"在任何一屏上都躲不掉。

打开网页后,请先核对右上角头像和账号名,再开始上传。

数据存在哪

%APPDATA%\StarFlare\data.json,一个 JSON 文件,仅此而已。原子写入,损坏时自动保留现场 (data.broken-*.json)而不是覆盖掉。想备份就复制这个文件;想搬到另一台电脑就把它拷过去。

从开发代号「聚星器」时期升级过来的,第一次启动会自动读取 %APPDATA%\juxingqi\data.json 并搬到新位置,旧文件留在原地当备份。

运行

要求 Windows 10/11 + Google Chrome。

powershell -ExecutionPolicy Bypass -File scripts\install.ps1

装好后双击 scripts\run.bat 启动。

或者手动:

uv sync
uv run starflare

打包

powershell -ExecutionPolicy Bypass -File scripts\build-windows.ps1     # 免安装版
powershell -ExecutionPolicy Bypass -File scripts\build-installer.ps1   # 安装版

第一条输出 dist\StarFlare\(约 83 MB),第二条输出 release\闪星者-安装版-2.1.1.exe (约 24 MB)。安装版装在用户目录,不需要管理员权限,卸载不会删除 %APPDATA%\StarFlare。

打包脚本会做两件事,任一不过就中止,不会给你一个坏包:

  1. 复查安装包里有没有网络库。打包配置把这些全部排除掉了,成品里根本不存在这些文件:

    排除的东西 说明
    Qt6Network.dll Qt 的网络模块
    Qt6WebSockets / WebChannel / WebEngine 各种网络通道
    Qt6Bluetooth / Nfc / SerialPort / Positioning 其它对外通信
    plugins/tls、plugins/networkinformation Qt 的 TLS 后端和联网状态探测
    _socket.pyd、_ssl.pyd Python 的套接字和 TLS 扩展
    _hashlib.pyd、libcrypto-3-x64.dll OpenSSL(只做哈希,用不到就不留)

    成品里剩下的 Qt 库只有 Qt6Core、Qt6Gui、Qt6Widgets、Qt6Svg、Qt6OpenGL、 Qt6VirtualKeyboard。

  2. 跑一遍自检(StarFlare.exe --selftest):建窗口、渲染一帧、确认图标打进去了、 确认存档能读。程序是无控制台的窗口程序,双击没反应时看不到任何报错,所以这一步 必须自动做。

打包版实测:TCP 连接数 0、UDP 端点数 0,没有加载 Qt6Network、_socket.pyd、 libcrypto。仍会加载 ws2_32.dll——Windows 和 Qt 运行时自己拉的,换掉 Qt 才能避免, 理由同上。

平台入口

预置了五个平台的创作中心首页:

平台 入口
抖音 creator.douyin.com
小红书 creator.xiaohongshu.com
快手 cp.kuaishou.com
哔哩哔哩 member.bilibili.com
微信视频号 channels.weixin.qq.com

只预置到这一层。上传页的深层地址各平台经常改,没验证过的不写死。 在工作区里点「平台入口设置」可以随时改成你自己确认过的地址。

自定义平台

预置的五个不够用就自己加。两个入口,效果一样:

  • 草稿页「这次发布到」那排标签的末尾,点「+ 新建自定义平台」。 建完自动勾上——会去建它,多半就是这次要用。
  • 工作区页右上角「平台入口设置」,里面也能加,还能改名字、改网址、删。

填名字和入口网址就行,https:// 不写会自动补上。网址同样建议只填到创作中心 首页,别填到具体的上传页——深层地址各家都经常改,改完之后打开就是 404。

自定义平台和预置平台在发布工作台上完全一样:能勾选、能单独写文案、能一键复制、 能用绑定的 Chrome 个人资料打开、能标记已发布。

删除只对自定义平台开放,预置的五个删不掉——用不上在草稿里不勾它就是了。 删掉一个自定义平台时,每条草稿里对它的勾选和单独写的文案会一起清掉(不清的话, 草稿上会写着「选了 3 个平台」,进工作台却只有 2 个)。已经写好的发布记录不受 影响,因为记录里存的是平台名字,不是 id。

测试

uv run pytest

测试里有几条是给自己立的规矩,不是普通功能测试:不许引入联网模块、代码里不许出现 浏览器凭据文件名、资料目录不存在时必须拒绝启动、命令行参数必须用列表传。 任何一条挂了,都说明软件越过了它该待的边界。

许可

仓库沿用 GPL-2.0(见 LICENSE)。

第一代闪星者派生自 MatrixMedia,受 GPL-2.0 约束,保留在 v1-electron 标签里。 第二代是独立编写的代码,不含 MatrixMedia 的任何部分,为保持仓库一致仍以 GPL-2.0 发布。

程序图标沿用一代闪星者的图案。

风险说明

用普通浏览器打开官网手动投稿,比自制客户端更少涉及第三方接入争议——这是基于各平台 用户协议文本的判断,不是官方认证,也没有可靠的封号概率数据。

各平台关于账号数量、实名认证和内容规则的要求依然适用,需要你自己遵守。

About

闪星者 · 本地多平台手动发布工作台。v2 起完全重写为 Python 桌面程序(前身开发代号「聚星器」,已并入本仓库):不带浏览器内核、不引入网络库、不模拟点击、不注入脚本——只把 Chrome 开到正确的账号身份上、把文案摊在手边,登录与发布由人完成。抖音/小红书/快手/哔哩哔哩/视频号,每个账号独立 Chrome 身份,全程本地运行。v1 的 Electron 版(基于 MatrixMedia)保留在 v1-electron 标签。GPL-2.0

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages