跳到主要内容

wloc 使用教程:iPhone 修改 Apple 网络定位从零开始

作者:王小义 | 公众号:王小义笔记
适用人群:想在 iPhone 上测试 Apple 网络定位、代理脚本、地图坐标切换的用户

我这次整理的是开源项目 Yu9191/wloc 的上手教程。

它做的事情很明确:通过 Surge、Quantumult X、Loon、Stash、小火箭这类代理工具,拦截 Apple 的 WLOC 网络定位请求,把 WiFi/基站定位返回的坐标改成你指定的位置。

先把边界说清楚:wloc 不是万能 GPS 模拟器。它主要影响 Apple 网络定位,也就是 WiFi/基站定位结果;如果 iPhone 当前 GPS 信号很强,系统或 App 仍可能优先使用真实 GPS。

信息时间:2026 年 8 月 9 日。wloc 模块地址、快捷指令、iOS 定位缓存策略都可能变化,最终以项目 README 和你设备上的实际表现为准。

先说结论​

wloc 适合这几类场景:

场景是否适合说明
室内 WiFi 定位测试适合网络定位权重更高,更容易看到效果
App 定位权限/城市切换测试适合适合开发者验证基础定位逻辑
临时切换 Apple 地图附近位置可以尝试需要看系统是否走 WLOC
户外强 GPS 场景不稳定iPhone 可能直接采用真实 GPS
打卡、风控、灰色用途不建议风险不可控,也不是这个教程的目的

我的判断是:wloc 更像一个开发者调试工具,不是“保证所有 App 都变定位”的工具。你可以拿它测试网络定位,但不要把它当成稳定商用方案。

wloc 的工作原理​

不用一上来就看代码,先理解这个流程:

选点页面或快捷指令
-> 请求 gs-loc.apple.com/wloc-settings/save?lon=x&lat=y
-> 代理模块拦截请求,把坐标写入代理工具的持久化存储
-> iPhone 下次请求 Apple WLOC 网络定位
-> 代理模块拦截 /clls/wloc 响应
-> 替换响应里的经纬度
-> 系统拿到新的网络定位结果

wloc 模块里主要有两条脚本规则:

脚本作用
wloc-settings.js保存你选好的经纬度
wloc.js拦截 Apple WLOC 响应并替换坐标

它需要 MITM 的域名是:

gs-loc.apple.com
gs-loc-cn.apple.com

这也是为什么很多人第一次失败:模块订阅了,但 MITM 没开;或者 MITM 开了,但证书没有在 iPhone 里信任。

准备工作​

1. 一台 iPhone​

建议先用备用机测试,不要直接拿主力机折腾。

iOS 版本要注意:

iOS 版本体验判断
iOS 15-18通常更容易即时生效
iOS 26/27 及更高Apple 强化了 locationd 定位缓存,可能必须重启才生效

如果你发现日志里已经显示脚本修改成功,但地图位置没有变,大概率不是模块没工作,而是 iOS 还在复用旧定位缓存。

2. 一个支持脚本和 MITM 的代理工具​

wloc 官方提供了这些订阅地址:

工具模块地址
Surgehttps://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.sgmodule
Quantumult Xhttps://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.conf
Loonhttps://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.lpx
Stashhttps://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.stoverride
Shadowrocket 小火箭https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.module

Egern 可以直接使用 Surge 模块。Stash 不建议用 Script Hub 转换,直接订阅 .stoverride。

如果你是新手,我建议从自己已经会用的代理工具开始,不要为了 wloc 重新换一整套工具。这个项目真正容易卡住的是证书信任和 iOS 缓存,不是模块本身。

3. 代理节点和 MITM 证书​

你需要准备:

  • 代理工具能正常联网
  • iPhone 设置里能看到 VPN 图标
  • 代理工具已开启 MITM
  • iPhone 已安装并信任 MITM 根证书
  • MITM hostname 包含 gs-loc.apple.com 和 gs-loc-cn.apple.com

iPhone 信任证书的路径一般是:

设置 -> 通用 -> 关于本机 -> 证书信任设置

打开对应代理工具的根证书信任开关。

如果这一步漏了,表现通常是:模块看起来已经启用,但保存坐标失败,或者 WLOC 请求没有被脚本处理。

4. wloc 快捷指令​

官方推荐用快捷指令,省得每次打开选点页面手动输经纬度。

快捷指令地址
wloc 设置地理位置https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7
wloc 清理恢复位置https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f

安装快捷指令时,如果 iPhone 提示不允许添加,需要先打开:

