Yu9191/wlocPublic

修改 Apple 网络定位(gs-loc)返回坐标 · 支持 Surge / Quantumult X / Loon / Stash · 快捷指令一键设置/恢复定位

AI summary: A specialized configuration module to modify Apple's network location services for iOS virtual positioning.

Stars
10.3K
+234 today
Forks
2.2K
Watchers
36
Open issues
81
Open PRs
4
Contributors
~3
Commits
45
Branches
2

JavaScriptAGPL-3.0Created Jun 24, 2026Last push 1mo agoLatest release v1.1.0+394 stars this week+1.7K this month

Quick answers

What is wloc?
A specialized configuration module to modify Apple's network location services for iOS virtual positioning.
What does wloc do?
This project offers configuration files designed to intercept and modify the coordinates returned by Apple's network location services (WLOC), specifically targeting WiFi and cellular tower geolocation. By utilizing tools like Surge, Quantumult X, or Shadowrocket, users can implement a virtual location on their iOS devices without requiring complex manual coordinate entry. The system includes an interactive online map interface that allows users to simply drop a pin to set their desired location across their device. It intercepts known Apple location domains to seamlessly replace real geolocation data with the user's selected coordinates.
Who is wloc for?
iOS users, developers, and privacy advocates who use advanced network proxy tools and require a reliable method for virtual positioning.
How do I get started with wloc?
Import the appropriate configuration file for your proxy client (e.g., Surge, Quantumult X) from the provided URLs.
How popular is wloc on GitHub?
Yu9191/wloc has 10,284 stars and 2,193 forks on GitHub, and gained 394 stars in the last 7 days.
What license does wloc use?
Yu9191/wloc is released under the AGPL-3.0 license.

Star history

since Jul 28, 2026
05K10KJul 2026Aug 2026Aug 2026Sep 2026
10.3K stars as of Sep 8, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 14 commits2026-06-25: 8 commits2026-06-26: 1 commit2026-06-27: 6 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 1 commit2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 3 commits2026-08-09: 2 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 3 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 1 commit2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits
39 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    10,284 stars

  • Breakout launch

    10,284 stars in 103 days

What wloc does

This project offers configuration files designed to intercept and modify the coordinates returned by Apple's network location services (WLOC), specifically targeting WiFi and cellular tower geolocation. By utilizing tools like Surge, Quantumult X, or Shadowrocket, users can implement a virtual location on their iOS devices without requiring complex manual coordinate entry. The system includes an interactive online map interface that allows users to simply drop a pin to set their desired location across their device. It intercepts known Apple location domains to seamlessly replace real geolocation data with the user's selected coordinates.

iOS users, developers, and privacy advocates who use advanced network proxy tools and require a reliable method for virtual positioning.

  • Cross-client compatibility: Provides ready-to-use configuration modules for popular iOS network tools like Surge, Quantumult X, Loon, and Shadowrocket.
  • Interactive location selection: Features an integrated online map tool for visually selecting coordinates without manual data entry.
  • Comprehensive domain coverage: Automatically overrides all known Apple WLOC domains to ensure consistent virtual positioning.
  • Shortcut automation: Includes iOS Shortcut integration to quickly toggle or clear the virtual location directly from the home screen.
  • Network-level spoofing: Operates entirely at the network proxy layer, bypassing the need for jailbreaking or intrusive system modifications.

Where teams use it

Privacy protection

Privacy-conscious users spoof their location to prevent invasive applications from tracking their real-world movements.

Location-based testing

Mobile application developers simulate different geographic locations to test geofenced features or localized content delivery.

Media unblocking

Users modify their device location to bypass regional restrictions on streaming services or localized applications.

Social media check-ins

Individuals create virtual check-ins or access location-specific filters on social media platforms without physically traveling.

Getting started: Import the appropriate configuration file for your proxy client (e.g., Surge, Quantumult X) from the provided URLs.

README

main branch

Apple WLOC 定位修改

