WLOC

兼容软件 · WPS 技术说明

WLOC 依赖哪些 VPN 软件?为什么?

WLOC 本身不是 VPN。坐标管理可独立使用;要运行网络定位响应测试,需要另行安装一款兼容的 iOS 网络客户端,由它提供本机网络隧道、限定主机的 HTTPS 检查和脚本执行能力。

App Store 上架名称为「WLOC」。如果直接链接打开了地区首页,请在 App Store 搜索「WLOC」。

01WLOC目标、配置、诊断、恢复
02网络客户端本机隧道、规则与脚本
03Apple WPSWi-Fi/蜂窝位置地标
04Core Location与 GPS、权限、缓存融合

直接回答

先说结论:只需要一款兼容客户端

Shadowrocket、Surge 5、Quantumult X、Loon、Stash 或 Egern 任选其一即可,不需要全部安装。WLOC 负责目标坐标、配置文件、状态桥接、诊断和恢复;第三方客户端负责把相应规则放进 iOS 网络路径。客户端由各自开发者独立提供,WLOC 不销售、不捆绑,也不代表 Apple 或这些客户端厂商背书。

iOS network clients

当前支持的 6 款客户端与配置格式

下面的兼容关系来自 WLOC 当前实际生成器与 App 内引导。第三方客户端版本、菜单名称和地区可用性可能变化,应以各自 App Store 页面和当前版本为准。

客户端与官方页面WLOC 输出如何接入与注意事项
Shadowrocket ↗wloc.module作为模块导入,再只为列出的两个 Apple WPS 主机开启 HTTPS Decryption。当前 App 内引导把它作为优先验证路径。
Surge 5 ↗wloc.sgmodule订阅或导入 Surge 模块,并启用其中的 MitM 主机列表。使用 WLOC 原生生成的 Surge 格式。
Quantumult X ↗wloc.conf导入 Rewrite 与 MitM 段;脚本资源和主机列表必须同时生效。诊断旧脚本前先更新资源。
Loon ↗wloc.lpx把地址作为插件安装并启用,再完成插件的证书配置。保持插件和脚本资源为最新版本。
Stash ↗wloc.stoverride直接订阅 .stoverride,并启用其中的脚本与 MitM 范围。不要通过 Script Hub 转换该文件。
Egern ↗wloc.sgmodule使用 Surge 格式模块,再为限定主机生成并信任 Egern 自己的 CA。Egern 复用 Surge 输出;WLOC 不为它生成单独文件。

已经有其中一款?先安装 WLOC,从 App 内复制与你所选客户端匹配的官方 wloc.app 配置地址。

在 App Store 打开 WLOC

VPN ≠ IP location

这里的“VPN”与改 IP 不是一回事

这些客户端常使用 iOS 的 VPN/Network Extension 通道接管本机规则流量,所以状态栏可能出现 VPN 标识;这并不等于 WLOC 向远程 VPN 服务器发送全量流量。

组件负责什么不负责什么
WLOC保存目标、生成匹配配置、触发状态桥接、展示诊断与恢复步骤。不创建 VPN 隧道,不改变公网 IP,不安装 CA,也不直接写 GPS 硬件。
兼容网络客户端创建本机网络路径,加载规则,按限定主机执行 HTTPS 检查与响应脚本。不是 WLOC 的组成部分;其权限、计费、隐私和运行状态由各自产品负责。
远程 VPN/代理服务如果用户另行配置,可能改变网络出口 IP 或传输路径。WLOC 不要求远程 VPN 订阅,也不会把 IP 地区与坐标目标当成同一个开关。

End-to-end path

从目标坐标到网络定位结果的 6 步链路

每一步都可能单独失败,因此 WLOC 记录桥接、请求、补丁和直通证据,而不是只看 VPN 图标。

01保存目标WLOC 在本机保存 WGS84 坐标
02导入配置客户端加载匹配格式
03开启网络路径iOS 可能显示 VPN 标识
04限定 HTTPS仅检查 Apple WPS 主机
05处理响应脚本修改兼容记录中的坐标字段
06验证与恢复核对目标 App,再清除回到直通

Wi-Fi Positioning System

为什么修改网络响应会影响部分定位结果