设置 -> 快捷指令 -> 允许不受信任的快捷指令

不同 iOS 版本入口可能略有变化,找不到的话就在设置里搜索“快捷指令”。

方案选择:快捷指令还是选点页面​

方案优点缺点适合谁
快捷指令从地图 App 分享即可设置,最快依赖官方 Worker 解析地图链接普通 iPhone 用户
在线选点页面可搜索、粘贴链接、收藏位置Safari 必须走代理,公共服务有请求上限想直观看地图选点的人
自部署 Worker隐私和稳定性更可控需要 Cloudflare 和命令行程序员、长期使用者

第一次用,我建议先走快捷指令。跑通以后,再考虑自部署 Worker。

第一步:订阅并启用 wloc 模块​

下面以小火箭和 Surge 两类思路讲。不同工具的按钮名字不完全一样,但核心都是:导入模块、启用模块、开启 MITM、确认 hostname。

Shadowrocket 小火箭​

  1. 打开 Shadowrocket。
  2. 进入「配置」或「模块」相关页面。
  3. 添加模块订阅:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.module
  1. 启用 Apple WLOC 定位修改。
  2. 进入 HTTPS 解密 / MITM 设置。
  3. 安装证书。
  4. 到 iPhone 系统设置里信任证书。
  5. 确认 MITM hostname 里有:
gs-loc.apple.com
gs-loc-cn.apple.com

Surge​

  1. 打开 Surge。
  2. 进入模块管理。
  3. 添加模块:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.sgmodule
  1. 启用模块。
  2. 打开 MITM。
  3. 生成并安装 CA 证书。
  4. 到 iPhone 系统设置里信任证书。
  5. 确认模块参数保持默认即可,后面用选点或快捷指令覆盖。

Quantumult X / Loon / Stash​

使用对应模块地址导入即可:

Quantumult X:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.conf

Loon:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.lpx

Stash:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.stoverride

重点还是一样:模块启用后,MITM 证书必须安装并信任,hostname 必须包含 Apple WLOC 域名。

第二步:安装 wloc 快捷指令​

在 iPhone Safari 里打开:

https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7

添加「wloc 设置地理位置」。

再打开:

https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f

添加「wloc 清理恢复位置」。

建议把这两个快捷指令放到同一个文件夹里,后面切换和恢复都方便。

第三步:从地图 App 选择位置​

用苹果地图​

  1. 打开苹果地图。
  2. 搜索你想切换到的位置。
  3. 长按地图上的目标点。
  4. 点「共享」。
  5. 在共享菜单里选择「wloc 设置地理位置」。
  6. 等快捷指令运行完成。

如果共享菜单里找不到快捷指令,滑到最右侧点「更多」,把快捷指令加进去。

用高德地图​

  1. 打开高德地图。
  2. 搜索目标地点。
  3. 点位置详情。
  4. 选择「分享」。
  5. 点「更多」。
  6. 选择「wloc 设置地理位置」。
  7. 等快捷指令运行完成。

wloc 的 Worker 会处理高德短链跳转,并把 GCJ-02 坐标转换成 WGS84。这个细节对国内地图很重要,不然你看到的位置可能会有偏移。

第四步:验证是否生效​

设置完坐标后,不要急着判断失败。按这个顺序检查:

  1. 确认代理工具已连接,iPhone 顶部能看到 VPN 图标。
  2. 确认 wloc 模块处于启用状态。
  3. 确认 MITM 证书已信任。
  4. 关闭地图 App 后重新打开。
  5. 切到室内 WiFi 环境测试。
  6. 如果是 iOS 26/27 及更高版本,重启 iPhone 后再测。

比较推荐的验证方式:

  • 打开苹果地图,看蓝点是否跳到目标附近
  • 打开需要定位权限的测试 App,看城市或附近地点是否变化
  • 在代理工具日志里搜索 wloc、gs-loc、已修改 这类关键词

我的成功证据记录:

【待补充:例如“iPhone 15 Pro / iOS 18.x / 小火箭,重开地图后蓝点切到东京银座附近”】

iOS 26/27 及更高版本的推荐流程​

wloc README 里专门提醒:iOS 26 开始,Apple 强化了 locationd 定位缓存。脚本已经改了响应,系统仍可能继续使用旧坐标。

