Skip to content

快照审查

关于快照的一些知识

什么是快照

快照是一个 zip 文件, 保存了设备在某个时间点的状态, 包含以下内容

  • 截图
  • 设备信息
  • 界面信息
  • 无障碍节点信息

以前开发者和用户必须下载指定应用然后到指定界面使用类似 autojs 之类的工具才能审查界面

有了快照之后, 用户只需要在指定页面抓取快照分享给开发者即可

另外对于某些出现频率极低的界面, 快照也能直接保留这些界面的状态, 无需每次等待出现

抓取/捕获快照

在 GKD 内可以通过多种方式抓取快照, 需要一些前置条件

抓取快照时必须开启无障碍权限, 否则无法获取 界面信息 和 无障碍节点信息

如果你的设备满足 Android>=11, GKD 可以通过 无障碍权限 获取截图, 否则需要额外开启截屏服务

主页-设置-高级模式-截屏服务 开启即可

当 Android<=10 且不开启截屏服务时 GKD 会使用 同尺寸透明图片 作为截图保存到快照里

以下是抓取快照的方式

通过悬浮窗按钮

打开 主页-设置-高级模式-悬浮窗服务 后界面会出现一个可拖动的按钮, 在任意界面点击这个按钮即可抓取快照

通过快捷开关

下拉打开状态栏, 左右滑动切换到有图标的界面, 点击添加或编辑, 在应用快捷开关找到 捕获快照, 图标和上面介绍的悬浮窗按钮一样

添加这个快捷开关到状态栏界面, 添加完毕后在任意界面下拉状态栏点击这个图标即可抓取快照

通过截屏快照

打开 主页-设置-高级模式-截屏快照, 某些手机截屏时会发出特殊的事件, GKD 可以抓取这些事件后触发抓取快照

通过审查工具

首先打开 主页-设置-高级模式-HTTP服务, 在 连接设备 输入刚刚出现的地址后连接

连接成功后点击右侧的 快照 按钮即可抓取快照

通过调用服务

GKD 内部暴露了一个服务, 外部应用(某些快捷手势应用)可以启动这个服务, 启动后将抓取当前界面的快照, 它的路径是

text
li.songe.gkd.SnapshotActionService

通过这个服务, 你可以通过自定义手势来捕获快照, 可在 gkd-kit/gkd#253 了解更多

上传原理

当你使用审查工具生成分享链接时, 审查工具会自动帮你上传文件到 Github 后得到链接

相当于自动化以下行为

  • 从审查工具下载快照为 file.zip 文件到电脑上
  • 登录 Github 并转到任意能上传文件或者评论的公开页面
  • 将刚刚的文件拖动进输入框, 文件链接会自动生成

当在 GKD 内生成链接时也是一样的原理, 不同之处在于

网页版的审查工具直接通过 油猴脚本 获取上传凭证

而 GKD 内需要手动输入上传凭证, 也就是需要手动输入 Github Cookie

可通过如下步骤获取 Github Cookie

在电脑上获取

  • 在浏览器打开 Github 登录账号
  • https://github.com 使用 f12 打开调试面板, 选中 网络-文档 后按 f5 刷新页面, 会出来一条 github.com 的记录
  • 点击这条记录, 选中 标头-请求标头-Cookie 的右侧文字, 按下 Ctrl+C 复制即可
  • 复制成功后, 到 GKD 内 高级设置-快照-Github Cookie 编辑填入保存即可

在手机上获取

  • 下载安装 Via 浏览器
  • 在浏览器打开 Github 登录账号
  • 点击顶部地址栏左侧的图标, 在出现的菜单中点击 查看 Cookies, 出现的弹窗后点击 复制文本
  • 复制成功后, 到 GKD 内 高级设置-快照-Github Cookie 编辑填入保存即可

去除快照中的隐私信息

当抓取快照时, 图片中可能含有人的名字等敏感信息, 可能需要去除这些信息

在 GKD 的快照记录界面, 你可以先将快照图片保存到相册, 然后在相册做打马赛克之类的编辑, 之后回到记录界面替换截图即可

如果敏感信息是文字保留在快照里的节点信息上, 你需要将快照 zip 文件解压缩, 内部有一个 json 文件

节点信息就在 nodes 数组字段上, 可以直接使用文本替换为等价数量的 *, 修改文件后重新压缩为 zip 重新导入快照即可

Released under the GPL-v3 License.