搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

通过代理模块拦截 Apple WLOC 响应,修改 iOS 的 WiFi 与基站定位坐标。

10,635
2,628
JavaScript
AGPL-3.0
创建于 4 个月前

项目介绍

这个项目改的是 Apple 网络定位服务(gs-loc.apple.com / gs-loc-cn.apple.com)返回的坐标,让 iOS 的 WiFi 和基站定位落到指定位置。它本身不做界面,而是以 Surge、Quantumult X、Loon、Stash、Shadowrocket 的模块形式存在:在网页地图上选好点,模块会在后续 WLOC 请求里改写 protobuf 响应。GPS 硬件定位不受影响,因此室内、以 WiFi 定位为主的场景效果最明显。

模块包含两条脚本规则,一条拦截 /clls/wloc 响应并替换坐标,另一条保存选点页面提交的坐标到持久化存储(工作原理)。坐标统一以 WGS84 为准,苹果地图、Google、高德、百度的链接会按来源和地区换算:中国大陆的 GCJ-02 需要偏移,港澳台的苹果和 Google 链接保持 WGS84(坐标系说明)。

快速使用

前提:所用代理工具已开启 MITM,并信任了 gs-loc.apple.com 和 gs-loc-cn.apple.com 的证书;使用选点页面时 Safari 要走代理。

  1. 按工具订阅模块:Surge、Quantumult X、Loon、Stash、Shadowrocket。Egern 可直接用 Surge 模块;Stash 直接订阅 .stoverride,不需要经过 Script Hub 转换。
  2. 打开在线选点页面(建议添加到主屏幕),在地图上选点、搜索地名或粘贴地图链接。
  3. 点击「储存到设备」。
  4. 触发一次定位;iOS 15~18 通常无需重启即可生效,iOS 26+ 因为 locationd 缓存通常要重启设备。

模块已启用时,用快捷指令切换更快:在地图 App 长按选点后共享,运行 wloc 设置地理位置;恢复真实位置运行 wloc 清理恢复位置。高德地图的入口是选点后分享 → 更多。快捷指令的链接解析走一个 Cloudflare Worker,负责跟随跳转并把 GCJ-02 转成 WGS84,声明不写存储、不记日志、不缓存;源码在 worker/src/parse.js,也可以自行部署。

模块参数包括 longitude、latitude、accuracy(默认 25 米)、randomRadius(默认 0,开启后每次定位在半径内随机偏移)和 logLevel。优先级为在线选点储存的坐标高于模块参数,模块参数高于默认值。

使用约束

  • 必须能 MITM 拦截 Apple 的 WLOC 域名,证书不受信任就不会生效。
  • 2026-11-04 起,多个 iOS 26 和 iOS 18 版本的用户反馈拦截失效并提示证书无效,部分设备在重启后出现,原因尚未确认(跟踪 Issue)。
  • iOS 27 beta 6 起,Apple 在 locationd 的 TLS 校验层拒绝非 Apple CA 签发的证书,软路由、网关透明代理都绕不过去,这些版本无法使用(测试记录)。
  • 只改网络定位,GPS 信号强时系统可能忽略修改后的结果。
  • iOS 26+ 有定位缓存,切换坐标后可能要重启才能看到变化;而 2026-11-04 之后的版本里重启本身存在上述失效风险。
  • 恢复真实定位可以关闭或删除模块,也可以清除持久化键 wloc_settings 让脚本进入透传模式;如果改过模块参数里的经纬度,需要先改回默认值才会透传。
  • 公共选点页面有请求上限,建议自部署 Worker。一键部署按钮只支持 Workers;Pages 要在 worker/ 目录执行 npm run pages:deploy,直接 wrangler pages deploy dist 会丢掉 compatibility 配置。
  • 采用 AGPL-3.0,未经授权不得用于商业产品或上架应用商店。

HotRepo 点评

2026-11-06 该项目在 JavaScript 日榜排到第 5,当天新增 127 Star,总 Star 10,611、Fork 2,627。README 的维护节奏与这个曝光度相称:对 2026-11-04 的证书失效和 iOS 27 的 TLS 限制都给出了带日期的说明,并链到对应版本的 Issue;更新记录里也列明了百度地图支持、GCJ 换算修复、随机扰动和 Stash 响应格式修复等外部贡献者。真正影响选择的是版本覆盖:同一条拦截路径在 iOS 18、iOS 26 和 iOS 27 beta 6+ 上都被记录为失效或不可靠,能否使用很大程度上取决于设备的系统版本。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。