SDK 合规性文档

生效日期:2026年7月29日

说明

本文档面向将 Verhub SDK(以下简称「SDK」)集成到自有应用中的开发者(以下简称「接入方」),逐项公示 SDK 的功能、所收集的个人信息字段、系统权限使用情况以及数据的传输与处理规则,供接入方履行告知义务、在其自身的隐私政策中据实披露。本文档同时向最终用户公开。

本文档与《隐私政策》配套:本文档说明 SDK「收集什么、如何收集、如何关闭」,《隐私政策》说明这些数据到达服务端后「如何处理、留存多久、如何行使权利」。

本文档所称个人信息的判定范围,参照国家标准《GB/T 35273 信息安全技术 个人信息安全规范》附录;系统权限的判定范围,参照《网络安全实践指南——移动互联网应用程序个人信息相关系统权限申请使用规范》。

本文档将帮助您了解以下内容:

一、SDK 基本信息

二、SDK 的功能与触发方式

三、个人信息收集清单

四、系统权限使用情况

五、SDK 不收集的信息

六、数据的传输与处理规则

七、各语言版本的差异

八、第三方依赖

九、接入方的合规义务

十、合规配置指引

十一、本文档的更新

一、SDK 基本信息

项目内容
SDK 名称Verhub SDK
提供形式开源软件,随 Verhub 项目一并发布,由接入方自行集成
服务类型版本更新检查、公告分发、用户反馈收集、日志与行为记录上报
语言版本TypeScript / JavaScript、Python、Rust、浏览器(纯 JS)
数据接收方接入方在初始化时指定的 Verhub 服务实例。就本实例而言,接收方为 Verhub
配套隐私政策本站《隐私政策》

SDK 不向 Verhub 的开发者回传任何数据。 请求地址由接入方在初始化时指定,数据只发往该地址所指向的服务实例;Verhub 的开发者不参与该实例的运营,不接收、不存储、不访问其中的任何数据。

二、SDK 的功能与触发方式

功能触发方式是否必需
查询项目公开信息、版本列表与版本详情应用调用相应查询方法否,由接入方决定是否使用
检查更新应用调用检查更新方法
获取公告应用调用公告查询方法
提交反馈最终用户在应用内主动提交
上报日志应用调用日志上报方法
上报行为记录应用调用行为记录上报方法

SDK 不在后台自行运行,不定时轮询,也不在应用未调用时发起任何请求。 每一次数据发送均由应用主动调用相应方法触发。未被应用调用的能力不会产生任何数据。

SDK 不在设备上生成、写入或者保存任何标识符,不使用 Cookie、本地存储或者本地文件留存数据。 请求失败时不写入本地队列,也不在下次启动时补发。

三、个人信息收集清单

(一)每次请求均会附带的信息

字段内容是否属于个人信息收集方式使用目的是否可关闭
项目标识接入方在服务端登记的项目标识符由接入方在初始化时配置确定数据归属的项目否,缺少则无法路由
平台类型windows、linux、macos、ios、android、web、others 七者之一SDK 自动判定或者由接入方显式声明,通过请求头 x-verhub-platform 发送按平台筛选应展示的公告;分平台统计可关闭,见第十条
系统版本明细操作系统版本字符串,如「11」「ubuntu 24.04」同上,通过请求头 x-verhub-platform-version 发送系统版本分布统计;异常时缩小排查范围可关闭,见第十条
SDK 标识SDK 名称与版本号(verhub-sdk-js、verhub-sdk-python、verhub-sdk-rust),可附带接入方设置的应用标识,通过 User-Agent 发送SDK 自动生成区分调用来源浏览器环境下不发送
网络地址设备访问服务端时使用的 IP 地址由网络协议本身携带,服务端可观测归属地聚合统计、频次限制、故障排查否,属于网络通信的固有组成部分

关于系统版本明细的读取范围。 SDK 只读取操作系统的版本信息本身:Windows 通过系统接口读取内核版本号并还原为市场版本号(11、10、8.1、8、7),macOS 读取产品版本号,Linux 读取 /etc/os-release(或者 /usr/lib/os-release)中的发行版标识与版本号并拼成「发行版 版本号」,浏览器环境不读取。除上述文件外,SDK 不读取设备上的任何文件、目录或者系统数据库。

(二)各功能收集的字段

1、查询项目公开信息、版本列表、版本详情与公告

除本条第(一)项所列的通用信息外,不发送其他信息。公告查询可附带接入方指定的平台筛选参数与分页参数。上述字段均不属于个人信息。

2、检查更新

字段是否必填上限是否属于个人信息说明
当前版本号与下一项至少提供其一64 字符由应用提供
用于比较的版本序号可选64 字符由应用提供
是否包含预览版可选由应用提供

3、提交反馈

仅在最终用户在应用内主动提交时触发。

