iPhone免越狱修改定位教程:Shadowrocket(小火箭)+WLOC模块
本教程基于开源项目:Yu9191/wloc
支持使用Shadowrocket(小火箭)修改Apple网络定位服务返回的坐标。
无需越狱、无需电脑、无需开发者账号。
一、先说明原理和限制
在高版本iPhone IOS系统中除了使用GPS,还会通过附近的WiFi和基站向Apple网络定位服务查询当前位置。只靠爱思助手改定位就拉不起需要定位的Wi-Fi calling了
WLOC模块会通过Shadowrocket拦截Apple网络定位服务的响应,并将其中的坐标替换为用户设置的位置。
简单理解:
text
iPhone请求网络定位
↓
Apple返回当前位置
↓
Shadowrocket模块拦截响应
↓
将坐标替换为目标位置
↓
系统读取修改后的坐标
↓
正确符合运营商要求
↓
成功拉起WI-FI calling
需要注意:
- 本项目修改的是Apple的网络定位(WiFi/基站定位);
- 它不是直接修改GPS硬件数据;
- 在室内、GPS信号较弱、主要依赖WiFi定位时效果最好;
- 在室外GPS信号很强时,系统或部分App可能重新使用真实GPS坐标;
- 不保证所有App都能长期稳定使用修改后的坐标;
- iOS高版本存在较强的定位缓存,切换坐标后可能需要重启设备。
二、准备工作
开始前需要:
- 一台iPhone;
- 已安装Shadowrocket(小火箭);
- 可以正常联网;
- Shadowrocket中存在一条可用英国代理;
- 系统已允许Shadowrocket创建VPN连接。
项目地址:
https://github.com/Yu9191/wloc
Shadowrocket模块地址:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.module
三、导入WLOC模块
打开Shadowrocket,依次进入:
text
配置 → 模块 → 右上角“+” → 来自URL
粘贴以下模块地址:
text
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.module
下载并保存。
返回模块列表,找到:
text
Apple WLOC 定位修改
确认模块已经启用,右侧应显示启用标记。
如果导入后找不到模块,请确认链接完整,并检查Shadowrocket是否能够正常访问GitHub Raw地址。
四、开启HTTPS解密
WLOC模块需要拦截Apple定位服务器的HTTPS请求,因此必须开启Shadowrocket的HTTPS解密功能。
不同版本Shadowrocket的入口可能不同。
新版常见入口
text
Shadowrocket → 配置 → 当前正在使用的配置文件 → 右侧“ⓘ” → HTTPS解密
部分旧版入口
text
Shadowrocket → 设置 → HTTPS解密
找到后打开:
text
HTTPS解密
如果在“设置”页面找不到HTTPS解密,请返回“配置”页面,点击当前配置文件右侧的“ⓘ”进入。
检查MITM域名
导入模块后,以下两个域名通常会自动加入HTTPS解密列表:
text
gs-loc.apple.com
gs-loc-cn.apple.com
如果没有自动出现,请手动添加。
可以使用逗号分隔:
text
gs-loc.apple.com,gs-loc-cn.apple.com
保存后,确认HTTPS解密开关仍然处于开启状态。
五、生成、安装并信任证书
这是整个教程中最重要的一步。
只开启HTTPS解密开关还不够,还需要安装并信任Shadowrocket的CA证书。
1. 生成证书
在Shadowrocket的HTTPS解密页面中点击:
text
证书 → 生成新的CA证书 → 安装证书
系统会提示已经下载描述文件。
2. 安装描述文件
打开iPhone系统设置,依次进入:
text
设置 → 通用 → VPN与设备管理
找到刚刚下载的Shadowrocket证书描述文件,然后点击:
text
安装
按照提示输入锁屏密码并完成安装。
3. 完全信任证书
安装描述文件后,还需要手动开启完全信任。
依次进入:
text
设置 → 通用 → 关于本机 → 证书信任设置
找到Shadowrocket生成的证书,打开对应的信任开关。
系统弹出警告后,确认启用完全信任。
很多人只安装了描述文件,却没有在“证书信任设置”中开启完全信任,最终导致模块没有效果。
六、开启Shadowrocket代理
回到Shadowrocket首页:
- 选择一条可以正常联网的代理;
- 打开顶部总开关;
- 第一次使用时允许Shadowrocket添加VPN配置;
- 确认页面显示“已连接”;
- 确认状态栏或控制中心出现VPN标志。
后续设置定位时,需要同时满足:
- Shadowrocket代理已连接;
- WLOC模块已启用;
- HTTPS解密已开启;
- CA证书已经安装并完全信任;
gs-loc.apple.com和gs-loc-cn.apple.com已加入解密域名。
七、设置目标位置
项目目前提供两种设置方式:
- 使用快捷指令设置,操作最方便;
- 使用在线选点页面设置。
推荐优先使用快捷指令。
方法一:使用快捷指令设置位置
安装“设置地理位置”快捷指令
打开:
https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7
添加快捷指令:
text
wloc 设置地理位置
安装“恢复真实位置”快捷指令
打开:
https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f
添加快捷指令:
text
wloc 清理恢复位置
在苹果地图中选择位置
- 打开苹果地图;
- 搜索需要修改到的地点;
- 长按地图上的目标位置;
- 打开该地点的信息卡片;
- 点击“共享”;
- 在共享菜单中选择“wloc 设置地理位置”;
- 等待快捷指令运行完成。
操作路径:
text
苹果地图 → 长按目标位置 → 共享 → wloc 设置地理位置
在高德地图中选择位置
- 打开高德地图;
- 搜索或者长按目标位置 (CTExcel就英国);
- 点击“分享”;
- 点击“更多”;
- 选择“wloc 设置地理位置”;
- 等待快捷指令运行完成。
操作路径:
text
高德地图 → 选择位置 → 分享 → 更多 → wloc 设置地理位置
项目会自动解析高德地图分享短链,并将中国大陆常见的GCJ-02坐标转换为WGS84坐标。
如果共享菜单里没有快捷指令,可以滑到最下面点击“编辑操作”,将“wloc 设置地理位置”添加到共享菜单。
方法二:使用在线选点页面
保持Shadowrocket代理、模块和HTTPS解密处于开启状态,然后使用Safari打开:
https://wloc-pages.pages.dev/
也可以使用项目提供的Worker页面:
https://wloc-spoofer.wloc.workers.dev/
打开页面后:
- 在地图上选择位置;
- 或者搜索地点;
- 或者粘贴地图分享链接;
- 确认经纬度;
- 点击“储存到设备”。
这里的“储存到设备”不是将数据上传到iCloud,而是通过模块将目标坐标写入Shadowrocket的持久化存储。
页面还支持收藏多个位置,方便以后快速切换。
在线选点页面必须在Shadowrocket代理已经打开的情况下使用,并且Safari流量需要经过Shadowrocket,否则储存请求不会被模块拦截。
八、让新定位生效
设置坐标后,打开苹果地图观察当前位置。
如果没有立即改变,可以先尝试:
- 关闭地图App;
- 在后台任务列表中彻底划掉地图;
- 关闭再打开系统定位服务;
- 重新打开地图;
- 等待系统再次触发网络定位请求。
iOS 15~18
iOS 15~18通常不需要重启,重新触发定位后即可生效。(如果只是拉Wi-Fi calling甚至都不需要你改定位 关闭手机定位后重启即可)
如果仍然显示真实位置,可以:
- 关闭定位服务;
- 确认Shadowrocket已经连接;
- 确认模块和HTTPS解密已经开启;
- 重新打开定位服务;
- 打开地图验证。
iOS 26及更高版本
根据项目说明,Apple从iOS 26开始加强了locationd的定位缓存。
即使WLOC脚本已经成功修改服务器响应,系统仍可能继续读取内存中缓存的旧坐标。
这种情况下,单独开关飞行模式或定位服务可能不足以清除缓存,建议直接重启设备。
高版本推荐流程一
text
- 先通过快捷指令或选点页面设置目标位置
- 打开飞行模式
- 关闭系统定位服务
- 重启iPhone
- 开机后关闭飞行模式
- 暂时保持WiFi关闭,使用蜂窝网络联网
- 打开Shadowrocket并确认VPN已经连接
- 打开系统定位服务
- 打开苹果地图验证
系统定位服务入口:
text
设置 → 隐私与安全性 → 定位服务
高版本推荐流程二
text
- 关闭系统定位服务
- 保持Shadowrocket代理、模块及HTTPS解密开启
- 设置并储存目标位置
- 重新打开系统定位服务
- 出现位置权限提示时,选择“下次询问或在我共享时”
- 打开苹果地图验证
如果方法二过一段时间后恢复真实位置,通常是系统重新使用了GPS结果或定位缓存。可以改用方法一,并在GPS信号较弱的室内环境测试。
九、怎么确认是否成功
建议先使用苹果地图验证,不要一开始就用第三方App判断。
成功时通常会看到:
- 苹果地图当前位置移动到设置的目标地点;
- 重新打开地图后仍然显示目标位置;
- Shadowrocket日志出现WLOC脚本执行或坐标修改记录。
如果地图一直转圈、完全不显示位置,通常不是“修改成功”,而是HTTPS解密、证书或网络配置存在问题。
十、恢复真实定位
方法一:使用恢复快捷指令
运行:
text
wloc 清理恢复位置
快捷指令地址:
https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f
该快捷指令会清理WLOC模块保存的目标坐标,使脚本进入透传模式。
方法二:关闭WLOC模块
进入:
text
Shadowrocket → 配置 → 模块
关闭:
text
Apple WLOC 定位修改
关闭模块后,Shadowrocket不再修改Apple网络定位响应,系统会恢复使用真实定位。
方法三:删除WLOC模块
如果以后不再使用,可以直接删除模块。
模块删除后还可以按需删除Shadowrocket的HTTPS解密证书:
text
设置 → 通用 → VPN与设备管理
找到Shadowrocket证书描述文件并移除。
高版本恢复定位注意事项
iOS 26及更高版本可能继续使用缓存中的修改坐标。
清理坐标或关闭模块后,建议:
text
- 关闭定位服务
- 重启iPhone
- 确认WLOC模块已经关闭或坐标已经清理
- 开机后重新打开定位服务
- 打开苹果地图验证真实位置
十一、常见问题
1. Shadowrocket里找不到HTTPS解密
不要在模块页面里寻找。
优先尝试:
text
配置 → 当前使用的配置文件 → 右侧“ⓘ” → HTTPS解密
不同版本入口可能略有区别。
2. 导入模块后没有效果
依次检查:
- Shadowrocket总开关是否已经打开;
- VPN图标是否出现;
- 当前配置文件是否就是导入模块的配置;
- WLOC模块是否启用;
- HTTPS解密是否开启;
- CA证书是否已经安装;
- 是否已经在“证书信任设置”中开启完全信任;
- 解密域名是否包含
gs-loc.apple.com;
- 解密域名是否包含
gs-loc-cn.apple.com;
- 设置坐标时Safari是否经过Shadowrocket;
- 高版本iOS是否已经重启。
3. 地图一直转圈,不显示任何位置
这种情况一般说明定位请求被拦截了,但响应没有被正常解析。
建议:
- 临时关闭WLOC模块;
- 检查地图是否恢复正常定位;
- 重新导入最新版模块;
- 重新生成并安装证书;
- 再次确认完全信任证书;
- 检查是否同时启用了多个修改同一域名的模块;
- 查看Shadowrocket日志中是否存在脚本报错。
不要同时使用多个拦截gs-loc.apple.com的定位模块,否则可能发生冲突。
4. 修改成功后又跳回真实位置
常见原因包括:
- 当前环境GPS信号较强;
- 系统重新使用了真实GPS坐标;
locationd仍在复用缓存;
- 第三方App主动刷新了其他定位来源;
- Shadowrocket代理中途断开;
- WLOC模块或HTTPS解密被关闭。
建议在室内测试,并使用高版本推荐流程重新设置。
5. 快捷指令运行了,但地图没有变化
快捷指令的作用是向WLOC模块写入目标坐标,它本身不会直接修改系统定位。
必须同时满足:
text
代理已开启
+ 模块已启用
+ HTTPS解密已开启
+ 证书已完全信任
+ Apple定位域名已加入MITM
然后关闭并重新打开地图。高版本系统还需要重启设备。
6. 可以只关闭Shadowrocket恢复定位吗?
可以。
Shadowrocket停止运行后,模块不再修改新的网络定位响应。
但系统可能继续显示之前缓存的坐标。若关闭Shadowrocket后仍未恢复,请关闭定位服务并重启设备。
7. 为什么部分App不跟随修改?
该项目只修改Apple网络定位服务返回的数据,不是底层GPS模拟器。
部分App可能:
- 直接使用GPS硬件数据;
- 同时使用WiFi、基站、蓝牙和IP地址判断位置;
- 自己维护位置缓存;
- 对定位结果进行一致性检查。
因此,苹果地图生效不代表所有App都会得到相同效果。
十二、隐私及安全说明
Shadowrocket的HTTPS解密证书具备解密指定HTTPS流量的能力。
建议:
- 只使用自己生成的Shadowrocket证书;
- 不要安装陌生人提供的CA证书;
- 不要将证书私钥发送给其他人;
- MITM域名只保留项目需要的Apple定位域名;
- 不再使用时关闭HTTPS解密或删除证书。
WLOC模块实际需要拦截的域名为:
text
gs-loc.apple.com
gs-loc-cn.apple.com
十三、项目原理
模块主要包含两条脚本规则:
text
wloc.js
负责拦截Apple的/clls/wloc响应,解析其中的Protobuf数据并替换坐标。
text
wloc-settings.js
负责拦截/wloc-settings/save请求,将选定坐标写入Shadowrocket的持久化存储。
完整流程:
text
地图选择位置
↓
快捷指令或在线页面提交经纬度
↓
wloc-settings.js保存坐标
↓
iPhone请求Apple网络定位
↓
wloc.js读取已保存坐标
↓
替换Apple返回的网络定位坐标
↓
系统获得修改后的定位
十四、相关链接
项目主页:
https://github.com/Yu9191/wloc
Shadowrocket模块:
https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.module
在线选点页面:
https://wloc-pages.pages.dev/
设置地理位置快捷指令:
https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7
清理恢复位置快捷指令:
https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f
十五、特别提醒
- 该方法修改的是网络定位,不是GPS硬件定位;
- 室内或GPS信号较弱时成功率通常更高;
- iOS高版本切换或恢复位置后建议重启;
- 首次测试建议使用苹果地图;
- 地图一直转圈不代表修改成功,应检查证书和HTTPS解密;
- 系统、Shadowrocket及项目更新后,实际界面和效果可能发生变化;
- 请勿使用该功能伪造考勤、规避平台规则或实施欺诈行为。
免责声明
本文仅用于介绍开源项目的配置方法和技术原理。使用前请自行了解相关App、平台及服务的使用规则。因配置错误、系统更新、账号风控、定位异常或其他原因产生的影响,由使用者自行承担。
项目代码及具体实现以原仓库最新版本为准:
https://github.com/Yu9191/wloc
改完定位后就可以结合CMlink/CTExcel uk终极激活教程改完定位后的教程继续食用了
其他需要定位才能拉起Wi-Fi calling的运营商也支持上述操作