[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94394":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},94394,"location-spoofer","xweiba\u002Flocation-spoofer","xweiba",null,"Swift",311,88,186,1,0,54,45.25,false,"main",true,[],"2026-08-24 04:01:22","\u003Cdiv align=\"center\">\n\n# 📍 Location Spoofer\n\n### iOS Location Service Research & Testing Framework\n\n一个用于 **iOS 定位服务研究、软件开发测试和 QA 验证** 的开源项目。\n\n项目通过本机代理或第三方代理客户端，对 Apple 定位服务的指定响应进行测试环境模拟，帮助开发者验证应用在\n不同地理位置和定位场景下的行为。\n\n[![iOS 15+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FiOS-15%2B-111111?logo=apple)](project.yml)\n[![Swift 5.9](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSwift-5.9-F05138)](project.yml)\n[![Go 1.23+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.23%2B-00ADD8?logo=go)](Core\u002Fgo.mod)\n[![Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-v1.0.2-2563EB)](docs\u002FCHANGELOG.md)\n\n[功能概览](#功能概览) ·\n[工作原理](#工作原理) ·\n[快速开始](#快速开始) ·\n[构建项目](#构建项目) ·\n[English](README.en.md)\n\n\u003C\u002Fdiv>\n\n> [!IMPORTANT]\n> 本项目用于学习研究、自有设备测试、软件开发和 QA 验证。\n>\n> 请仅在你拥有或获得授权的设备、网络和软件环境中使用，并遵守当地法律法规、网络管理规定以及相关服务条\n> 款。\n>\n> 本项目不保证兼容所有 iOS 版本或第三方应用，也不承诺绕过第三方应用的安全策略、业务限制或服务规则。\n\n## 项目定位\n\nLocation Spoofer 是一个面向 iOS 定位服务行为研究和开发测试的工具。\n\n它提供：\n\n- 原生地图选点和位置场景切换；\n- Apple 定位服务响应的测试环境模拟；\n- 本地代理和第三方代理两种运行模式；\n- 坐标标准识别与 WGS-84 \u002F GCJ-02 双坐标管理；\n- 环境检测、运行日志和问题诊断；\n- 收藏位置和上次地图状态恢复。\n\n项目不修改目标 App 的源代码，也不提供远程控制或数据采集服务。\n\n## 功能概览\n\n- **原生地图交互**\n    - 使用 MapKit 显示地图和系统蓝点；\n    - 支持搜索、点击选点、拖动地图中心和缩放；\n    - 支持收藏位置和恢复上次选点；\n    - 当前选点同时显示国内坐标和国际坐标，可分别复制。\n\n- **定位服务响应模拟**\n    - 通过代理层处理指定的 Apple 定位服务请求；\n    - 在测试环境中返回选定的坐标数据；\n    - 不需要修改目标 App 代码。\n\n- **双运行模式**\n    - APP 模式：在设备内运行 Go 代理，仅支持当前 Wi-Fi 网络；\n    - 第三方代理模式：通过支持的代理客户端覆盖 Wi-Fi、4G 或 5G，具体能力取决于客户端。\n\n- **环境检测**\n    - APP 模式检测本地代理、证书信任和请求链路；\n    - 第三方代理模式检测 WLOC 配置接口和模块响应；\n    - 失败时提供对应的配置或诊断入口。\n\n- **开发调试**\n    - 运行日志；\n    - 日志复制和清理；\n    - 坐标标准变化记录；\n    - 脱敏问题报告生成。\n\n## 工作原理\n\n### APP 模式\n\nAPP 模式在设备内运行本地 Go 代理，并通过当前 Wi-Fi 的手动 HTTP 代理让指定请求经过本地代理。\n\n```text\niOS 定位请求\n      │\n      │ 当前 Wi-Fi 手动 HTTP 代理\n      ▼\n设备内 wloccore Go 代理\n      │\n      │ 处理指定 Apple 定位服务请求\n      ▼\nApple 定位服务响应\n      │\n      │ 测试坐标响应\n      ▼\n系统和应用读取定位结果\n```\n\nAPP 模式：\n\n- 不创建 Network Extension；\n- 不显示或占用系统 VPN；\n- 只覆盖当前 Wi-Fi 网络；\n- 需要配置当前 Wi-Fi 的手动 HTTP 代理；\n- 需要安装并信任 App 生成的本机 CA；\n- 代理只处理项目定义的 Apple 定位服务和环境验证请求，不是通用网络抓包工具。\n\n### 第三方代理模式\n\n第三方代理模式不启动 App 内置 Go 代理，也不使用 App 生成的 CA。\n\n```text\n地图选点\n  │\n  │ WGS-84 坐标\n  ▼\nWLOC 配置接口\n  │\n  ▼\n第三方代理客户端保存配置\n  │\n  ▼\n第三方代理客户端处理定位服务请求\n```\n\n在该模式下：\n\n- App 负责地图选点、收藏、坐标同步和清除；\n- 第三方客户端负责代理\u002FVPN、MITM、证书和规则执行；\n- 坐标持久化由第三方客户端负责；\n- 是否支持 Wi-Fi、4G 或 5G 取决于客户端；\n- App 关闭后，第三方客户端中的配置可能继续生效。\n\n不要同时启用 APP 模式代理和第三方代理模式，避免两个代理链路互相干扰。\n\n## 运行模式\n\n### APP 模式\n\n适用于：\n\n- 只使用 Wi-Fi 的设备测试；\n- 不依赖第三方代理客户端的本地验证；\n- 需要在 App 内完成代理、证书和环境检测的场景。\n\n使用条件：\n\n- iOS 设备；\n- 当前 Wi-Fi 支持手动 HTTP 代理；\n- 安装并信任本机 CA；\n- 在 App 内完成代理配置和环境检测。\n\n### 第三方代理模式\n\n适用于：\n\n- 需要 Wi-Fi、4G 或 5G 网络覆盖的测试；\n- 已经使用支持模块或脚本的代理客户端；\n- 希望由第三方客户端继续保持代理配置的场景。\n\n当前客户端状态：\n\n| 客户端 | 状态 |\n|---|---|\n| Shadowrocket | 当前用于真机测试 |\n| Surge | 已提供配置，尚未完整验证 |\n| Quantumult X | 已提供配置，尚未完整验证 |\n| Loon | 已提供配置，尚未完整验证 |\n| Stash | 已提供配置，尚未完整验证 |\n| Egern | 使用 Surge 模块，尚未完整验证 |\n\n相关模块快照和来源记录：\n\n- [第三方模块说明](docs\u002FTHIRD_PARTY_MODULES.md)\n- [Yu9191\u002Fwloc](https:\u002F\u002Fgithub.com\u002FYu9191\u002Fwloc)\n\n第三方客户端、证书、MITM 和代理开关由客户端自身负责。导入任何第三方模块前，请先审查其配置和脚本内容。\n\n## 快速开始\n\n### 1. 安装应用\n\n你可以使用：\n\n- 自己的 Apple Developer 签名环境；\n- 适合个人测试的自签工具；\n- 项目 Releases 中的未签名 IPA；\n- 在 macOS 上按[构建说明](docs\u002FBUILD.md)自行构建。\n\n免费自签环境可能无法使用 Network Extension，因此 APP 模式采用设备内本地代理和 Wi-Fi 手动代理，不依赖\nVPN 组件。\n\n#### 自签安装说明\n\nRelease 附件是未签名 IPA，需要使用自签工具安装到 iPhone：\n\n1. **开启自签支持**：iOS 16 及以上版本前往“设置 → 隐私与安全性 → 开发者模式”，开启后按系统提示重启并\n   确认；iOS 15 没有此开关，可跳过本步。\n2. **下载 IPA**：前往本项目的 [Releases](https:\u002F\u002Fgithub.com\u002Fxweiba\u002Flocation-spoofer\u002Freleases)，下载最新的\n   `PaopaoLocationSpoofer-unsigned.ipa`。\n3. **准备自签软件**：前往 [Impactor Releases](https:\u002F\u002Fgithub.com\u002Fclaration\u002FImpactor\u002Freleases) 下载对应系统\n   版本的 Impactor；也可以使用爱思助手等支持 IPA 自签安装的软件。\n4. **连接并安装**：使用 USB 数据线连接 iPhone 与电脑，在手机上选择“信任此电脑”，然后在自签软件中选择\n   刚下载的 IPA，根据软件提示完成签名与安装。\n\nImpactor 支持 Windows、macOS 和 Linux；Windows 若无法识别设备，请先安装 iTunes 提供的 Apple 设备驱动。\n爱思助手属于第三方软件，请从其官方渠道获取，并自行评估账号、证书和隐私风险。\n\n安装完成后，若 iOS 阻止打开 App，请前往“设置 → 通用 → VPN 与设备管理”信任对应的开发者 App。免费\nApple ID 自签通常只有 7 天有效期，到期后需要重新签名安装。\n\n### 2. 首次启动\n\n首次启动时：\n\n1. 选择 APP 模式或第三方代理模式；\n2. 按照 App 内引导完成对应配置；\n3. 执行环境检测；\n4. 在地图中搜索、点击或拖动选择测试位置；\n5. 启用测试位置并在目标测试环境中验证结果。\n\n### 3. 恢复真实位置\n\nAPP 模式：\n\n1. 停止测试位置；\n2. 关闭当前 Wi-Fi 的手动 HTTP 代理；\n3. 按 App 内提示刷新定位环境。\n\n第三方代理模式：\n\n1. 使用 App 清除 WLOC 坐标；\n2. 在第三方客户端中关闭对应模块或代理；\n3. 按客户端要求恢复 HTTPS 解密和代理设置。\n\n如果系统或目标应用仍显示旧位置，可能需要等待定位缓存刷新，必要时重启设备后再次验证。\n\n## 坐标处理\n\n项目内部保存两种坐标表示：\n\n- WGS-84：国际标准，WLOC 写入使用此坐标；\n- GCJ-02：国内地图标准，用于需要国内地图坐标的场景。\n\nMapKit 不提供公开 API 直接返回当前是否使用 GCJ-02 或 WGS-84。项目通过固定锚点查询判断 MapKit 当前返回\n标准，并在运行期间根据蓝点变化和用户操作进行受控刷新。\n\n坐标写入边界会保存完整的 WGS-84 \u002F GCJ-02 坐标对，使用时根据当前地图标准选择对应字段，避免重复转换造成\n位置偏移。\n\n## 项目结构\n\n```text\nApp\u002F        SwiftUI 界面、MapKit、定位和运行流程\nCore\u002F       Go 代理、证书服务和定位响应处理\nShared\u002F     坐标、收藏、日志、配置和共享模型\nResources\u002F  Info.plist、Entitlements 和资源文件\nConfig\u002F     构建配置\nScripts\u002F    构建、打包和验证脚本\nTests\u002F      XCTest 和 Shell contract tests\ndocs\u002F       构建、模块和版本文档\n```\n\n## 构建项目\n\n源码构建需要 macOS 环境：\n\n- macOS；\n- Xcode；\n- Xcode Command Line Tools；\n- XcodeGen；\n- Go 1.23 或更高版本。\n\n当前项目不支持在 Windows 上直接构建 iOS 应用。\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fxweiba\u002Flocation-spoofer.git\ncd location-spoofer\n\n.\u002Fbuild.sh\n```\n\n运行构建并执行 Simulator 测试：\n\n```bash\n.\u002Fbuild.sh --test\n```\n\n构建脚本会生成未签名 IPA：\n\n```text\ndist\u002FPaopaoLocationSpoofer-unsigned.ipa\n```\n\n之后需要使用你自己的签名和安装流程部署到测试设备。\n\n## 隐私与安全边界\n\n- 项目不包含遥测或远程控制服务；\n- 项目不会自动上传用户位置数据；\n- 运行日志保存在设备 App Group 容器中，并自动保留近三天；\n- 问题报告需要用户主动复制后提交到 GitHub；\n- APP 模式会访问本机代理和环境验证地址；\n- 第三方代理模式可能访问上游模块地址和 WLOC 配置接口；\n- App 生成的 CA 私钥保存在设备 Keychain 中；\n- 第三方客户端模块、MITM 和证书链路由用户选择的客户端负责。\n\n请不要把真实位置、认证信息、证书私钥或完整敏感日志提交到公开 Issue。\n\n## 限制\n\n- iOS 系统版本变化可能影响定位服务行为；\n- MapKit 的坐标返回标准可能随系统、地区和定位环境变化；\n- 系统定位存在缓存，切换位置后不一定立即生效；\n- 第三方代理客户端的兼容性和规则行为需要分别验证；\n- 不保证所有应用都使用同一种定位 API；\n- 不保证所有应用或服务都接受测试坐标；\n- 不保证在所有网络环境、设备型号和 iOS 版本上表现一致。\n\n## 贡献\n\n欢迎提交：\n\n- Bug Report；\n- Feature Request；\n- 兼容性测试结果；\n- 性能改进；\n- 文档改进；\n- 测试补充。\n\n提交 Issue 时建议包含：\n\n- iOS 版本；\n- 设备型号；\n- 使用的运行模式；\n- 复现步骤；\n- 脱敏后的运行日志；\n- 是否使用第三方代理客户端。\n\n## 文档\n\n- [构建说明](docs\u002FBUILD.md)\n- [第三方模块说明](docs\u002FTHIRD_PARTY_MODULES.md)\n- [更新日志](docs\u002FCHANGELOG.md)\n- [英文文档](README.en.md)\n- [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fxweiba\u002Flocation-spoofer\u002Fissues)\n\n## 功能预览\n\n以下截图用于展示主界面和部分真机测试场景。实际结果会受到 iOS 版本、网络环境、系统缓存和目标应用定位策略\n影响，不代表对所有应用或版本作出兼容性保证。\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Cth>应用主界面\u003C\u002Fth>\n    \u003Cth>Apple 地图测试\u003C\u002Fth>\n    \u003Cth>高德地图测试\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"images\u002F主界面.jpg\" alt=\"Location Spoofer 地图选点主界面\" width=\"220\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"images\u002FApple%20Map.jpg\" alt=\"Apple 地图定位测试场景\" width=\"220\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"images\u002F高德地图.jpg\" alt=\"高德地图定位测试场景\" width=\"220\">\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth>微信测试\u003C\u002Fth>\n    \u003Cth>钉钉测试\u003C\u002Fth>\n    \u003Cth>Apple Watch 场景测试\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"images\u002F微信.jpg\" alt=\"微信定位测试场景\" width=\"220\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"images\u002F钉钉.jpg\" alt=\"钉钉定位测试场景\" width=\"220\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"images\u002F高血压.jpg\" alt=\"Apple Watch 地区功能测试场景\" width=\"220\">\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 致谢与友链\n\n核心定位响应处理思路、Go 实现和第三方模块参考自：\n\n- [Yu9191\u002Fwloc](https:\u002F\u002Fgithub.com\u002FYu9191\u002Fwloc)\n\n友链：\n\n- [LINUX DO](https:\u002F\u002Flinux.do\u002F)\n\n感谢开源社区中参与 iOS 定位服务研究、网络代理和移动端测试工具建设的贡献者。\n","Location Spoofer 是一个面向 iOS 开发者和测试人员的定位服务模拟与验证工具，用于在受控环境中安全地模拟 Apple 定位服务响应。它支持原生地图选点、WGS-84\u002FGCJ-02 双坐标管理，并提供两种运行模式：基于设备内 Go 代理的本地 Wi-Fi 模式，以及兼容 Shadowrocket、Surge 等主流客户端的第三方代理模式。项目不修改目标 App 源码，不涉及越狱或系统级注入，仅通过 HTTP 代理层拦截并重写定位请求响应，适用于 iOS 应用定位功能的 QA 测试、多地域场景验证及定位逻辑调试。",2,"2026-08-08 02:30:03","CREATED_QUERY"]