字段是否必填上限是否属于个人信息说明
反馈正文必填4096 字符取决于用户填写的内容由用户输入
评分可选1 至 5 的整数由用户选择
联系方式可选128 字符由用户填写,可为邮箱、电话或者即时通讯账号;不做格式校验,不填写则不发送
用户标识可选64 字符可能是由接入方定义并提交,其含义由接入方决定,服务端不作解析
是否转发至 GitHub可选默认为否,见下文
是否隐藏该反馈可选默认为否。设为是时,管理端列表默认不展示该条反馈,其评分仍计入统计
平台类型、系统版本明细可选可在此覆盖通用声明
自定义字段可选取决于接入方填入的内容由接入方组织的结构化内容

关于转发至 GitHub。 仅当本实例为该项目启用了反馈转发功能,且用户在提交时明确选择转发,反馈正文、联系方式、用户标识、平台与系统版本才会按模板写入运营者指定的 GitHub 仓库中的一条 Issue。若该仓库为公开仓库,上述内容将成为公开可见的信息。 用户未选择转发的,不会发生此项传输。选择转发时联系方式为必填项,SDK 在本地即会拦下未填联系方式的提交。

4、上报日志

字段是否必填上限是否属于个人信息说明
日志级别必填0 至 3 的整数由应用提供
日志正文必填4096 字符取决于接入方填入的内容由应用组织
设备信息字段可选取决于接入方填入的内容由应用组织的结构化内容
自定义字段可选取决于接入方填入的内容由应用组织的结构化内容

设备信息字段与日志正文的内容完全由接入方自行组织,SDK 不会自动读取任何设备信息填入其中。 其中是否包含可识别到最终用户的信息,取决于接入方的实现。这部分内容的最小化与匿名化由接入方负责:服务端按原样接收并存储,不作解析,不识别其中的个人信息,也不代为进行匿名化或者去标识化处理。

5、上报行为记录

字段是否必填上限是否属于个人信息说明
行为标识必填64 字符由接入方在服务端登记
自定义字段可选取决于接入方填入的内容由应用组织的结构化内容

服务端在保存行为记录时,会一并保存本次 HTTP 请求的方法、完整的请求头、请求体、IP 地址与 User-Agent。若应用在调用时附加了自定义请求头,该请求头亦会被记录。 接入方在启用该功能前应确认自定义请求头中不含不应留存的内容。

(三)服务端在接收提交时另行记录的信息

反馈、日志与行为记录三类提交,服务端在落库时另行记录:IP 地址、User-Agent、由 IP 推断的地理位置(国家、省级行政区、城市)、平台与系统版本、提交时间,以及用于抑制重复提交的指纹。

其余查询类接口不生成与单次请求对应的记录,仅按「项目 × 接口 × 小时 × 平台 × 地区」累加计数。

四、系统权限使用情况

Verhub SDK 不申请任何操作系统权限。

对照《网络安全实践指南——移动互联网应用程序个人信息相关系统权限申请使用规范》,SDK 不申请下列任何一项权限:位置、通讯录、相机、麦克风、存储、电话、短信、日历、身体传感器、运动与健身、附近的设备、悬浮窗、后台自启动、关联启动。

SDK 在本机的读取行为仅限一项:在 Linux 系统上读取 /etc/os-release(或者 /usr/lib/os-release)以获取发行版版本号。该文件是系统的公开版本标识文件,不含个人信息,此项读取亦不需要申请任何权限。

五、SDK 不收集的信息

SDK 不读取、不发送下列任何一项:

  • 设备序列号、IMEI、IMSI、ICCID、MAC 地址、Android ID、IDFA、IDFV、OAID、OpenUDID 等设备唯一标识或者广告标识符;
  • 通讯录、通话记录、短信、相册、摄像头、麦克风;
  • 精确地理位置(卫星定位)与传感器数据;
  • 剪贴板内容、键盘输入、屏幕内容;
  • 应用安装列表与其他应用的运行状态;
  • 文件系统的目录结构与文件内容(第四条所述的系统版本标识文件除外);
  • 账号密码等身份凭据;
  • 网络运营商、SIM 卡信息、基站与 Wi-Fi 信息。

SDK 不会为最终用户生成任何持久标识符,因此不具备跨应用、跨设备识别同一使用者的能力。

六、数据的传输与处理规则

1、传输。 请求地址由接入方在初始化时指定。接入方应配置 HTTPS 地址,以保证传输过程加密。

2、不落盘。 SDK 不在设备上缓存、排队或者持久化任何待发送数据;请求失败即失败,不写入本地存储,也不在下次启动时补发。

3、重试。 仅对幂等方法(GET 等)在连接失败或者服务端返回 502、503、504 时自动重试,默认 2 次并按指数退避。提交类请求(检查更新、反馈、日志、行为记录)一律不自动重试,不会因重试产生重复提交。

4、超时。 单次请求默认 15 秒超时,可由接入方调整。

5、重复抑制。 服务端对反馈、日志与行为记录计算一个指纹,在短时间窗口(默认 60 秒)内将内容相同的重复提交折叠为一条。该指纹以 SHA-256 计算后截取 128 位,为单向散列,不能据以还原原始内容,也不用于识别设备。

6、频次限制。 公开上报接口按来源 IP 限流,默认为每分钟 300 次;选择转发至 GitHub 的反馈另设更严格的限制,默认为每个 IP 每小时 3 次。实际取值由运营者配置。

