本地运行的多平台手动发布工作台。整理文案、一键复制、用对应的 Chrome 个人资料打开平台官网—— 发布动作全部由你本人在官网手动完成。
说白了就是一个记事本 + 浏览器书签夹,外加"按工作区切换 Chrome 账号"这一件事。
闪星者有两代,它们不共用任何一行代码。
第一代 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 的个人资料在磁盘上叫 Default、Profile 1、Profile 6,和你在 Chrome 里
看到的显示名(比如「琉璃」)完全不是一回事。命令行必须传目录名。
实测发现:如果传进去的资料名不存在,Chrome 不会报错,而是静默新建一份空白资料并打开。 软件如果不管,你就会在一个完全陌生的账号状态下上传——这就是账号混用的来源。
所以:
- 启动前先检查目标资料目录真实存在,不存在就拒绝启动并弹窗,绝不让 Chrome 自己新建
- 只用列表形式传参,禁止拼接命令行字符串(
"Profile 6"拼成字符串会被截断成Profile) - 按钮旁边常驻显示即将打开哪份资料,你点之前看得见
另外,工作区的颜色是整个界面的强调色——进「游戏」全蓝,进「房地产」全绿。 这样"我现在在哪个工作区"在任何一屏上都躲不掉。
打开网页后,请先核对右上角头像和账号名,再开始上传。
%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 starflarepowershell -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。
打包脚本会做两件事,任一不过就中止,不会给你一个坏包:
-
复查安装包里有没有网络库。打包配置把这些全部排除掉了,成品里根本不存在这些文件:
排除的东西 说明 Qt6Network.dllQt 的网络模块 Qt6WebSockets/WebChannel/WebEngine各种网络通道 Qt6Bluetooth/Nfc/SerialPort/Positioning其它对外通信 plugins/tls、plugins/networkinformationQt 的 TLS 后端和联网状态探测 _socket.pyd、_ssl.pydPython 的套接字和 TLS 扩展 _hashlib.pyd、libcrypto-3-x64.dllOpenSSL(只做哈希,用不到就不留) 成品里剩下的 Qt 库只有
Qt6Core、Qt6Gui、Qt6Widgets、Qt6Svg、Qt6OpenGL、Qt6VirtualKeyboard。 -
跑一遍自检(
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 发布。
程序图标沿用一代闪星者的图案。
用普通浏览器打开官网手动投稿,比自制客户端更少涉及第三方接入争议——这是基于各平台 用户协议文本的判断,不是官方认证,也没有可靠的封号概率数据。
各平台关于账号数量、实名认证和内容规则的要求依然适用,需要你自己遵守。