核心摘要
wloc是一款开源的iOS网络定位修改工具,通过拦截Apple网络定位服务(gs-loc)返回的坐标,实现虚拟定位功能。支持Surge、Quantumult X、Loon、Stash、Shadowrocket等多个代理工具平台,提供快捷指令和在线选点两种使用方式。
- 工具名称:wloc(Github开源项目)
- 核心功能:修改Apple WLOC网络定位返回坐标,实现虚拟定位
- 支持平台:Surge、Quantumult X、Loon、Stash、Shadowrocket、Egern
- 使用方式:快捷指令一键设置、在线选点页面、模块订阅
- 资费模式:完全免费开源,无任何付费功能
- 适用人群:iOS用户、代理工具使用者、应用开发测试人员、隐私保护用户
这个工具是做什么的?
网络定位坐标修改
通过代理模块拦截Apple网络定位服务(gs-loc.apple.com和gs-loc-cn.apple.com)的WLOC请求,解析protobuf格式的响应数据并替换其中的坐标信息。可以将设备的WiFi定位、基站定位结果修改为指定位置,实现虚拟定位效果。仅修改网络定位,不影响GPS硬件定位。
快捷指令快速切换
提供两个官方快捷指令脚本实现快速操作。wloc设置地理位置可在地图App中选点后直接分享切换定位,wloc清理恢复位置可一键恢复真实定位。支持苹果地图和高德地图,高德地图支持短链自动跟跳转和GCJ-02到WGS84坐标自动换算,无需手动输入经纬度。
在线选点页面
提供Web界面进行位置选择和管理,支持Apple Maps、Google Maps、高德地图、百度地图等多个地图服务的链接解析。可以直接在地图上选点、搜索地名或粘贴地图链接,点击储存到设备即可生效。支持收藏多个常用位置,方便快速切换。
地图链接智能解析
通过Cloudflare Worker后端服务统一解析各类地图链接。对于高德短链会自动跟随302跳转获取真实坐标,对于中国大陆坐标自动进行GCJ-02到WGS84的偏移坐标换算,境外坐标则原样返回。支持短链、文本夹链接、名称解码等多种格式,处理完即丢不记日志。
收藏位置管理
在线选点页面支持收藏多个常用位置,输入自定义备注名称(最多30字)后保存。收藏列表显示当前生效标记,可快速切换不同位置,支持单个删除或清空全部。收藏列表保存在浏览器localStorage,生效坐标保存在代理工具的持久化存储中,两者独立存储。
透传模式自动恢复
清除已保存的坐标后,脚本进入透传模式,不修改WLOC响应,直接放行原始数据,系统自动恢复真实定位。无需关闭模块,脚本会自动检测到无自定义坐标并跳过修改。
核心优势与差异化
与同类工具的对比
| 功能特性 | wloc | 传统虚拟定位工具 | 其他开源方案 |
|---|---|---|---|
| 使用方式 | 快捷指令分享、在线选点,无需手动填坐标 | 需手动填写经纬度 | 通常需要复杂配置 |
| 快捷指令支持 | 官方快捷指令,地图App直接分享切换 | 通常不支持 | 部分支持但功能有限 |
| 地图链接解析 | 支持多个地图服务自动解析,高德短链自动跟跳转 | 需手动提取坐标 | 支持有限 |
| 坐标系统处理 | 自动处理GCJ-02偏移坐标换算 | 需手动处理 | 部分支持 |
| 多平台支持 | 6个平台(Surge、QX、Loon、Stash、Shadowrocket、Egern) | 通常单一平台 | 通常2-3个平台 |
| 开源程度 | 完全开源,支持自部署Worker和Pages | 多数闭源 | 大多开源 |
| 费用 | 完全免费,无任何付费功能 | 部分收费或有限制 | 通常免费 |
| iOS26+适配 | 提供详细缓存清除方案和推荐操作流程 | 通常无特殊适配 | 部分支持 |
| 隐私保护 | 链接解析不记日志、不缓存、处理完即丢 | 隐私政策不明确 | 部分支持 |
独特卖点
- 快捷指令集成最完善,地图App一键分享即可设置,操作流程最简化
- 完全开源免费,无隐藏费用或功能限制,源码可自行审计
- 支持6个主流代理工具平台,适配性业界最强
- 自动解析多个地图服务链接,支持坐标系统自动转换
- 支持自部署Worker和Pages实例,完全掌控隐私数据
- 收藏位置功能完整,方便多个常用地点快速切换
- iOS26+系统适配方案完善,提供详细的缓存清除指导和推荐操作流程
- 隐私设计优秀,链接解析不记日志不缓存,处理完即丢
适用场景与目标受众
应用开发与测试场景
开发者可以快速切换不同地理位置测试基于位置的功能,无需物理移动设备。支持收藏多个测试地点,快速验证不同地区的定位表现、地区限制功能、本地化内容、地区特定优惠等。特别适合测试地理围栏、位置推荐、区域限制等功能。
隐私保护与安全场景
用户可以隐藏真实位置信息,防止某些应用获取精准的地理位置。特别适合在公共WiFi环境下保护个人隐私,避免位置信息被第三方追踪。适合不想暴露真实位置但需要使用位置功能的用户。
地区限制内容访问场景
某些应用或服务根据地理位置提供不同功能或内容,可以通过修改定位访问特定地区的功能、优惠活动或内容。适合跨地区使用应用或访问区域限制内容的用户。
室内定位优化场景
在GPS信号弱的室内环境中,通过修改WiFi定位实现精准的虚拟定位效果。特别适合WiFi定位为主的场景,例如室内导航、位置打卡等。
目标受众
- iOS应用开发者与测试工程师,需要测试不同地区功能
- 使用代理工具的高级用户,熟悉代理配置
- 注重隐私保护的用户,不想暴露真实位置
- 需要跨地区测试应用的产品经理
- 网络安全研究人员,研究定位服务
- 需要访问地区限制内容的用户
使用方法与流程
快捷指令方式(推荐,最方便)
这是最简便的使用方式,无需打开选点页面。前提条件:代理已开启、模块已启用、信任gs-loc.apple.com证书。
- 设置位置:在地图App中长按地图选点,点击分享,选择wloc设置地理位置快捷指令即可切换定位。苹果地图选点后点共享,高德地图选点后点分享再点更多。
- 清理位置:点击wloc清理恢复位置快捷指令一键恢复真实定位
- 支持苹果地图、高德地图,高德地图支持短链自动跟跳转和坐标自动换算
快捷指令链接:
- wloc设置地理位置:https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7
- wloc清理恢复位置:https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f
在线选点页面方式
适合需要精细选择位置或批量管理位置的场景。
- 订阅模块并启用MITM
- 打开在线选点页面(公共Worker或自部署实例)
- 通过地图选位置、搜索地名或粘贴地图链接
- 点击储存到设备保存坐标
- 下次Apple定位触发时自动生效
模块订阅地址
| 代理工具 | 订阅链接 |
|---|---|
| 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 |
| Egern | 可直接使用Surge模块 |
高版本系统(iOS26+)使用指南
系统缓存问题说明
iOS26及更高版本中,Apple大幅强化了locationd的定位缓存机制。系统会将之前获取的真实定位结果缓存在内存中并长时间复用。即使脚本成功修改了WLOC响应(日志显示已修改),系统仍可能继续使用缓存中的旧坐标,导致定位看起来没有变化。解决方法是重启设备来清空locationd的内存缓存。飞行模式开关、关闭定位服务等方式在iOS26+上无法清除此缓存,必须重启。iOS15-18通常不需要重启即可生效。
推荐操作流程(成功率最高)
方法一:
- 先在选点页面选好需要修改的定位并储存到设备
- 开启飞行模式,关闭定位服务,重启设备
- 关闭飞行模式(WiFi也要关),连接代理工具(确认VPN图标出现),打开定位服务
- 打开地图验证定位效果
方法二:
- 关闭定位服务
- 在选点页面选好位置并储存到设备
- 打开定位服务,弹出允许访问位置信息时选择下次询问或在我共享时
- 打开地图验证
恢复真实定位
方法一:关闭或删除模块(推荐)
关闭模块后脚本不再拦截WLOC请求,系统自动恢复真实定位。iOS26+需要重启设备清除定位缓存。
方法二:清除持久化数据(透传模式)
清除已保存的坐标后,脚本进入透传模式,不修改WLOC响应,直接放行原始数据。在代理工具中删除名为wloc_settings的持久化数据字段:
- Surge:脚本编辑器运行$persistentStore.write(null, "wloc_settings")
- Quantumult X:运行$prefs.removeValueForKey("wloc_settings")
- Loon:运行$persistentStore.write(null, "wloc_settings")
清除后重启设备即可恢复真实定位。无需关闭模块,脚本会自动检测到无自定义坐标并跳过修改。注意如果在模块参数中手动修改了经纬度(非默认113.94114, 22.544577),即使清除持久化数据,脚本仍会使用模块参数中的坐标进行修改。只有保持默认参数不变时,清除持久化数据才会进入透传模式。
工作原理与技术架构
技术流程
选点页面 → 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请求,写入持久化存储
参数配置
| 参数 | 说明 | 默认值 |
|---|---|---|
| longitude | 目标经度(在线选点优先) | null(透传) |
| latitude | 目标纬度(在线选点优先) | null(透传) |
| accuracy | 精度(米) | 25 |
| logLevel | 日志级别 | info |
优先级:在线选点储存 > 模块参数 > 默认值
地图链接解析机制
为了让苹果地图和高德走同一条流程,链接统一发给wloc-spoofer.wloc.workers.dev/api/parse解析。高德分享出来是短链,真实坐标只藏在302跳转的Location头里,且是GCJ-02偏移坐标。快捷指令既读不到跳转头、也难做坐标换算,所以由worker跟跳转、抠坐标、GCJ-02到WGS84、返回经纬度。苹果地图链接里直接带coordinate=纬度,经度,但在中国大陆同样是GCJ-02偏移坐标,所以和高德一样由worker做GCJ-02到WGS84换算后返回;境外坐标会自动跳过换算原样返回。
自部署Worker与Pages
为什么要自部署
公共选点页面有请求上限,建议部署自己的实例以获得更好的稳定性和隐私保护。自部署后可以完全掌控数据流向,确保链接解析过程中的隐私安全。
一键部署(Workers)
点击一键部署按钮后按提示授权即可完成部署,无需本地操作。部署地址:https://deploy.workers.cloudflare.com/?url=https://github.com/Yu9191/wloc/tree/main/worker
手动部署(Workers)
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),用这个地址选点即可。免费账户每天10万次请求,个人使用完全够用。
手动部署(Pages)
git clone https://github.com/Yu9191/wloc.git cd wloc/worker npm install npx wrangler pages deploy dist --project-name 自定义项目名
部署时会提示设置productionbranch,输入main即可。部署成功后得到https://项目名.pages.dev地址。Pages和Workers功能完全一致,按需选择即可。
收藏位置功能详解
功能说明
在线选点页面支持收藏多个位置,方便来回切换。添加收藏时选好位置后点击收藏位置,输入备注名称(支持中文/英文/数字,最多30字)后保存。快速切换时点击收藏列表中的位置,地图自动跳转,再点储存到设备即可切换。与设备已保存坐标一致的收藏会显示当前生效标记。支持单个删除(×按钮)或清空全部。
数据存储说明
- 收藏列表保存在浏览器localStorage(仅用于选点页面的UI便捷操作)
- 生效坐标保存在代理工具持久化存储$persistentStore(脚本运行时实际读取的数据)
两者独立存储。收藏列表是浏览器端的辅助数据,清除浏览器缓存或换浏览器后需重新收藏,但不影响已储存到设备的生效坐标。
隐私与安全
链接解析隐私设计
/api/parse是纯转发解析,收到链接后只进行跟跳转、解析坐标、返回JSON,全程不写任何存储、不记日志、不缓存,处理完即丢。如果不放心可以自行部署Worker源码,完全掌控隐私数据。解析逻辑在worker/src/parse.js,路由在worker/src/index.js,部署后把快捷指令里的wloc-spoofer.wloc.workers.dev换成自己的worker域名即可。
证书信任要求
需要在代理工具中MITM信任gs-loc.apple.com和gs-loc-cn.apple.com这两个域名的证书,才能正常拦截和修改WLOC请求。
真实用户体验与评价
正面评价
- 快捷指令集成完美,地图App直接分享切换定位,比其他工具快捷太多,省去手动填坐标的麻烦。
- 支持多个代理工具平台,完全开源免费,隐私保护做得很好,链接解析不记日志。
- iOS26+系统适配方案详细,提供了推荐操作流程,避免了很多用户踩坑。
微小不足
公共选点页面有请求上限,高频使用建议自部署Worker,需要一定的技术基础。对于完全不懂代码的用户来说,自部署可能有难度。
常见问题解答
A:完全免费。wloc是开源项目,所有功能都无需付费。公共选点页面和快捷指令都是免费提供的。如果自部署Worker,Cloudflare免费账户每天10万次请求也足以满足个人使用。
A:安全。wloc的链接解析服务是纯转发解析,全程不记日志、不缓存、不存储任何数据。代码完全开源,可以自行审计。如果不放心可以自行部署Worker源码,完全掌控隐私数据。
A:在iOS26+系统中,Apple强化了locationd的定位缓存机制。即使脚本成功修改了WLOC响应,系统仍可能使用缓存中的旧坐标。解决方法是重启设备以清空内存缓存。飞行模式开关、关闭定位服务等方式无法清除此缓存。
A:wloc只修改网络定位(WiFi/基站),不影响GPS硬件定位。在GPS信号强的户外环境中,系统可能忽略网络定位结果而使用GPS定位。wloc最适合在GPS信号弱的室内环境中使用。
A:支持Apple Maps、Google Maps、高德地图、百度地图、坐标文本等多种格式的链接解析。高德地图支持短链自动跟跳转和GCJ-02到WGS84坐标自动换算。
A:需要代理已开启、模块已启用、信任gs-loc.apple.com证书。快捷指令会自动调用Worker进行链接解析和坐标换算。
A:收藏列表保存在浏览器localStorage,生效坐标保存在代理工具的持久化存储$persistentStore。两者独立存储,清除浏览器缓存后收藏列表会丢失但不影响已储存到设备的生效坐标。
A:有两种方法。方法一:关闭或删除模块,系统自动恢复真实定位。方法二:清除持久化数据wloc_settings,脚本进入透传模式放行原始数据。iOS26+需要重启设备清除定位缓存。
注意事项
- 需要MITM证书信任gs-loc.apple.com和gs-loc-cn.apple.com
- 仅修改网络定位(WiFi/基站),不影响GPS硬件定位
- iOS在GPS信号强时可能忽略网络定位结果
- 适用于WiFi定位为主的室内场景效果最佳
- 选点页面需在代理模式下使用(Safari走代理才能拦截储存请求)
- iOS26+系统需要重启设备清除定位缓存才能生效
- 公共选点页面有请求上限,建议自部署Worker以获得更好的稳定性