如果你是高版本系统,建议直接按这个流程来:

  1. 在地图里选好目标位置。
  2. 通过「wloc 设置地理位置」保存。
  3. 打开飞行模式。
  4. 关闭定位服务。
  5. 重启 iPhone。
  6. 关闭飞行模式。
  7. 关闭 WiFi,先用蜂窝网络或按你的测试场景连接代理。
  8. 确认代理工具已连接,VPN 图标出现。
  9. 打开定位服务。
  10. 打开地图验证。

另一个可尝试的流程:

  1. 先关闭定位服务。
  2. 设置 wloc 目标位置。
  3. 打开定位服务。
  4. 当 App 弹出定位权限时,选择「下次询问或在我共享时」。
  5. 打开地图或目标 App 测试。

这两套流程的核心都是:让系统重新发起 WLOC 请求,不要一直吃旧缓存。

用在线选点页面设置位置​

如果你不想用快捷指令,也可以打开官方公共页面:

https://wloc-pages.pages.dev/

或者 Workers 页面:

https://wloc-spoofer.wloc.workers.dev/

使用方法:

  1. 确认代理工具已连接。
  2. 用 Safari 打开选点页面。
  3. 搜索地点,或者直接在地图上点选。
  4. 点「储存到设备」。
  5. 等页面提示保存成功。
  6. 重新打开地图或重启后验证。

注意:选点页面必须在代理模式下打开。因为它会请求 gs-loc.apple.com/wloc-settings/save,这条请求要被本机代理模块拦截,坐标才会写入代理工具持久化存储。

如果你用普通浏览器直连打开页面,很可能只是页面能显示,但设备端没有真正保存坐标。

收藏位置怎么用​

在线选点页面支持收藏多个位置。

适合这类场景:

  • 经常在几个测试城市之间切换
  • 给 App 做城市定位回归测试
  • 保存公司、家、机场、酒店等常用点位

收藏数据和生效数据是两回事:

数据保存位置作用
收藏列表浏览器 localStorage方便页面里快速选点
生效坐标代理工具持久化存储 wloc_settings脚本真正读取的坐标

所以,清理浏览器缓存可能会丢收藏,但不一定会恢复真实定位。真正影响定位的是代理工具里的 wloc_settings。

如何恢复真实定位​

最简单、最稳的方式:

  1. 关闭 wloc 模块,或者删除 wloc 模块。
  2. 重启地图 App。
  3. iOS 26/27 及更高版本建议重启 iPhone。

如果你想保留模块,只清除已保存坐标,可以运行清理快捷指令:

wloc 清理恢复位置

也可以手动清除持久化数据,字段名是:

wloc_settings

不同工具的清理方式:

工具清理方式
Surge脚本编辑器运行 $persistentStore.write(null, "wloc_settings")
Quantumult X运行 $prefs.removeValueForKey("wloc_settings")
Loon脚本编辑器运行 $persistentStore.write(null, "wloc_settings")

这里有个细节:如果你手动改过模块参数里的经纬度,清除 wloc_settings 后仍可能继续使用模块参数。新手建议不要改模块默认经纬度,统一通过快捷指令或选点页面保存位置。

自部署 Worker​

公共 Worker 能用,但它毕竟是公共服务。长期使用或者在意隐私,我建议自己部署一份。

wloc 的 Worker 主要负责:

  • 解析苹果地图链接
  • 解析高德短链
  • 处理坐标系转换
  • 提供在线选点页面

Cloudflare Workers 手动部署​

电脑上需要有 Node.js 和 npm。

git clone https://github.com/Yu9191/wloc.git
cd wloc/worker
npm install
npx wrangler login
npm run deploy

部署成功后,你会得到一个类似这样的地址:

https://wloc-spoofer.<你的子域名>.workers.dev

之后用自己的 Worker 页面选点即可。

如果你还想让快捷指令也走自己的 Worker,需要打开快捷指令编辑,把里面的公共域名:

wloc-spoofer.wloc.workers.dev

替换成你自己的 Worker 域名。

Cloudflare Pages 部署​

Pages 也可以用,但 wloc README 提醒要走项目里的命令:

git clone https://github.com/Yu9191/wloc.git
cd wloc/worker
npm install
npm run pages:deploy

不要直接跑 wrangler pages deploy dist,否则可能丢掉配置里的 compatibility 设置。

踩坑记录​

1. 模块启用了,但地图位置没变​

我遇到这类问题时,第一反应不是改经纬度,而是看系统有没有重新请求 WLOC。

常见原因:

  • iPhone 还在用旧定位缓存
  • 当前 GPS 信号太强,系统没有采用网络定位
  • 地图 App 没有重启
  • iOS 26/27 及更高版本没有重启设备