修改 Apple 网络定位服务 (WiFi/基站) 返回的坐标,实现 iOS 网络定位虚拟定位。打开在线选点页面选位置即可生效,无需手动填经纬度。

⚠️ iOS 27 beta 6 起,系统已禁止对 gs-loc.apple.com 进行 MITM 拦截。 目前该版本及之后的 beta 版本暂时无法使用本项目,等待后续适配方案。


订阅地址

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 模块 Stash 请直接订阅上面的 .stoverride,无需用 Script Hub 转换

默认扩展域名支持

默认模块已覆盖目前已知的完整 WLOC 域名集合:

  • gsp-ssl.ls.apple.com
  • bluedot.is.autonavi.com
  • bluedot.is.autonavi.com.gds.alibabadns.com

快捷指令(推荐,最方便)

直接用快捷指令切换 / 清除定位,无需打开选点页面:

用法

  • 设置位置: 在地图 App 里选好位置(长按地图选点)→ 共享 → 选「wloc 设置地理位置」即可切换。
    • 苹果地图:选点 → 共享 → 「wloc 设置地理位置」
    • 高德地图:选点 → 分享 → 更多 → 「wloc 设置地理位置」
  • 清理位置: 点「wloc 清理恢复位置」即可恢复真实定位。

支持苹果地图、高德(含短链,自动跟跳转 + GCJ-02→WGS84 坐标换算)。

前提:代理已开 + 模块已启用 + 信任 gs-loc.apple.com。选点页面(Worker / Pages)方案仍保留,见下方。


关于地图链接解析(worker)

为了让苹果地图和高德走同一条流程,链接统一发给 wloc-spoofer.wloc.workers.dev/api/parse 解析:

  • 高德:分享出来是短链,真实坐标只藏在 302 跳转的 Location 头里,且是 GCJ-02 偏移坐标。快捷指令既读不到跳转头、也难做坐标换算,所以由 worker 跟跳转 → 抠坐标 → GCJ-02→WGS84 → 返回经纬度。
  • 苹果地图:链接里直接带 coordinate=纬度,经度,但在中国大陆同样是 GCJ-02 偏移坐标,所以和高德一样由 worker 做 GCJ-02→WGS84 换算后返回;境外坐标会自动跳过换算(out_of_china 判断)原样返回。除了统一坐标系,走同一接口也方便统一处理短链、文本夹链接、名称解码等。

隐私: /api/parse 是纯转发解析——收到链接 → 跟跳转 → 解析坐标 → 返回 JSON,全程不写任何存储、不记日志、不缓存,处理完即丢(wrangler.jsonc 里已显式关闭 observability)。跟跳转时只接受 http/https,单次请求 8 秒超时、只读响应正文前 512 KB。

不放心可自行部署: worker 源码完全开源,可自己部署一份替换上面的地址:

解析逻辑带一套不联网的回归测试,改动后跑一下:

cd worker && npm install && npm test

坐标系说明: 页面内部一律以 WGS84 为准。底图切到「高德」时,瓦片画的是 GCJ-02 地物,与 Leaflet 的 WGS84 像素映射差着一个偏移量(深圳一带约 600 米),页面会在 选点/落点时自动双向换算,所以在任意底图上点选得到的都是同一个 WGS84 坐标。

各家地图的坐标系不同,换算按「来源 × 地区」分派:

来源 中国大陆 港澳台
苹果地图 / Google GCJ-02,需换算 WGS84,不换算
高德 / 百度 GCJ-02 / BD-09,需换算 同左,仍需换算

港澳台建议优先用苹果或高德的链接。 百度在港澳台的分享短链,坐标要靠网页脚本 带反爬令牌去查,服务端取不到;变通办法是在浏览器打开该链接,等地址栏变成 map.baidu.com/poi/名称/@数字,数字,19z 之后复制整条地址再粘贴——但百度的针脚位置 与苹果/高德常有几十到两百米的出入(大陆约 5 米,港澳台可达 240 米),精确定位时 不建议用它。


