快照审查
关于快照的一些知识
什么是快照
快照是一个 zip 文件, 保存了设备在某个时间点的状态, 包含以下内容
- 截图
- 设备信息
- 界面信息
- 无障碍节点信息
以前开发者和用户必须下载指定应用然后到指定界面使用类似 autojs 之类的工具才能审查界面
有了快照之后, 用户只需要在指定页面抓取快照分享给开发者即可
另外对于某些出现频率极低的界面, 快照也能直接保留这些界面的状态, 无需每次等待出现
抓取/捕获快照
在 GKD 内可以通过多种方式抓取快照, 需要一些前置条件
抓取快照时必须开启无障碍权限, 否则无法获取 界面信息 和 无障碍节点信息
如果你的设备满足 Android>=11, GKD 可以通过 无障碍权限 获取截图, 否则需要额外开启截屏服务
到 主页-设置-高级模式-截屏服务
开启即可
当 Android<=10 且不开启截屏服务时 GKD 会使用 同尺寸透明图片 作为截图保存到快照里
以下是抓取快照的方式
通过悬浮窗按钮
打开 主页-设置-高级模式-悬浮窗服务
后界面会出现一个可拖动的按钮, 在任意界面点击这个按钮即可抓取快照
通过快捷开关
下拉打开状态栏, 左右滑动切换到有图标的界面, 点击添加或编辑, 在应用快捷开关找到 捕获快照
, 图标和上面介绍的悬浮窗按钮一样
添加这个快捷开关到状态栏界面, 添加完毕后在任意界面下拉状态栏点击这个图标即可抓取快照
通过截屏快照
打开 主页-设置-高级模式-截屏快照
, 某些手机截屏时会发出特殊的事件, GKD 可以抓取这些事件后触发抓取快照
通过审查工具
首先打开 主页-设置-高级模式-HTTP服务
, 在 连接设备 输入刚刚出现的地址后连接
连接成功后点击右侧的 快照
按钮即可抓取快照
通过调用服务
GKD 内部暴露了一个服务, 外部应用(某些快捷手势应用)可以启动这个服务, 启动后将抓取当前界面的快照, 它的路径是
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 重新导入快照即可