wloc:优雅修改 Apple 网络定位的代理模块

📅 2026年06月27日 · 技术

wloc 项目封面

iOS 网络定位的工作原理

苹果设备在室内或 GPS 信号不佳的环境下,会通过 WiFi 和基站的网络定位服务(Apple 称之为 gs-loc)来估算位置。这个请求会发送到 Apple 的服务器 gs-loc.apple.com,服务器根据周围的 WiFi 热点和基站信息返回坐标数据。

GitHub 上的 wloc 项目利用 MITM(中间人)机制,拦截并修改这个响应,让 iOS 设备返回你指定位置的坐标,从而实现网络层面的虚拟定位。这比传统的越狱后改 GPS 更优雅,因为完全不需要越狱设备。

支持哪些工具?

wloc 是一套代理模块,完美支持主流的代理工具生态:

亮点设计:快捷指令一键切换

这个项目最巧妙的设计是提供了两个 iOS 快捷指令(Shortcuts),让用户不需要手动输入经纬度就能切换位置:

背后的实现也很精巧。高德地图分享出来的是短链,真实坐标藏在 302 跳转的 Location 头里,而且使用的是 GCJ-02 偏移坐标系。快捷指令本身读不到跳转头,也无法做坐标换算,所以项目部署了一个 Cloudflare Worker 来统一处理链接解析、跳转跟踪、和坐标转换,最终返回 WGS84 经纬度。

隐私与安全考量

项目的 Worker 解析接口 /api/parse 是纯转发模式——收到链接后跟踪跳转、解析坐标、返回 JSON,全程不写存储、不记日志、不缓存,处理完即丢弃。如果你不放心,Worker 源码完全开源,可以自行部署。

需要注意的是,iOS 26 及以上版本大幅强化了 locationd 的定位缓存机制。系统会将之前获取的真实定位缓存在内存中并长时间复用。这意味着安装模块后,即使日志显示"已修改",系统仍可能使用缓存旧坐标。解决方法是重启设备——重启会清空 locationd 的内存缓存。飞行模式开关或关闭定位服务在 iOS 26+ 上均无法清除缓存。

使用前提

这是一个设计精巧、文档完善的开源项目,将网络定位修改的门槛降到了最低,适合有虚拟定位需求的开发者和技术爱好者研究学习。

参考来源

🔧 在线开发者工具 — JSON格式化 · Base64 · UUID生成 · 正则测试 等80+免费工具
🔧 在线开发者工具 — JSON格式化 · Base64 · UUID生成 · 正则测试 等80+免费工具