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.comgsp-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