7、后续处理。 上述数据在服务端的存储地域、留存期限、共享范围以及最终用户可以行使的权利,见《隐私政策》。

七、各语言版本的差异

四个语言版本的采集范围与判定规则一致,差异仅来自运行环境的固有限制。

能力TypeScript / JavaScriptPythonRust浏览器(纯 JS)
平台自动判定按运行时宿主系统判定;浏览器与 Worker 记作 web按解释器所在系统判定按编译目标判定一律记作 web
系统版本自动读取服务端运行时读取,浏览器环境不读取读取读取不读取
User-Agent 声明服务端运行时发送发送发送不发送,浏览器禁止脚本改写
关闭平台声明支持支持支持支持
单独关闭系统版本声明支持支持不支持,关闭平台声明时一并关闭支持

浏览器环境下未声明平台与系统版本时,服务端会依据浏览器自身发送的 User-Agent 推断平台与系统版本,用于聚合统计。该请求头由浏览器固有发送,SDK 无法阻止。

八、第三方依赖

语言版本第三方依赖用途是否收集个人信息
TypeScript / JavaScript使用运行时内建的 fetch
浏览器(纯 JS)使用浏览器内建的 fetch
PythonrequestsHTTP 请求
Rustreqwest、os_info、serde、serde_json、tokio、log、percent-encoding、thiserrorHTTP 请求、系统版本读取、序列化

上述依赖均为通用基础库,不包含任何数据采集、广告或者统计类 SDK。 其中 os_info 用于读取操作系统版本,在个别系统上会调用系统自带的版本查询命令,读取范围仍限于操作系统版本本身。

九、接入方的合规义务

为保障接入方的应用合法合规,避免出现侵害最终用户个人信息权益的情形,接入方在使用 SDK 时应当履行下列义务:

1、在自身隐私政策中据实披露。 接入方应在其应用的隐私政策中列明所集成的第三方 SDK 及其收集的个人信息类型。参考条款如下,具体内容请按接入方实际启用的能力与配置调整:

披露项内容
SDK 名称Verhub SDK
服务类型版本更新检查、公告分发、用户反馈收集、日志与行为记录上报(按实际启用的能力填写)
收集个人信息类型网络信息(IP 地址);可选——联系方式(由用户在提交反馈时自愿填写)、用户标识(由本应用定义并提交)
数据接收方Verhub
隐私政策链接本站《隐私政策》页面地址

2、取得同意后再初始化。 接入方应确保在最终用户阅读并同意其隐私政策之前,不创建 SDK 客户端、不调用任何会发起网络请求的方法。

3、日志与行为记录须另行取得明确同意。 这两项能力所上报的内容由接入方自行组织,其中可能包含可识别到最终用户的信息。接入方应当在取得最终用户明确同意的前提下调用,并在调用前自行完成内容的最小化与匿名化处理。 服务端按原样接收并存储,不代为解析或者匿名化,也无从判断某一次上报是否已经取得同意。

4、留存授权记录。 接入方应确保已通过隐私政策等文件取得最终用户明确有效的授权,相关授权文件与授权记录需要存档备查。当最终用户或者监管机构提出授权异议时,接入方有义务提供相应记录以证明其合规使用。

5、未成年人。 接入方的应用面向未成年人的,应采取必要措施确保相关使用已取得监护人同意,并在其自身隐私政策中履行相应的告知义务。

6、及时升级。 接入方应关注 SDK 的版本更新,及时升级至最新版本。

因接入方未合规使用 SDK 所导致的风险与后果,由接入方自行承担。

十、合规配置指引

1、延迟初始化。 在最终用户同意隐私政策之前不要创建客户端。SDK 在构造时不会发起任何网络请求,但会读取系统版本信息,因此仍建议把构造动作放在取得同意之后。

2、关闭平台与系统版本声明。 若接入方不希望上报平台类型与系统版本明细,可在初始化时显式关闭:

语言版本关闭方式
TypeScript / JavaScript、浏览器初始化选项中传入 platform 为 null;需要保留平台声明而只关闭版本时,传入 platformVersion 为 null
Python构造参数传入 platform=None;只关闭版本时传入 platform_version=None
Rust构造器上调用 without_platform(),平台与系统版本一并不再声明

关闭后,服务端仍会依据 User-Agent 作出推断(浏览器环境尤其如此)。该推断仅用于聚合统计,不影响接口返回的内容。

3、按需启用能力。 SDK 的各项能力互相独立,未调用的能力不会产生任何数据。只需要版本检查与公告的接入方,无需调用反馈、日志与行为记录相关的方法。

4、谨慎使用自定义请求头。 行为记录会连同完整请求头一并落库,接入方在初始化时附加的自定义请求头也会被记录。请勿在自定义请求头中放置凭据或者其他不应留存的内容。

十一、本文档的更新

SDK 的采集范围、字段或者处理规则发生变化时,本文档将同步修订。修订后的版本自在本页面发布之日起适用,页面底部标注最后更新日期。

如您对本文档有任何疑问,可以通过 [email protected] 与我们联系。

最后更新:2026-07-29(UTC)