系统原理 · 证据链 · 恢复
WLOC 测试的是哪一层定位信号?
WLOC 测试的是设备上的一条限定网络定位响应链路;它不会写入 GPS 硬件,也不会全局覆盖 Core Location。诊断会记录链路实际观察到的证据,同时说明哪些结果仍由 iOS 和目标 App 决定。
一条可观察、可恢复的测试链路
WLOC 将地图链接或经纬度标准化为 WGS84,把测试目标与路线状态保留在设备端,并通过兼容客户端执行限定的网络定位响应测试。设置写入、请求、响应修改与恢复都有时间证据;GPS、定位权限、App 缓存、账号与服务端规则则保持独立。
把真实地图输入变成结构化坐标
解析器接受直接经纬度、Apple Maps、Google Maps、高德和百度等常见链接。它从 URL、查询参数或页面响应中提取地点名称和坐标,并返回来源、置信度、原始坐标系与警告。
输入 https://maps.google.com/.../@37.795490,-122.393700 输出 source=google_maps · system=WGS84 · confidence=0.94
- 输入长度受限,坐标必须在纬度 ±90、经度 ±180 的合法范围内。
- 短链最多跟随有限次数跳转,并拒绝访问本机、内网和云元数据地址。
- 无法识别时返回明确错误,不会猜一个看似合理的地点。
内部统一使用 WGS84
不同地图可能展示 WGS84、GCJ-02 或 BD-09。WLOC 保留原始坐标和值,同时把内部目标统一到 WGS84,并将结果保留到小数点后 6 位,便于收藏、路线和回归测试复用。
original 31.230416, 121.473701 · GCJ-02 canonical 31.xxxxxx, 121.xxxxxx · WGS84
- 高德及中国大陆语境下的部分地图输入按 GCJ-02 处理。
- 百度输入按 BD-09 处理,并经过 GCJ-02 转换到 WGS84。
- 中国大陆范围外跳过国内坐标偏移;转换结果会提示可能存在米级误差。
收藏、路线和配置默认留在 iPhone
WLOC 将当前目标、收藏、路线、设备配置、诊断事件和设置编码为 JSON,原子写入 App 的 Application Support 目录。重新打开 App 后会从该快照恢复,不需要创建云端账号。
- 收藏地点和路线不是默认上传到可搜索的坐标历史。
- 重置或卸载 App 会移除本机快照;导出由用户主动触发。
- 解析和转换请求只为实时响应服务,页面会明确区分本机数据与官网分析数据。
目标坐标进入受支持的测试链路
WLOC 根据当前目标和设备配置准备官方设置资源。在兼容且已获授权的环境中,保存的目标坐标优先于默认值;没有目标时,链路保持直通,不替换真实网络定位结果。
mode=active → 使用已保存测试目标 mode=route → 使用当前路线节点 mode=passthrough → 保留真实网络定位结果
- 这是网络定位测试链路,不是对 GPS 接收器或 Core Location 的全局写入。
- 静态目标用于单点状态;路线会按节点、时间和暂停状态推进。
- 目标 App 是否采用该结果,仍取决于自身权限、缓存、账号和服务端判断。
诊断检查的是整条链路,而不是一个开关
诊断先检查官方 Worker 是否可达,再检查设备设置、当前模式、目标坐标、路线状态,以及已记录的请求与 patch 时间。这些时间只能说明受支持链路观察到了什么;必须将 patch 时间与目标写入时间比较,才能判断它是否属于当前证据。缓存与目标 App 表现仍需另行人工核对。
- 服务健康检查会返回环境和版本,避免把服务不可用误判为定位失败。
- 设备状态区分 active、route 与 passthrough,并记录最近的保存、清除、请求和结果时间。
- 路线运行但尚未出现请求,或已观察请求但结果未确认时,会给出不同警告。
恢复不是附加功能,而是测试闭环
先停止并清除所有活动路线,再清除静态目标。只有模式为 passthrough、当前目标与路线都为空,并且清除后出现新的直通证据,恢复才算已经验证。随后需要重新打开目标 App,确认旧城市、旧围栏或附近列表没有继续来自缓存。
- WLOC 可以清除自身目标和路线状态,但不能强制关闭其他 App。
- 它不能替 iOS 清理系统级 locationd 缓存。
- 完整证据应同时包含测试状态和恢复后的真实状态。
隐私与安全边界
技术透明也包括说明数据去哪里、哪些请求会离开设备,以及哪些能力明确不提供。
- 收藏、路线、设备配置和诊断快照默认保存在本机 App 目录。
- 官方 Worker 处理解析、转换、健康检查和设置生成,不默认建立可搜索的明文坐标历史。
- WLOC 可能按隐私政策另行发送粗粒度的第一方产品事件;这些事件不包含精确坐标或原始地图链接。
- 外部地图链接解析限制跳转次数,并阻止访问本机、内网和元数据地址。
- WLOC 不承诺绕过 App 权限、风控、服务条款或法律限制。
为什么坐标系会造成“看起来改错了”
同一个地标在不同坐标系下可能出现明显偏移。WLOC 同时保留原始值和标准值,让团队能判断问题来自输入、转换、底图还是目标 App。
| 坐标系 | 常见来源 | WLOC 的处理 |
|---|---|---|
| WGS84 | GPS、Google 全球坐标、通用经纬度 | 作为内部标准坐标直接保存。 |
| GCJ-02 | 高德及中国大陆常见地图数据 | 在中国大陆范围内转换为 WGS84,并保留原始值。 |
| BD-09 | 百度地图 | 先转换为 GCJ-02,再转换为 WGS84。 |
为什么不同 App 的结果仍可能不同
Apple 说明 iPhone 定位会综合 GPS、Wi-Fi、蜂窝网络和蓝牙;每个 App 还管理自己的定位权限。WLOC 只负责它能观察和验证的测试层。
| 影响层 | 可能看到的现象 | 应该如何验证 |
|---|---|---|
| GPS 与传感器融合 | 室外强 GPS 可能使最终位置与网络测试结果不同。 | 在低风险环境对比室内/室外,并记录诊断和时间。 |
| iOS 权限与精确位置 | 拒绝权限、仅一次或关闭精确位置会改变目标 App 行为。 | 在系统设置确认该 App 的权限,再重复相同测试。 |
| 目标 App 缓存 | 页面仍显示旧城市、旧围栏或旧附近列表。 | 完全重新打开目标 App,并核对请求时间与后台记录。 |
| 账号与服务端规则 | 同一坐标在不同测试账号得到不同内容或风控状态。 | 只使用测试账号,并把账号、环境和期望结果写入证据。 |
| IP 与区域配置 | 内容区域可能来自网络出口而不是坐标。 | 把 IP 区域和坐标测试拆开,不要把两者当成同一个开关。 |
如何阅读诊断结果
已记录的 patch 时间只能证明兼容的网络定位响应曾在该时间被修改。请将它与目标写入时间比较;它不会自动证明当前目标已经被修改,也不能证明目标 App 采用了该信号。
| 影响层 | 可能看到的现象 | 应该如何验证 |
|---|---|---|
| 绿色 | 链路已确认 | 服务、设备设置、请求和结果有足够证据。仍需在目标 App 内核对业务状态。 |
| 黄色 | 链路部分确认 | 常见于等待首次请求、路线未触发、缓存未刷新或 GPS 影响较强。 |
| 红色 | 基础链路未通过 | 先修复服务访问或设备设置,再继续测试;不要用重复点击掩盖根因。 |
这套技术是否适合你的场景?
下载前先按测试目标判断,能减少无效安装,也让真正需要定位 QA 的团队更快开始。
| 影响层 | 可能看到的现象 | 应该如何验证 |
|---|---|---|
| 适合 | 自有 App、测试账号、预发布环境、审核演示、路线与区域内容 QA。 | 从公开低风险地点开始 |
| 需要验证 | 第三方 App、复杂缓存、强 GPS、IP 与坐标混合判断。 | 先运行诊断和恢复演练 |
| 不支持 | 虚假考勤、欺骗他人、游戏作弊、规避风控或所谓所有 App 全局覆盖。 | 不要用于未授权环境 |
三条链路,一次可验证的测试
输入
地图链接或经纬度
解析
识别来源与原始坐标系
规范
统一保存为 WGS84
准备
生成受支持的测试设置
验证
检查请求、结果与路线状态
恢复
停止并清除路线与目标;确认直通
理解原理后,从低风险测试开始
打开 WLOC,选择一个公开地点,保存目标、运行诊断,再完整执行一次恢复。只有测试与恢复都可复现,链路才真正可信。
Frequently asked questions
WLOC 会直接修改 iPhone 的 GPS 硬件吗?
不会。WLOC 面向受支持的网络定位测试链路,不写入 GPS 接收器,也不对 Core Location 做全局覆盖。
为什么地图上看到目标点,其他 App 仍可能是原位置?
目标 App 可能使用强 GPS、缓存、不同权限、IP 区域、账号规则或服务端校验。应同时检查诊断时间线和目标 App 证据。
WGS84、GCJ-02 和 BD-09 有什么区别?
它们是不同的坐标表示。WLOC 保留原始坐标,并把内部目标统一为 WGS84;中国大陆相关转换会提示可能存在米级误差。
哪些数据默认保存在本机?
当前目标、收藏、路线、设备配置、诊断事件和设置会作为 JSON 快照保存在 App 的 Application Support 目录。
怎样证明已经恢复正常定位?
停止并清除所有活动路线,再清除静态目标;确认模式为 passthrough、当前目标与路线都为空,并等待清除后的新直通证据。随后关闭 HTTPS 解密并撤销 CA,重新打开目标 App,再核对缓存与真实位置。