Yu9191/wloc · 上手攻略
- 仓库:Yu9191/wloc
- 链接:https://github.com/Yu9191/wloc
- 分类:tool · ios · location
- 作者:Tom
- 更新:2026-07-07
它是什么
wloc 是一个修改 iOS 网络定位服务(WiFi/基站定位,Apple 内部称为 WLOC)的工具。它能让你在 iPhone 上"虚拟定位"——不是伪造 GPS,而是让 Apple 的网络定位服务返回你指定的坐标,从而影响依赖网络定位的 App(如地图、外卖、社交 App)。
支持 Surge、Quantumult X、Loon、Stash、Shadowrocket 等主流代理工具,以及 iOS 快捷指令一键切换/恢复。
⚠️ 重要:它只修改网络定位(WiFi/基站),不影响 GPS 硬件定位;只修改「使用网络定位」的 App,不改真正的 GPS。
解决什么问题
- 需要测试特定地点的 App 行为(外卖 App 定位推荐、地图 POI 等)
- 室内场景 GPS 信号弱,依赖网络定位,但想用一个特定位置
- 开发者测试地理位置相关功能
- 需要临时"换一个城市"而不实际移动
不是:不是游戏外挂、不是用于欺骗网约车等涉及真实安全的场景的工具。
快速安装
方式一:快捷指令(最方便,推荐)
- 在 iOS 设备上打开快捷指令 App
- 点击「添加快捷指令」,粘贴以下任一链接: - 设置地理位置:https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7 - 清除/恢复真实定位:https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f
安装后,选点流程: 1. 在地图 App(苹果地图或高德地图)中长按选点 2. 点击「分享」→「wloc 设置地理位置」→ 自动完成坐标转换并储存
方式二:代理工具订阅模块
根据你用的代理工具,订阅对应模块:
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
订阅后在代理工具中启用模块,并信任 gs-loc.apple.com 和 gs-loc-cn.apple.com 的 MITM 证书。
核心用法
快捷指令方式(最简单)
苹果地图选点 → 共享 → 「wloc 设置地理位置」 → 完成
高德地图:选点 → 分享 → 更多 → 「wloc 设置地理位置」
高德短链自动解析(GCJ-02→WGS84 坐标换算),苹果地图链接同样处理,无需手动算坐标。
代理工具方式(在线选点页面)
- 订阅并启用模块(含 MITM)
- 打开在线选点页面:
https://wloc-spoofer.wloc.workers.dev/(公共 Worker,有请求上限) - 在地图选点/搜索地名/粘贴地图链接
- 点击「储存到设备」
- 下次 Apple 定位触发时自动生效
自部署 Worker(推荐长期用)
公共 Worker 有日请求限制,建议自己部署:
一键部署: 点击:
https://deploy.workers.cloudflare.com/?url=https://github.com/Yu9191/wloc/tree/main/worker
手动部署:
git clone https://github.com/Yu9191/wloc.git
cd wloc/worker
npm install
npx wrangler login
npm run deploy
部署后得到 Worker 地址(如 https://wloc-spoofer.<你的子域名>.workers.dev),替换快捷指令里的 wloc-spoofer.wloc.workers.dev 即可。
恢复真实定位
方法一:关闭或删除模块(推荐) 关闭模块后脚本不再拦截 WLOC 请求,系统自动恢复真实定位。iOS 26+ 需重启设备清除定位缓存。
方法二:清除持久化数据(透传模式) 在代理工具中运行清除命令:
Surge:
$persistentStore.write(null, "wloc_settings")
Quantumult X:
$prefs.removeValueForKey("wloc_settings")
Loon:
$persistentStore.write(null, "wloc_settings")
清除后重启设备即可恢复真实定位,无需关闭模块。
工作原理
选点页面 → fetch gs-loc.apple.com/wloc-settings/save?lon=x&lat=y
→ 代理模块拦截 → wloc-settings.js 写入 $persistentStore
→ 下次 WLOC 触发 → wloc.js 读取坐标 → patch protobuf 响应
模块包含两条规则:
- wloc.js:拦截 /clls/wloc 响应,解析 protobuf 并替换坐标
- wloc-settings.js:拦截 /wloc-settings/save 请求,写入持久化存储
隐私说明:选点页面的 /api/parse 纯转发解析,不写任何存储、不记日志、不缓存,处理完即丢。
典型适用场景
- App 测试:测试特定城市的地图/外卖/社交推荐逻辑
- 室内定位开发:WiFi/基站定位开发调试
- 地理位置隔离测试:验证 App 是否正确识别不同地区内容
- 隐私替代:需要给某个 App 提供一个虚拟位置时,用网络定位代替 GPS
坑与注意
- iOS 26+ 定位缓存:iOS 26 开始
locationd会缓存真实定位结果,长时间复用。切换坐标后必须重启设备才能清除缓存(飞行模式开关、关闭定位服务无效)。 - 推荐成功率最高流程:选好位置 → 开飞行模式 → 关闭定位服务 → 重启设备 → 关闭飞行模式(WiFi 也关)→ 连接代理 → 打开定位服务 → 验证 - GPS 信号强时会忽略网络定位:在室外空旷处 GPS 信号好,系统可能直接用 GPS 坐标,不走网络定位通道。
- MITM 证书必须信任:
gs-loc.apple.com和gs-loc-cn.apple.com的证书必须导入并信任,否则模块无法解密和修改 WLOC 响应。 - 只修改网络定位:GPS 硬件定位不受影响,需要真实 GPS 坐标的 App(如导航)仍会用真实位置。
- 代理工具必须运行:模块依赖代理工具的脚本环境,关闭代理后系统自动恢复真实定位。
- 快捷指令前提:快捷指令方案需要代理已开 + 模块已启用 + 证书已信任。
- 国内坐标换算:高德和苹果地图在中国大陆返回的是 GCJ-02 偏移坐标,worker 会自动做 GCJ-02→WGS84 换算;若用境外坐标则原样返回。
与同类对比
| 工具 | 修改方式 | 依赖 | 稳定性 | 维护状态 |
|---|---|---|---|---|
| wloc | 网络定位(WiFi/基站) | 代理工具 | 高(iOS 26 特殊处理) | 活跃 |
| Location Faker(iOS App) | GPS 硬件伪造 | 越狱/付费 App | 中 | 商业化 |
| iTools | GPS 硬件 | 电脑配合 | 中 | 商业化 |
| Surge MITM 方案 | 自写脚本 | 需自己写模块 | 低 | DIY |
wloc 的优势是不改 GPS 硬件,只改网络定位,安全性更高(不算真正的位置欺骗),且完全免费开源。
一句话推荐
如果你用 Surge/QuanX/Loon 等代理工具,想在不改变真实 GPS 的前提下让 App 收到特定网络定位,wloc 是目前最干净、最活跃的开源方案——快捷指令一键切换,用完即恢复,体验很顺。