使用方法
  1. 订阅模块并启用 MITM
  2. 打开在线选点页面(公共 Worker,建议添加到主屏幕)
  3. 地图选位置 / 搜索地名 / 粘贴地图链接
  4. 点击「储存到设备」
  5. 下次 Apple 定位触发时自动生效

支持 Apple Maps / Google Maps / 高德 / 百度 / 坐标文本 链接解析。

iOS 26/27 及更高版本注意: Apple 从 iOS 26 开始大幅强化了 locationd 的定位缓存机制,系统会将之前获取的真实定位结果缓存在内存中并长时间复用。这意味着安装模块或切换目标坐标后,即使脚本已成功修改了 WLOC 响应(日志显示"已修改"),系统仍可能继续使用缓存中的旧坐标,导致定位看起来没有变化。

解决方法:重启设备。 重启会清空 locationd 的内存缓存,系统重新发起 WLOC 请求时会拿到修改后的坐标。飞行模式开关、关闭定位服务等方式在 iOS 26+ 上无法清除此缓存,必须重启。iOS 15~18 通常不需要重启即可生效。

高版本系统推荐操作流程(成功率最高):

方法一:

  1. 先在选点页面选好需要修改的定位并储存到设备
  2. 开飞行模式 → 关闭定位服务 → 重启设备
  3. 关闭飞行模式(WiFi 也要关)→ 连接代理工具(确认 VPN 图标出现)→ 打开定位服务
  4. 打开地图验证

方法二:

  1. 关闭定位服务
  2. 在选点页面选好位置并储存到设备
  3. 打开定位服务 → 弹出「允许访问位置信息」时选择**「下次询问或在我共享时」**
  4. 打开地图验证
工作原理
选点页面 → 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
randomRadius 扰动半径(米),每次定位在目标点周围随机偏移,0=关闭 0
logLevel 日志级别 info

优先级: 在线选点储存 > 模块参数 > 默认值

扰动半径说明: 启用后每次定位响应会在目标坐标周围指定米数内随机偏移,避免每次定位结果完全相同。Surge/Loon/Stash/Shadowrocket 可在模块参数中设置;QX 用户可通过选点页面设置。默认 0(关闭),不影响现有用户。

取消虚拟定位 / 恢复真实定位

方法一:关闭或删除模块(推荐)

关闭模块后脚本不再拦截 WLOC 请求,系统自动恢复真实定位。iOS 26+ 需要重启设备清除定位缓存。

方法二:清除持久化数据(透传模式)

清除已保存的坐标后,脚本进入透传模式——不修改 WLOC 响应,直接放行原始数据,系统自动恢复真实 GPS 定位。

透传模式触发条件: 持久化数据为空(null)且模块参数为默认值(113.94114, 22.544577)时,脚本判定用户未自定义坐标,自动跳过修改。模块默认参数无需更改,仅清除持久化数据即可触发透传。

在代理工具中删除持久化数据,字段名为 wloc_settings:

  • Surge — 脚本编辑器运行: $persistentStore.write(null, "wloc_settings")
  • Quantumult X — 运行: $prefs.removeValueForKey("wloc_settings")
  • Loon — 运行: $persistentStore.write(null, "wloc_settings")

清除后重启设备即可恢复真实定位。无需关闭模块,脚本会自动检测到无自定义坐标并跳过修改。

注意: 如果用户在模块参数中手动修改了经纬度(非默认 113.94114, 22.544577),即使清除持久化数据,脚本仍会使用模块参数中的坐标进行修改。只有保持默认参数不变时,清除持久化数据才会进入透传模式。

收藏位置功能

在线选点页面支持收藏多个位置,方便来回切换:

  • 添加收藏:选好位置后点击「收藏位置」→ 输入备注名称(支持中文/英文/数字,最多 30 字)→ 保存
  • 快速切换:点击收藏列表中的位置 → 地图自动跳转 → 点「储存到设备」即可切换
  • 当前生效标记:与设备已保存坐标一致的收藏会显示「✓ 当前生效」
  • 删除管理:单个删除(×按钮)或清空全部
  • 当前生效坐标:页面显示设备端持久化数据(wloc_settings),支持刷新查询和清除