iPhone 的最终位置不是只来自 GPS。Apple 当前说明定位服务会综合蜂窝网络、Wi-Fi、GPS 和蓝牙;WPS(Wi-Fi Positioning System)把附近接入点当作位置地标。

01

当前官方边界

Core Location 是多来源融合,不是单一 GPS 开关

Apple 当前支持文档说明,定位服务可以使用蜂窝网络、Wi-Fi、GPS 与蓝牙;设备也会扩充众包的 Wi-Fi 热点和基站位置数据库。因此网络定位只是最终结果的一层。

  • 室外强 GPS、蓝牙信标、App 权限和精确位置设置都可能改变最终结果。
  • 目标 App 还可能叠加缓存、IP 区域、账号状态和服务端风控。
  • 所以“补丁成功”不等于“所有 App 都必须显示目标点”。
02

论文与历史资料

BSSID 作为地标,服务端返回坐标,设备端再计算

2024 年 IEEE S&P 论文描述了 Apple WPS 的实验模型:设备提交附近 Wi-Fi 接入点的 BSSID,服务返回这些地标及附近地标的坐标,设备在本机计算并缓存。Apple 2010 年致美国国会议员的历史信函也曾披露,设备会取得附近基站和 Wi-Fi 接入点的已知位置,并与可用 GPS 信息结合。

  • BSSID 是 Wi-Fi 接入点无线接口的标识,不是 Wi-Fi 名称 SSID。
  • 2010 年信函是历史披露,不能当作 2026 年私有协议的完整或不变规范。
  • 论文重点同时提醒了 Wi-Fi 位置数据库的隐私与批量滥用风险。
03

WLOC 实现

在目标存在时改兼容记录的坐标;没有目标时原样直通

WLOC 的响应脚本识别 Apple WPS 二进制响应中的兼容 Wi-Fi、蜂窝和 location 记录,把其中的经纬度与精度字段替换为当前目标或路线节点。清除目标后脚本不再替换响应。

  • 独立实验仓库把 /clls/wloc、protobuf 结构与 Wi-Fi/蜂窝查询作为逆向研究结果展示。
  • 该端点不是 Apple 面向第三方承诺稳定的公开 API,字段和行为可能随时变化。
  • WLOC 不能修改卫星信号、系统 locationd 缓存或其他 App 的服务端判断。

High-trust operation

为什么要安装并信任 CA 证书,以及风险是什么

Apple WPS 请求使用 HTTPS。兼容客户端要在设备上检查并修改响应,就必须为限定主机解密 HTTPS;因此会生成本机 CA、安装描述文件并在 iOS 中手动完全信任。这是一项高权限操作,不应该被包装成无风险的一键开关。

  • 只在你拥有或明确获准测试的专用设备、账号、App 和网络中使用。
  • 主机范围只保留 gs-loc.apple.com 与 gs-loc-cn.apple.com;不要为了省事启用全域解密。
  • 不要安装来源不明的证书,不要共享 CA 私钥,也不要在承载敏感生产账号的主力机上长期保留。
  • 测试结束后清除 WLOC 目标,停用配置与 HTTPS 检查,撤销系统证书信任;不再使用时移除证书和相关 VPN 配置。
  • WLOC 不会替第三方客户端安装或移除 CA,也无法审计该客户端对其他流量的处理。

Diagnostics

看到什么现象,应该检查哪一层

把故障定位到客户端、证书、规则、WPS 响应或目标 App,能减少反复切开关的无效操作。

现象更可能的层下一步
没有 VPN 标识或客户端未连接本机网络路径未启动。确认所选客户端的连接、当前配置与 iOS VPN 权限。
HTTP 状态桥可用,但 HTTPS 检查为 Not found配置已加载,但 HTTPS 解密、CA 信任或主机列表未生效。检查客户端开关、系统证书完全信任和两个限定主机。
没有观察到 /clls/wloc 请求规则未命中、资源过期、主机被直连绕过,或当前场景未触发 WPS。更新配置,检查绕过规则,再用低风险地图查询触发。
补丁成功,但目标 App 仍是原位置GPS、权限、缓存、IP、账号或服务端规则覆盖了网络定位结果。核对目标 App 权限与时间线,重新打开 App,并把 IP 与坐标分开测试。
已清除目标,但 App 仍显示旧位置目标 App 或 iOS 缓存尚未刷新。确认 passthrough,完全重新打开目标 App;WLOC 无法代替 iOS 清理 locationd。

