mekos2772/ios-location-spoofer · 上手攻略

  • 仓库:mekos2772/ios-location-spoofer
  • 链接:https://github.com/mekos2772/ios-location-spoofer
  • 分类:iOS 工具 · 定位欺骗
  • 作者:Tom
  • 更新:2026-08-11

是什么

iOS Location Spoofer 是一个免越狱、在代理软件内通过 MITM(中间人攻击)劫持并篡改 Apple 定位服务的 iOS 定位欺骗工具。它将原始 Go 编写的独立 App 核心逻辑移植为 JavaScript,封装为 Shadowrocket / Surge / Loon / Quantumult X / Stash 五个主流代理平台的模块文件,导入即用,无需编译、无需开发者账号。

原始项目来自 acheong08/ios-location-spoofer,本仓库在此基础上新增:蜂窝基站坐标改写(CellTower fields 22/24)、多响应格式自动兼容(ARPC / synthetic / marker / bare)、运动状态伪造(motionActivityType / motionActivityConfidence)。

解决什么问题

iPhone 通过读取附近 Wi-Fi BSSID 列表和蜂窝基站编号,向 Apple 定位服务查询这些设备的坐标,Apple 返回坐标清单后 iOS 自动算出自己在哪里。这套工具在 Apple 回传坐标的路上做拦截,把坐标全部改成你指定的值,从而让 iPhone "认为"自己在世界任何角落。

典型使用场景: - 测试需要特定位置的应用(如外卖、打车、旅行 App) - 玩需要特定 GPS 的游戏 - 保护隐私,不想暴露真实位置

快速安装

前置条件

  1. iOS 15+(各代理软件要求略有不同)
  2. 已安装以下任一代理 App:Shadowrocket、Surge、Loon、Quantumult X、Stash
  3. 该代理 App 已开启 HTTPS 解密 / MITM 开关

安装步骤

第一步:安装并信任 CA 证书

  1. 打开代理 App,开启 HTTPS 解密(MITM)
  2. 在 Safari 访问代理 App 提示的 CA 证书下载页面
  3. iOS 设置 → 通用 → VPN 与设备管理 → 安装证书
  4. 设置 → 通用 → 关于本机 → 证书信任设置 → 对代理 CA 开启「完全信任」

第二步:导入模块文件

根据你的代理 App 选择对应文件:

代理 App 模块文件 导入方式 实测状态
Shadowrocket ios-location-spoofer.sgmodule 配置 → 右上角 + ✅ 通过
Surge ios-location-spoofer-surge.sgmodule 首页 → 模块 → 安装新模块 ✅ 通过
Loon ios-location-spoofer.lnplugin 设置 → 插件 → 添加插件 ✅ 通过
Quantumult X ios-location-spoofer.snippet 设置 → 重写 → 添加 🟡 待测
Stash ios-location-spoofer.stoverride 覆写 → 安装覆写 ✅ 通过

第三步:配置目标坐标

默认坐标为 Apple Park(37.3349, -122.00902)。

在模块参数中修改(以 Shadowrocket/Surge 为例):

latitude=39.9042&longitude=116.4074

Loon 插件支持直接在 UI 填入经纬度或地址,地址由每 15 分钟的定时任务联网解析并缓存。

第四步:生效

  1. 断开并重新连接 VPN
  2. 开关一次定位服务(设置 → 隐私与安全性 → 定位服务 → 关闭再打开)
  3. 打开 Apple 地图验证是否到目标位置

核心用法

最小可跑命令(location-picker 自托管地图选点)

# 安装 Node.js 22+,克隆仓库
git clone https://github.com/mekos2772/ios-location-spoofer.git
cd ios-location-spoofer/location-picker

# 生成访问令牌
TOKEN=$(openssl rand -hex 24)

# 启动服务(HTTP,最简流程)
TOKEN=$TOKEN PORT=8080 node server.js

# 启动服务(HTTPS,复用 acme.sh 证书)
TOKEN=$TOKEN PORT=8443 \
  CERT=/root/cert/example.com/fullchain.pem \
  KEY=/root/cert/example.com/privkey.pem \
  node server.js

# Docker 启动
cd ios-location-spoofer/location-picker
echo "TOKEN=$(openssl rand -hex 24)" > .env
docker compose up -d

启动后访问 http://localhost:8080/loc.json?token=你的TOKEN,可看到当前坐标文件。Loon 可通过 configUrl 方式远程读取,Shadowrocket 模块 argument 末尾 configUrl 里的 token 必须与服务端 TOKEN 一致。

核心模块参数

参数 默认值 说明
latitude 37.3349 目标纬度
longitude -122.00902 目标经度
address (空) 地址搜索(Loon 插件,联网解析,优先于手动经纬度)
horizontalAccuracy 39 水平精度(米)
verticalAccuracy 1000 垂直精度(米)
altitude 530 海拔(米)
failOpen true 出错时放行原数据
debug false 调试日志

典型适用场景

  • 应用测试:需要特定城市/坐标测试 LBS 功能(外卖、打车、社交)
  • 游戏辅助:需要特定位置的游戏(如宝可梦/ar 游戏)
  • 隐私保护:出门时不想暴露真实家庭/公司位置
  • 开发调试:测试 iOS 应用在不同地区的行为差异

坑与注意

⚠️ MITM failed 处理:Request List 显示 MITM failed 通常是证书信任状态或 hostname 匹配问题,不是脚本改写失败。必须确认: - iOS 在「证书信任设置」中已对代理 CA 开启完全信任 - 失败请求的 Host 必须在模块 [MITM] hostname 中(项目已包含 gs-loc.apple.com、gsp-ssl.ls.apple.com 等主要域名) - 若出现其他 /clls/wloc Host,请在 Issue 贴出完整 Host 和路径,不要用过宽通配符

⚠️ 不要用 *.apple.com 等过宽通配:会导致其他 Apple 请求被 MITM,可能引发 iCloud 等服务异常。

⚠️ QUIC/HTTP3 问题:部分代理 App 的 QUIC/HTTP3 选项可能导致 MITM 失败,尝试关闭后再重试。

⚠️ Quantumult X 尚未实测:该平台的 snippet 文件由社区贡献,实测结果未知,欢迎在 Issue 区反馈。

⚠️ TOKEN 安全:location-picker 服务不设 TOKEN 时会直接退出,部署时务必设置并妥善保管,不要写在命令行历史里,推荐用 systemd Environment= 或 .env + direnv 管理。

⚠️ iOS 系统限制:部分 App 使用系统级定位 API(如 CLLocationManager),可能不完全受 MITM 改写影响。

与同类对比

方案 是否越狱 平台 精度 复杂度
本工具(MITM 代理) 否 iOS 全系列 依赖 horizontalAccuracy 参数 低(导入模块即可)
原始 acheong08 Go App 否 iOS(独立 App) 高 中(需自建 VPN)
虚拟定位 App(如 iTools) 否 iOS 中 低
越狱插件 是 iOS 高 高(需越狱)
Android 虚假定位 否 Android 高 低

本工具的优势:免越狱、多平台支持(5 个代理 App)、无独立 App 暴露风险、模块化配置灵活。

劣势:依赖代理 App 的 MITM 功能,需要安装并信任 CA 证书,部分全系统级定位 API 可能无法欺骗。

一句话推荐结论

免越狱 iOS GPS 欺骗最简方案——只要你的代理 App 支持 MITM,5 分钟内把 iPhone 定位到世界任何角落。 适合开发者测试、LBS 游戏和隐私保护场景,Quantumult X 用户建议先确认实测结果再上生产。


原始 commit:https://github.com/mekos2772/ios-location-spoofer/commit/main