导语:想让iPhone显示在地球上的任何一个角落,但又不想越狱?wloc这个开源项目做到了。它通过拦截Apple的gs-loc(网络定位服务)返回的坐标,让你直接在地图上点一下,就能把iPhone的”网络定位”改成任意位置。搭配Surge等代理工具使用,无需任何复杂配置,2500+Star已经说明了一切。
一、wloc是什么
wloc(项目地址:https://github.com/Yu9191/wloc)是一个修改iPhone/iPad网络定位(WiFi/基站定位)的开源工具。
它的核心理念是:不需要越狱,不需要第三方定位App,直接在地图上选点,一键切换定位。

工作方式非常优雅:
- 在地图(苹果地图或高德地图)上长按选点
- 点击分享 → 选择”wloc设置地理位置”
- 完成,iPhone的网络定位已经变成你选的位置

恢复真实定位同样简单——点击”wloc清理恢复位置”快捷指令即可。
二、技术原理
2.1 Apple网络定位机制
在讲wloc之前,先科普一下Apple的定位体系:
iPhone有两种定位方式:
- GPS硬件定位:依靠卫星,精度最高,但室内信号差
- 网络定位(WiFi/基站定位):根据周围WiFi热点的MAC地址和基站信息查询坐标,精度稍低但室内可用
Apple的网络定位服务地址是gs-loc.apple.com,iPhone在GPS信号弱时会优先使用这个服务。wloc就是对这个服务下手了。
2.2 拦截与篡改
wloc由两部分组成:
代理模块(Surge/Quantumult X/Loon/Stash/Shadowrocket各自对应一个模块文件):
wloc.js—— 拦截/clls/wloc请求,解析protobuf格式的定位响应,用目标坐标替换真实坐标wloc-settings.js—— 拦截/wloc-settings/save请求,将用户选择的坐标写入持久化存储
在线选点页面(Cloudflare Workers/Pages部署): 用户通过选点页面选择目标位置,页面调用 gs-loc.apple.com/wloc-settings/save?lon=x&lat=y 保存坐标,代理模块拦截后写入本地存储。
数据流:
选点页面 → fetch gs-loc.apple.com/wloc-settings/save?lon=x&lat=y
→ 代理模块拦截 → wloc-settings.js 写入 $persistentStore
→ 下次WLOC触发 → wloc.js 读取坐标 → patch protobuf响应
2.3 支持的代理工具
| 工具 | 模块文件 |
|---|---|
| Surge | wloc.sgmodule |
| Quantumult X | wloc.conf |
| Loon | wloc.lpx |
| Stash | wloc.stoverride |
| Shadowrocket | wloc.module |
| Egern | 直接使用Surge模块 |
基本上主流的iOS代理工具全覆盖了。
三、使用方法
3.1 安装步骤
第一步:安装代理工具并信任MITM证书
wloc需要拦截gs-loc.apple.com和gs-loc-cn.apple.com的流量,因此需要代理工具开启MITM(中间人攻击),并信任自签名证书。
第二步:订阅模块
根据你使用的代理工具,订阅对应的模块URL:
- Surge:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.sgmodule - 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 - Shadowrocket:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.module
第三步:添加快捷指令
- 设置位置:https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7
- 恢复位置:https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f
第四步:开始使用
打开地图App,长按选择目标位置 → 分享 → 选择”wloc设置地理位置”。
恢复真实定位:运行”wloc清理恢复位置”快捷指令即可。
3.2 高德地图的支持
wloc还专门处理了高德地图的坐标转换问题。高德分享出来的是短链,真实坐标藏在302跳转的Location头里,而且用的是GCJ-02坐标系(中国偏移坐标系),需要转换成WGS-84标准坐标。
这些复杂的处理都由云端Worker自动完成,用户无感知。
3.3 iOS 26+ 注意事项
如果你使用的是iOS 26或更高版本,Apple大幅强化了locationd的定位缓存机制。系统会缓存之前获取的真实定位结果并长时间复用。
重要:安装模块或切换目标坐标后,即使脚本已成功修改了WLOC响应,也需要重启设备才能生效。飞行模式开关、关闭定位服务等方式无法清除此缓存。
iOS 15~18通常不需要重启即可生效。
四、收藏位置功能
wloc的在线选点页面支持收藏多个位置,方便来回切换:
- 添加收藏:选好位置后点击「收藏位置」→ 输入备注名称 → 保存
- 快速切换:点击收藏列表中的位置 → 地图自动跳转 → 点「储存到设备」
- 当前生效标记:与设备已保存坐标一致的收藏会显示「✓ 当前生效」
收藏列表保存在浏览器localStorage中,与代理工具的持久化存储独立。
五、自部署Worker
wloc的选点页面默认使用公共Worker部署在Cloudflare Workers上(wloc-spoofer.wloc.workers.dev),有请求上限。
如果你是重度用户,可以一键部署自己的Worker实例:
https://deploy.workers.cloudflare.com/?url=https://github.com/Yu9191/wloc/tree/main/worker
Cloudflare免费账户每天10万次请求,个人使用完全够用。
六、恢复真实定位的三种方法
方法一:关闭或删除模块(推荐)
关闭模块后脚本不再拦截WLOC请求,系统自动恢复真实定位。iOS 26+需要重启设备清除定位缓存。
方法二:运行快捷指令清除
运行”wloc清理恢复位置”快捷指令,清除持久化数据。
方法三:手动清除持久化存储
在代理工具中清除wloc_settings字段:
| 工具 | 命令 |
|---|---|
| Surge | $persistentStore.write(null, "wloc_settings") |
| Quantumult X | $prefs.removeValueForKey("wloc_settings") |
| Loon | $persistentStore.write(null, "wloc_settings") |
七、局限性
- 仅修改网络定位:不影响GPS硬件定位,在GPS信号强的室外,系统可能仍会使用GPS结果
- 室内效果最佳:WiFi定位为主的场景效果最好
- 需要代理工具:必须配合Surge等代理工具使用,纯VPN可能不支持
八、项目信息
- GitHub:https://github.com/Yu9191/wloc
- Star:2,500+
- 协议:开源
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容