Common questions

常见问题:没生效、恢复真实定位、GPS 覆盖

先判断链路到底停在哪一层,再决定是否重开 App、刷新权限或重启设备。VPN 图标本身不是成功证据。

01

没有生效?

日志显示“已修改”,但地图位置没有变化

WLOC 支持 Apple Maps、Google Maps、高德、百度链接和直接坐标文本。解析成功只说明目标坐标可用;真正的设备链路还要依次确认客户端连接、HTTPS、WLOC 请求和响应补丁。

  1. 1
    先看客户端

    确认 VPN 图标出现,所选配置、脚本和限定主机已启用。

  2. 2
    再看 HTTPS 状态桥

    HTTP 可用而 HTTPS 为 Not found,通常是 CA 信任、HTTPS 解密或主机列表尚未生效。

  3. 3
    再看最近请求

    诊断中的最近 WLOC 请求时间必须更新;没有请求时,重启不会修复未命中的规则。

  4. 4
    最后看补丁时间

    只有最近坐标替换时间和统计已更新,才进入权限、缓存与 GPS 层的排查。

方法一 · 权限与 App 刷新
  1. 关闭定位服务,并完全退出需要验证的地图或目标测试 App。
  2. 回到 WLOC 选点并保存到设备,确认诊断出现新的目标与请求证据。
  3. 重新打开定位服务;目标 App 下次请求时,如系统提供该选项,选择“下次询问或在我共享时”。
  4. 重新打开目标 App 验证。飞行模式可以用于隔离测试,但单独切换飞行模式不等同于清除缓存。
方法二 · 补丁已确认但位置仍旧
  1. 先保存目标,并确认最近 WLOC 请求与坐标替换时间都已经更新。
  2. 如果权限刷新和重新打开 App 后仍显示旧位置,重启这台已授权测试设备。
  3. 开机后恢复网络连接,启动兼容客户端并确认 VPN 图标,再打开定位服务。
  4. 打开地图或目标 App 验证,并保留诊断时间线作为证据。
02

取消测试目标

如何恢复真实定位

推荐先在 WLOC 内停止并清除活动路线,再使用“恢复真实位置/清除设备目标”。这会移除持久化的 wloc_settings;没有有效路线或模块 fallback 坐标时,响应脚本会进入 passthrough,原样放行 Apple WPS 响应。

推荐 · WLOC 内恢复
  1. 如有路线正在运行,先停止并清除路线。
  2. 点击恢复真实位置或清除设备目标。
  3. 运行诊断,确认模式为 passthrough,并观察新的直通时间。
  4. 重新打开目标 App;仍显示旧位置时再重启设备刷新显示状态。
替代 · 停用完整配置
  1. 关闭或删除 WLOC 配置、插件、模块或 Override。
  2. 关闭对应的 HTTPS 检查;不再需要时撤销并删除 CA 与 VPN 配置。
  3. 重新打开目标 App,并确认真实位置已经恢复。
  4. 高版本系统若继续显示旧状态,可在确认配置已停用后重启。
高级备用:直接清除 wloc_settings

优先使用 WLOC 内的恢复操作。只有在状态桥无法访问时,才在对应客户端的脚本环境中清除静态目标:

Surge / Loon
$persistentStore.write(null, "wloc_settings")

Quantumult X
$prefs.removeValueForKey("wloc_settings")

这些命令只清除静态目标,不会停止仍在运行的路线。Shadowrocket、Stash、Egern 的运行环境和菜单可能随版本变化,建议重新导入官方配置或使用 WLOC 内恢复。

03

能力边界

仅修改网络定位,不修改 GPS 硬件

更容易观察

室内、弱卫星视野、Wi-Fi/蜂窝定位参与度较高,并且目标 App 会采用 Apple 网络定位结果的授权测试场景。

可能被覆盖

室外强 GPS、蓝牙信标、目标 App 缓存、账号或服务端规则,以及目标 App 根本不采用这条网络响应。

测试提醒

如果要验证 Wi-Fi WPS,请保持可用网络连接;关闭 Wi-Fi 可能减少网络定位触发,不能作为通用提效步骤。

Primary · research · experimental

证据来源与可信度分层