数据存储说明:

  • 收藏列表 → 保存在浏览器 localStorage(仅用于选点页面的 UI 便捷操作)
  • 生效坐标 → 保存在代理工具持久化存储 $persistentStore(脚本运行时实际读取的数据)

两者独立存储。收藏列表是浏览器端的辅助数据,清除浏览器缓存或换浏览器后需重新收藏,但不影响已储存到设备的生效坐标。

自部署 Worker(推荐)

公共选点页面有请求上限,建议部署自己的实例:

  • Workers: https://wloc-spoofer.wloc.workers.dev/
  • Pages: https://wloc-pages.pages.dev/

一键部署(Workers):

Deploy to Cloudflare Workers

一键部署仅支持 Workers 模式,点击按钮后按提示授权即可完成部署。

手动部署(Workers):

# 1. 克隆仓库
git clone https://github.com/Yu9191/wloc.git
cd wloc/worker

# 2. 安装依赖
npm install

# 3. 登录 Cloudflare(首次需要)
npx wrangler login

# 4. 部署
npm run deploy

部署成功后会得到你自己的 Worker 地址(如 https://wloc-spoofer.<你的子域名>.workers.dev),用这个地址选点即可。

免费账户每天 10 万次请求,个人使用完全够用。

高级:Pages 部署

Pages 部署不支持一键按钮,需要手动执行:

git clone https://github.com/Yu9191/wloc.git
cd wloc/worker
npm install
npm run pages:deploy

必须走 npm run pages:deploy(它带 -c wrangler.pages.jsonc)。直接跑 wrangler pages deploy dist 会丢掉配置里的 compatibility 设定。

部署时会提示设置 production branch,输入 main 即可。部署成功后得到 https://<项目名>.pages.dev 地址。

Pages 和 Workers 功能完全一致,按需选择即可。

注意事项
  • 需要 MITM 证书信任 gs-loc.apple.com 和 gs-loc-cn.apple.com
  • 仅修改网络定位(WiFi/基站),不影响 GPS 硬件定位
  • iOS 在 GPS 信号强时可能忽略网络定位结果
  • 适用于 WiFi 定位为主的室内场景效果最佳
  • 选点页面需在代理模式下使用(Safari 走代理才能拦截储存请求)

致谢

贡献者


许可证

本项目采用 AGPL-3.0 许可证。未经授权,禁止将本项目代码用于商业产品或上架应用商店。

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

2 total
  1. v1.1.0v1.1.0Aug 8, 2026

    ### 新功能 - **随机扰动半径 (randomRadius)**:每次定位在目标点周围指定米数内随机偏移,避免定位结果完全相同。默认 0(关闭),选点页面可设置,模块参数可配置。(感谢 @YeTianXingShi #70 提供思路) - **百度地图链接解析**:快捷指令和选点页面支持粘贴百度地图链接,自动解析 BD-09 坐标并转换为 WGS84。(感谢 @YmlyZA #83) - **港澳台坐标处理**:苹果/Google 地图在港澳台发的是 WGS84,不再做 GCJ 反算;高德/百度仍正常换算。 ### 修复 - **Stash 响应格式**:修复 Stash 的 \\\ 需要直接传 response 而非 \{ response }\ 的问题。(感谢 @SajoLuo #66) ### 改进 - 选点页面新增扰动半径输入框 - 所有平台模块新增 randomRadius 参数 - 新增回归测试覆盖(23 项测试全部通过) - README 更新参数说明和贡献者致谢

  2. v1.0.0v1.0.0Jun 25, 20262.6K downloads

    WLOC 首个发布:修改 Apple 网络定位(gs-loc.apple.com)返回坐标,支持 Surge / Quantumult X / Loon / Stash 四种模块。 ## 使用(推荐:快捷指令) - 设置位置:在地图 App 选好点 → 共享/分享 → 「wloc 设置地理位置」 https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7 - 清理恢复:「wloc 清理恢复位置」 https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f - 选点页面:https://wloc-pages.pages.dev/ ## 模块 - Surge:`modules/wloc.sgmodule` - Quantumult X:`modules/wloc.conf` - Loon:`modules/wloc.lpx` - Stash:`modules/wloc.stoverride`(原生覆写,避免转换丢字段) ## 链接解析 Worker Apple 地图 / 高德统一走 `/api/parse`:跟 302 跳转、解析坐标、GCJ-02→WGS84。纯转发解析,不写存储、不记日志、不缓存。源码开源,可自行部署。 支持苹果地图、高德(含短链)。

Code frequency

additions and deletions
+2.2K-2.2KWeek of 2026-06-21: +2,229 linesWeek of 2026-06-21: -756 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +72 linesWeek of 2026-07-19: -1 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +830 linesWeek of 2026-08-02: -470 linesWeek of 2026-08-09: +6 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +27 linesWeek of 2026-08-16: -11 linesWeek of 2026-08-23: +0 linesWeek of 2026-08-23: -0 linesWeek of 2026-08-30: +0 linesWeek of 2026-08-30: -0 linesJun 21, 2026Aug 30, 2026
+3.2K lines added, -1.2K removed over the last year.

Commits per week

last 52 weeks
290Week of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 29 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 1 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 3 commitsWeek of 2026-08-09: 2 commitsWeek of 2026-08-16: 4 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 0 commitsSep 7, 2025Aug 30, 2026
39 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 2 commitsSun 17:00 — 1 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 2 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 0 commitsMon 11:00 — 0 commitsMon 12:00 — 0 commitsMon 13:00 — 0 commitsMon 14:00 — 0 commitsMon 15:00 — 0 commitsMon 16:00 — 0 commitsMon 17:00 — 0 commitsMon 18:00 — 0 commitsMon 19:00 — 0 commitsMon 20:00 — 0 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 0 commitsTue 11:00 — 0 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 0 commitsTue 15:00 — 0 commitsTue 16:00 — 0 commitsTue 17:00 — 0 commitsTue 18:00 — 0 commitsTue 19:00 — 0 commitsTue 20:00 — 0 commitsTue 21:00 — 0 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 1 commitsWed 8:00 — 3 commitsWed 9:00 — 4 commitsWed 10:00 — 4 commitsWed 11:00 — 1 commitsWed 12:00 — 0 commitsWed 13:00 — 0 commitsWed 14:00 — 0 commitsWed 15:00 — 0 commitsWed 16:00 — 0 commitsWed 17:00 — 0 commitsWed 18:00 — 0 commitsWed 19:00 — 0 commitsWed 20:00 — 1 commitsWed 21:00 — 0 commitsWed 22:00 — 0 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 1 commitsThu 2:00 — 3 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 0 commitsThu 11:00 — 0 commitsThu 12:00 — 0 commitsThu 13:00 — 0 commitsThu 14:00 — 0 commitsThu 15:00 — 0 commitsThu 16:00 — 0 commitsThu 17:00 — 2 commitsThu 18:00 — 1 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 2 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 1 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 0 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 0 commitsFri 17:00 — 0 commitsFri 18:00 — 0 commitsFri 19:00 — 0 commitsFri 20:00 — 0 commitsFri 21:00 — 1 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 0 commitsSat 1:00 — 1 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 0 commitsSat 15:00 — 0 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 3 commitsSat 22:00 — 3 commitsSat 23:00 — 2 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits35 (78%)
Community commits10 (22%)

45 commits in total over the last year.

DateListRankStars gained
Jul 3, 2026daily#22+10
  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript

  • react/react

    The library for web and native user interfaces.

    250.9K stars · JavaScript

  • DietrichGebert/ponytail

    Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

    154.6K stars · JavaScript

  • vercel/next.js

    The React Framework

    143.2K stars · JavaScript

  • addyosmani/agent-skills

    Production-grade engineering skills for AI coding agents.

    101.1K stars · JavaScript

  • Leonxlnx/taste-skill

    Taste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop

    92.6K stars · JavaScript