Skip to content

Commit 270b09c

Browse files
committed
feat: add remote-friendly Heybox login
1 parent 1d282c0 commit 270b09c

16 files changed

Lines changed: 1346 additions & 34 deletions

README.md

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ heybox --version
6262
## 使用
6363

6464
```bash
65+
# 首次登录:默认生成小黑盒 App 扫码二维码
66+
heybox login
67+
heybox auth status
68+
6569
# 全站统一搜索
6670
heybox search "Steam 夏促"
6771

@@ -97,15 +101,44 @@ heybox search "Steam" --sort latest --timeout 20s
97101

98102
`--all` 仍受 `--max-pages` 保护,默认最多获取 5 页,最大允许 20 页;各页按顺序请求,页间有短暂延时以降低触发限流的概率。
99103

100-
## 可选登录态
104+
## 登录与凭据安全
105+
106+
默认登录方式适合本机终端、SSH 和远程 Agent:
107+
108+
```bash
109+
heybox login
110+
```
111+
112+
CLI 会调用小黑盒当前网页端使用的二维码接口,在交互式终端显示 Unicode 二维码,并始终生成一个权限为 `0600` 的临时 PNG、输出其路径。使用小黑盒 App 扫码并在手机上确认即可;命令结束后临时图片会自动删除。远程 Agent 可以在命令等待期间展示这张 PNG,因此不依赖远端桌面或远端浏览器。
113+
114+
需要验证码、密码、微信或谷歌二次验证时,可以改用官方网页登录:
115+
116+
```bash
117+
heybox login --browser
118+
```
119+
120+
网页模式只在 `127.0.0.1` 的随机端口监听登录回调,并使用随机 `state` 校验回调。它要求完成登录的浏览器能访问运行 CLI 的这台电脑;纯 SSH/远程 Agent 场景优先使用默认二维码模式。浏览器没有自动打开时:
121+
122+
```bash
123+
heybox login --browser --no-browser
124+
```
125+
126+
登录成功后只保存搜索需要的 `heybox_id``pkey` 等会话字段,不保存密码、验证码、二维码或谷歌二次验证材料。文件位于系统用户配置目录下的 `heybox-cli/session.json`:macOS 通常是 `~/Library/Application Support/heybox-cli/session.json`,Linux 通常是 `~/.config/heybox-cli/session.json`,Windows 位于用户 AppData。macOS/Linux 的目录权限设为 `0700`、文件权限设为 `0600`;Windows 继承用户 AppData 的访问控制。写入使用同目录临时文件原子替换,并拒绝符号链接目标。
127+
128+
查看状态或删除本地凭据:
129+
130+
```bash
131+
heybox auth status
132+
heybox logout
133+
```
101134

102-
默认匿名搜索。如果小黑盒要求登录,可以通过环境变量提供已有 Cookie
135+
`HEYBOX_COOKIE` 仍可作为临时覆盖,并且优先级高于本地会话文件
103136

104137
```bash
105138
HEYBOX_COOKIE='heybox_id=...; ...' heybox search "关键词"
106139
```
107140

108-
Cookie 不支持命令行参数,避免出现在 shell 历史和进程列表中;CLI 也不会读取浏览器 Cookie 或把 Cookie 输出到日志。建议只在当前 shell 临时设置,不要提交到仓库
141+
Cookie 不支持命令行参数,避免出现在进程列表中;CLI 也不会读取其他浏览器 Cookie 或把凭据输出到日志。会话文件等同于登录凭据,请勿复制给他人或提交到仓库
109142

110143
## 输出和错误
111144

@@ -135,8 +168,8 @@ make check
135168
发布由 GitHub Actions 和 GoReleaser 自动完成。推送语义化版本标签即可创建多平台 Release、checksums、构建证明并更新 Homebrew Tap:
136169

137170
```bash
138-
git tag v0.1.0
139-
git push origin v0.1.0
171+
git tag v0.2.0
172+
git push origin v0.2.0
140173
```
141174

142175
默认测试只使用本地 fixture 和 `httptest`,不会访问小黑盒。手动在线验证:

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ go 1.25
44

55
require (
66
github.com/mattn/go-runewidth v0.0.27
7+
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
78
github.com/spf13/cobra v1.10.2
9+
golang.org/x/sys v0.35.0
810
golang.org/x/term v0.34.0
911
)
1012

1113
require (
1214
github.com/clipperhouse/uax29/v2 v2.2.0 // indirect
1315
github.com/inconshreveable/mousetrap v1.1.0 // indirect
1416
github.com/spf13/pflag v1.0.9 // indirect
15-
golang.org/x/sys v0.35.0 // indirect
1617
)

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf
66
github.com/mattn/go-runewidth v0.0.27 h1:Feg/Oou5zI/wnpgDF6omIU0OokC9GxLC/WRknhVlIR0=
77
github.com/mattn/go-runewidth v0.0.27/go.mod h1:3qAiGCV4Koz/yuveO58qUefmUTRm8r0IGEXZ9jeHp/8=
88
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
9+
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
10+
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
911
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
1012
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
1113
github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=

0 commit comments

Comments
 (0)