解决方式:

  1. 关闭地图 App。
  2. 确认代理工具连接。
  3. 确认 wloc 模块启用。
  4. 重启 iPhone。
  5. 在室内 WiFi 环境重新测试。

2. 保存位置失败​

如果选点页面点了「储存到设备」没有效果,多半是 Safari 的请求没有被代理模块拦截。

检查顺序:

  • Safari 是否走代理
  • VPN 图标是否出现
  • MITM 是否开启
  • 证书是否信任
  • hostname 是否包含 gs-loc.apple.com 和 gs-loc-cn.apple.com

这一步不用猜,看代理工具日志最直接。

3. 国内地图坐标有偏移​

国内常见地图不是统一坐标系。

大致可以这样理解:

来源中国大陆港澳台
苹果地图 / Google可能需要 GCJ-02 到 WGS84 换算通常 WGS84
高德 / 百度需要坐标换算仍可能需要换算

wloc 的 Worker 已经处理了苹果地图和高德的主要转换逻辑。新手不要自己手抄经纬度,优先从地图 App 分享给快捷指令。

4. 清理后还没恢复真实位置​

可能原因:

  • 模块还在启用
  • wloc_settings 没清掉
  • 模块参数里手动写了非默认经纬度
  • iOS 仍在使用缓存

处理方式:

  1. 关闭或删除 wloc 模块。
  2. 运行「wloc 清理恢复位置」。
  3. 检查模块参数是否恢复默认。
  4. 重启 iPhone。

安全和限制​

这部分建议认真看。

  1. wloc 需要 MITM Apple 的定位相关域名。只添加项目要求的 hostname,不要无脑全局 MITM。
  2. 它只改网络定位,不保证所有 App 都生效。
  3. 户外、开阔地、GPS 信号强时,效果可能不明显。
  4. iOS 高版本缓存更强,切换位置可能需要重启。
  5. 不建议用于打卡、风控对抗、账号规避等场景。
  6. 公共 Worker 虽然 README 说明不存储解析数据,但长期使用更建议自部署。
  7. 修改定位可能影响地图、天气、查找、自动化、提醒等系统功能,用完记得恢复。

常见问题​

Q:wloc 能不能改所有 App 的定位?
A:不能保证。它主要影响 Apple WLOC 网络定位。如果某个 App 直接拿 GPS,或者系统判定真实 GPS 更可靠,就可能不生效。

Q:不用代理工具可以吗?
A:不行。wloc 依赖代理工具的脚本拦截、MITM 和持久化存储。

Q:为什么一定要信任证书?
A:因为 HTTPS 请求默认不能被脚本读取和修改。MITM 证书没有信任,脚本就拦不到 gs-loc.apple.com 的内容。

Q:我应该用小火箭还是 Surge?
A:已有哪个就用哪个。Surge 调试能力更强,小火箭上手成本低。wloc 本身已经提供了不同工具的模块地址,没必要为了它重新买一套工具。

Q:公共 Worker 安全吗?
A:README 写的是解析接口不写存储、不记日志、不缓存。我的建议是:短期测试可以用公共服务,长期使用或在意隐私就自部署。

Q:恢复真实定位后,要不要删除证书?
A:如果你平时不用 HTTPS 解密,可以删除或关闭证书信任。至少要关闭 wloc 模块,避免误影响后续定位。

行动清单​

第一次从零开始,按这个顺序做:

  1. 确认你的代理工具支持脚本和 MITM。
  2. 导入对应的 wloc 模块。
  3. 开启 MITM,安装并信任证书。
  4. 确认 hostname 包含 gs-loc.apple.com 和 gs-loc-cn.apple.com。
  5. 安装「wloc 设置地理位置」快捷指令。
  6. 在苹果地图或高德地图里分享位置给快捷指令。
  7. 打开地图验证。
  8. 如果不生效,先重启 iPhone,再看代理日志。
  9. 用完运行「wloc 清理恢复位置」或关闭模块。
  10. 长期使用再考虑自部署 Worker。

总结​

wloc 的设计挺聪明:不让你手动填经纬度,而是把地图选点、快捷指令、代理脚本串起来。对 iPhone 用户来说,真正的门槛不是“会不会写脚本”,而是三件事:模块订阅对不对、MITM 证书信任没信任、iOS 有没有吃旧缓存。

我的建议是:先用快捷指令跑通一次,再决定要不要折腾自部署。只要你把它当成网络定位测试工具,而不是万能定位修改器,预期就会比较稳。