这些资料回答的问题不同。当前 Apple 文档定义公开边界;历史信函与论文解释演进;GitHub 仓库只作为独立实验佐证。

历史官方资料

Apple 致 Markey 与 Barton 的定位服务回函(2010-07-12,存档)

打开原始资料 ↗
同行评审研究

Rye 与 Levin:Surveilling the Masses with Wi-Fi-Based Positioning Systems(IEEE S&P 2024)

打开原始资料 ↗

研究边界:WLOC 引用独立逆向实验来解释可能的私有协议结构,不把 /clls/wloc 称为 Apple 官方公开 API,也不保证未来版本保持兼容。

Authorized testing only

开始前检查清单

  1. 01

    确认设备、网络、App 和账号都属于你或已得到明确授权。

  2. 02

    只选择一款兼容客户端,并从其官方 App Store 页面获取。

  3. 03

    先在 WLOC 中用公开、低风险地点完成一次静态目标测试。

  4. 04

    把证书主机范围限制在两个 Apple WPS 主机,并记录安装与撤销步骤。

  5. 05

    验证一次 active、一次 passthrough,以及目标 App 重新打开后的真实位置。

FAQ

兼容软件与原理 FAQ

WLOC 自己是 VPN 吗?

不是。WLOC 管理坐标、配置、诊断和恢复;兼容的第三方客户端才创建 iOS 网络路径。

需要同时安装 Shadowrocket、Surge、Quantumult X 等所有软件吗?

不需要。任选一款当前受支持的客户端即可,并使用对应的 wloc.module、wloc.sgmodule、wloc.conf、wloc.lpx 或 wloc.stoverride。

必须购买远程 VPN 或代理订阅吗?

WLOC 本身不要求远程 VPN 订阅。所选客户端可能有自己的购买、功能或服务条款;WLOC 需要的是它在本机加载规则、检查限定 HTTPS 主机和执行脚本的能力。

为什么 iPhone 会显示 VPN 图标?

兼容客户端可能通过 iOS VPN/Network Extension 通道处理本机规则流量。这个图标表示网络通道已启用,并不证明 WPS 规则、证书或补丁已经成功。

VPN 图标出现后,公网 IP 地区也会改变吗?

不一定。WLOC 不提供远程出口,也不改变 IP。只有你另行配置的远程网络服务才可能影响公网出口。

为什么一定要信任证书?

因为目标响应是 HTTPS。要检查并修改限定主机的加密响应,客户端需要本机 CA 和系统信任。该权限敏感,应限制主机、使用测试机并在测试后撤销。

WLOC 支持哪些地图链接和坐标输入?

支持 Apple Maps、Google Maps、高德、百度链接,也可以直接输入纬度和经度文本。WLOC 会识别来源坐标系并规范为内部 WGS84 目标。

iOS 26/27 上日志显示已修改,但地图为什么没有变化?

先确认最近的 WLOC 请求和坐标替换时间都已更新;如果只看到 VPN 图标或状态桥,重启不能修复配置、证书或规则未命中。如果补丁已确认但地图仍旧,可先刷新目标 App 权限并重新打开,仍无变化时再重启测试设备。Apple 没有公开 WLOC 专用的 iOS 26/27 缓存或必须重启规则,因此这是排障建议,不是版本保证。

怎样取消测试目标并恢复真实定位?

先停止并清除活动路线,再用 WLOC 的恢复真实位置操作清除 wloc_settings,确认状态为 passthrough。当前官方配置没有 113.94114、22.544577 这组透传哨兵;只要模块参数中仍有有效 fallback 经纬度,或路线仍在运行,脚本仍可能继续替换。

这会让所有 App 都显示同一个位置吗?

不会保证。最终结果还受 GPS、蓝牙、蜂窝、权限、缓存、IP、账号和服务端规则影响;某些 App 也可能完全不采用这条网络定位结果。

如何完整移除测试设置?

先在 WLOC 清除目标并确认 passthrough,再停用或移除客户端配置与 HTTPS 检查,撤销并删除 CA 证书或描述文件,必要时移除 VPN 配置,最后重新打开目标 App 验证真实位置。

WLOC

先选一款兼容客户端,再从可恢复的低风险测试开始

安装 WLOC,选择公开地点,按 App 内与所选客户端匹配的步骤配置,完成一次保存、诊断、清除和证书撤销闭环。