IP Geolocation - 掌控浏览器地理位置的 Chrome 扩展
在当今的互联网环境下,隐私保护已成为一个老生常谈的话题。许多用户习惯使用 VPN 或代理工具来隐藏真实的 IP 地址,以此规避追踪或访问特定区域的内容。然而,你是否遇到过这样的情况:明明已经切换了代理 IP,但网页依然精准地定位到了你所在的真实城市?
这通常是因为浏览器的 HTML5 Geolocation API 出卖了你。不同于基于 IP 的定位,网页可以通过 navigator.geolocation 直接请求设备的高精度 GPS 或 Wi-Fi 定位数据。
为了解决这个问题,填补网络层代理与应用层定位之间的隐私缺口,我开发了 IP Geolocation —— 一个开源的 Chrome 浏览器扩展。
项目背景
IP Geolocation 旨在为用户提供对浏览器地理位置信息的完全控制权。无论你是需要测试不同地区业务逻辑的前端开发者,还是注重隐私的普通用户,这个工具都能帮你”瞬间移动”到世界的任何角落。
- 项目源码: GitHub - IP-Geolocation
- 技术栈: JavaScript, HTML, CSS (Manifest V3)
- 许可证: MIT License
核心功能
IP Geolocation 不仅仅是一个简单的经纬度修改器,它结合了自动检测与手动控制,力求在易用性和灵活性之间找到平衡。
1. 智能的自动定位
扩展内置了自动化逻辑,能够通过 IP 地理位置 API 根据你当前的出口 IP 地址,自动获取对应的地理位置。这意味着当你切换代理节点时,浏览器的地理位置可以自动跟随变化,实现”身临其境”的伪装。
2. 灵活的手动控制与地图交互
如果自动定位不够精准,或者你想故意定位到一个虚构的地点,扩展提供了直观的 Leaflet 地图预览。你可以直接在地图上点击选择位置,或者手动输入经纬度坐标。
3. 精细化的白名单/黑名单机制
并不是所有网站都需要伪装。通过内置的过滤规则,你可以灵活配置:
- 白名单模式:仅在特定网站(如开发测试环境)启用伪装
- 黑名单模式:在特定网站(如需要真实导航的地图服务)禁用伪装
4. 隐私保护与本地化优化
考虑到特定网络环境,扩展加入了一个贴心的隐私保护逻辑:当检测到当前 IP 位于中国大陆时,为了避免意外暴露精确位置,系统会默认使用北京作为兜底位置,而不是透传真实的精确坐标。
技术实现
作为一款基于 Chrome Manifest V3 规范开发的扩展,IP Geolocation 在技术实现上有几个值得探讨的亮点。
核心原理:API 注入与重写
如何欺骗网页的定位请求?答案是脚本注入(Script Injection)。
我们利用 chrome.scripting.executeScript 在页面加载的最早期注入一段自定义的 JavaScript 代码。这段代码会劫持并重写原生的 navigator.geolocation 对象。
当网页调用 navigator.geolocation.getCurrentPosition 时,它实际上调用的是我们伪造的函数。这个函数不会去查询底层硬件,而是直接返回存储在 chrome.storage.local 中的伪造经纬度数据。
// 伪代码示例:重写 Geolocation APInavigator.geolocation.getCurrentPosition = function(success, error, options) { const mockPosition = { coords: { latitude: userSettings.lat, longitude: userSettings.lng, accuracy: 100 }, timestamp: Date.now() }; success(mockPosition);};定时任务与状态同步
为了保证位置信息的实时性,扩展使用了 chrome.alarms API 创建定时任务,每分钟自动检查一次 IP 变动并更新地理位置缓存。这种异步更新机制确保了用户在使用过程中不会感觉到明显的延迟。
沙箱化的地图预览
在 Popup 弹窗中加载复杂的地图库(Leaflet)有时会受到 Chrome 内容安全策略(CSP)的限制。本项目通过 iframe 沙箱模式优雅地解决了这个问题,既保证了地图功能的完整性,又符合 Manifest V3 的安全规范。
应用场景
- Web 开发与测试:开发者在调试基于 LBS(地理位置服务)的应用时,无需肉身移动,即可测试应用在不同地区的表现
- 海外业务访问:配合代理工具,解决部分流媒体或电商网站因为 GPS 位置与 IP 地址不符而产生的风控拦截
- 防止大数据杀熟与追踪:混淆真实的物理活动轨迹,保护个人隐私
快速开始
目前项目已在 GitHub 开源,你可以通过以下步骤安装体验:
- 下载项目的 Release 压缩包 或
git clone源码 - 打开 Chrome 浏览器,进入扩展程序管理页面 (
chrome://extensions/) - 开启右上角的”开发者模式”
- 点击”加载已解压的扩展程序”,选择项目文件夹
安装完成后,点击浏览器右上角的图标,即可看到当前的定位状态并进行设置。
总结
IP Geolocation 是一个小而美的工具,它解决了一个具体而实际的问题。通过开源的方式,希望能帮助到更多的开发者和注重隐私的用户。
如果你对这个项目感兴趣,或者有更好的功能建议,欢迎在 GitHub 上提交 Issue 或 PR!
分享
如果这篇文章对你有帮助,欢迎分享给更多人!