
在 iOS 设备上做虚拟定位,大致有几个固定路线:
- 用 Xcode 做开发调试
- 用iTools、爱思助手、GeoPort 等电脑端工具连接 iPhone
- 通过越狱或 TrollStore 安装特殊工具
- 借助代理抓包工具改写某些网络返回
最近有很多个高质量的基于Apple 的网络定位服务 (WLOC,Wireless Location)来实现虚拟定位的开源项目,包括 Yu9191/wloc、FFF686868/proxypin-wloc-spoofer。
Apple 网络定位服务 (WLOC,Wireless Location)原理
iPhone 定位不是只靠 GPS。在室内、地下、信号弱的地方,系统会走另一条路:把周围扫到的 WiFi 热点 MAC(BSSID)和基站信息 打包,发给 Apple 的定位服务器,服务器根据它自己维护的”热点—坐标”数据库返回附近的坐标,设备再据此算出位置。如果能在中间截住服务器返回的内容,把里面的坐标换成想要的值,设备拿到的就是被你”做过手脚”的网络定位结果,从而实现虚拟定位。
WLOC服务对应的域名:
gs-loc.apple.com/clls/wloc(国际)
gs-loc-cn.apple.com/clls/wloc(国内)
关于WLOC相关的原理分析可以参考Experiment with Apple’s public WPS service:https://github.com/acheong08/apple-corelocation-experiments
需要强调一下:
基于WLOC的虚拟定位方案只影响网络定位,不碰 GPS 硬件。 户外、GPS 信号强的时候,系统往往优先信 GPS,改写可能不生效。
必须信任 MITM 证书。 需要在设备上安装并信任代理工具的 CA,让它能解密 gs-loc*.apple.com 的 HTTPS 流量,因此最好自建MITM。
Yu9191/wloc —— 易用性强
Github:https://github.com/Yu9191/wloc
核心功能:
- 支持 Surge / Quantumult X / Loon / Stash 等主流代理工具(提供对应模块)。
- 内置在线选点网页(支持地图选点、搜索地名、粘贴 Apple Maps / 高德 / 百度等链接自动解析,还支持 GCJ-02 转 WGS84)。
- iOS 快捷指令 一键设置/恢复定位(从 Apple Maps 或高德地图分享位置即可触发)。
- 支持收藏多个位置,快速切换。
- 可自部署 Cloudflare Worker / Pages,保护隐私且无请求限制。
- 提供“透传模式”:不设置坐标时自动放行真实定位。
工作原理:
代理模块拦截 /clls/wloc 响应,解析 Protobuf 数据并替换经纬度,同时提供 /wloc-settings/save 接口把坐标存入代理工具的持久化存储。
使用流程:
订阅对应模块并启用 MITM(信任 gs-loc.apple.com 和 gs-loc-cn.apple.com)。
打开在线选点页面(公共地址或自部署),在地图上选好位置 → 「储存到设备」。
打开地图 App 验证即可生效。
由于要信任MITM,因此推荐自部署 Worker,部署后用自己的 Worker 域名选点,数据更私密。
高版本 iOS 注意:部分较新系统( iOS 26+ )在切换定位后可能需要重启设备清除 locationd 缓存,飞行模式或开关定位服务往往无效。
恢复真实定位:关闭模块或清除持久化数据(wloc_settings),脚本会自动进入透传模式。
FFF686868/proxypin-wloc-spoofer —— ProxyPin 用户的轻量选择
项目地址:https://github.com/FFF686868/proxypin-wloc-spoofer
核心特点:
- 专为 ProxyPin 设计的本地 JavaScript 脚本。
- 直接修改 WLOC 二进制响应中的经纬度和精度字段。
- 支持 gzip 压缩响应,保留原始请求体。
- 输出调试响应头(X-WLOC-ProxyPin、X-WLOC-Patched-Locations 等),方便排查问题。
对已经在用 ProxyPin的用户,这个脚本是目前最直接的解决方案。