项目地址:ProxyPin script for authorized iOS Apple WLOC response rewriting tests
项目介绍
这是一个用于授权 iOS 定位测试的 ProxyPin 脚本。它拦截 Apple WLOC 接口响应:
gs-loc-cn.apple.com/clls/wlocgs-loc.apple.com/clls/wloc
然后在原始二进制响应包里替换经纬度字段。
这不是 Apple CVE,不是远程漏洞,也不是 iOS 权限绕过。它只能在用户主动安装并信任 ProxyPin CA 证书、并让设备流量经过 ProxyPin 的测试环境里生效。
功能特性
- 保留原始 WLOC 二进制请求体,避免 ProxyPin 把 body 重编码坏。
- 支持 gzip 压缩的 WLOC 响应。
- 在原始响应包结构中替换经纬度。
- 通过响应头输出调试信息,例如:
X-WLOC-ProxyPinX-WLOC-Origin-StatusX-WLOC-Patched-LocationsX-WLOC-Error
准备工作
- 一台 iPhone。
- ProxyPin。
- 本项目脚本:
proxypin_wloc_compat_v2.js。 - 一个可以正常联网的 Wi-Fi。
- 一个用于验证定位变化的 App 或系统定位入口。
使用方法
安装 ProxyPin
在 App Store 中搜索并安装 ProxyPin。
下载 ProxyPin CA 证书
打开 ProxyPin,进入 HTTPS 代理相关页面,下载 ProxyPin CA 证书。
安装描述文件
打开 iPhone 设置,进入“已下载描述文件”,点击 ProxyPin CA。
信任 ProxyPin CA
进入:设置 > 通用 > 关于本机 > 证书信任设置
开启 ProxyPin CA 的完全信任。
非常重要!如果没有信任 CA,ProxyPin 无法解密 HTTPS,脚本也无法修改 WLOC 响应。
配置代理过滤
打开 ProxyPin 的“代理过滤”设置。关闭“代理域名黑名单”。

开启“代理域名白名单”,并添加选点页面域名和 Apple WLOC 域名:
www.baidu.com
gs-loc-cn.apple.com
如果你需要兼容国际 WLOC 域名,也可以添加:
gs-loc.apple.com

导入或添加脚本
进入 ProxyPin 的“脚本”设置。
推荐直接导入本项目提供的 proxypin-scripts.json。导入文件已经包含脚本内容和匹配规则:
www.baidu.com/* gs-loc-cn.apple.com/clls/wloc gs-loc.apple.com/clls/wloc
导入后,确认脚本处于启用状态。
如果你的 ProxyPin 版本不方便导入 JSON,也可以点击添加脚本,手动创建。

把本项目的 proxypin_wloc_compat_v2.js 完整复制到脚本编辑器中。
匹配 URL 填写:
www.baidu.com/* gs-loc-cn.apple.com/clls/wloc gs-loc.apple.com/clls/wloc

建议优先使用 JSON 导入方式。ProxyPin 的脚本编辑器在长脚本下可能比较卡。
确认脚本启用
导入或保存脚本后,回到脚本列表,确认该脚本已经开启。

开启抓包
回到 ProxyPin 主界面,开启抓包。界面上出现红色方块按钮时,表示抓包已经开启。
设置目标坐标
抓包开启后,在走 ProxyPin 代理的测试设备上打开:
https://www.baidu.com/
页面会被脚本替换成 WLOC Location Picker。点击地图或使用 Use GPS 选择位置,确认坐标后点击 Save。
如果抓包没有开启,或设备流量没有经过 ProxyPin,访问 www.baidu.com 时不会出现选点页面。

点击 Save 后,坐标会保存到 ProxyPin 的 context.session 中。后续 Apple WLOC 响应会自动使用这组坐标。
如果还没有保存过坐标,脚本会使用默认值:
var TARGET_LONGITUDE = 113.94114; var TARGET_LATITUDE = 22.544577; var TARGET_ACCURACY = 25;
如果你只想手动写死坐标,也可以在脚本中修改上面的默认值。经纬度顺序是:
经度 longitude 在前 纬度 latitude 在后
也可以使用高德坐标拾取器辅助查坐标:
触发定位
打开系统定位相关 App,或关闭再开启一次定位权限,触发 iPhone 重新请求网络定位。
如果脚本生效,定位会变成你设置的目标坐标附近。
如何确认脚本成功
在 ProxyPin 抓包记录中找到:
https://gs-loc-cn.apple.com/clls/wloc
成功时,响应头里应该能看到类似内容:
X-WLOC-ProxyPin: v5.4.2 X-WLOC-Origin-Status: 200 X-WLOC-Patched-Locations: 大于 0
如果 X-WLOC-Patched-Locations 大于 0,说明脚本已经成功修改 WLOC 响应中的定位结果。
常见问题
看不到 WLOC 请求
可能原因:
- 没有开启抓包。
- iPhone 没有走 ProxyPin 代理。
- ProxyPin CA 没有安装或没有信任。
- 代理过滤规则没有包含
gs-loc-cn.apple.com。 - 如果打不开选点页,代理过滤规则没有包含
www.baidu.com。 - 当前环境 GPS 信号很强,iOS 没有触发 WLOC 网络定位。
返回 400
如果响应头里看到:
X-WLOC-Origin-Status: 400
说明 Apple 服务端拒绝了原始请求,脚本还没机会修改有效响应。
请检查:
- 脚本是否完整复制。
onRequest中是否保留了request.body = request.rawBody。- ProxyPin 是否错误修改了请求体。
定位没有变化
可能原因:
- 脚本没有启用。
- URL 匹配规则写错。
- 坐标顺序写反了。
X-WLOC-Patched-Locations为 0。- iOS 优先使用真实 GPS,而不是 WLOC 网络定位。
如何清理
测试完成后建议:
- 关闭 ProxyPin 抓包。
- 关闭 Wi-Fi HTTP 代理。
- 禁用或删除 ProxyPin 本地脚本。
- 不再使用时删除 ProxyPin CA 描述文件。
发布者:木木,转载请注明出处:https://blog.huzz.cn/11079.html
微信
支付宝