苹果罕见技术失误:一次“漏掉 SourceMap”引发的 App Store 前端泄露(含源码)

🛠️ 连苹果也会翻车?一次罕见的前端部署疏忽,让新上线的网页版 App Store 源码被完整扒下!

苹果近期悄然更新了网页版 App Store,并将地址改为新的 https://apps.apple.com。这次更新带来了一项重要变化:非苹果设备用户也可以随意浏览 App Store,还能分享应用链接

但就在新版网页上线后不久,有开发者发现:前端源码竟可完整提取并查看!

这究竟是怎么发生的?本文将事件始末、技术原因、本地运行方法及示例代码一次讲清。


🚨 事故经过:SourceMap 没关,源码被扒光

GitHub 用户 rxliuli 发现,苹果在部署新版 App Store 网页时,忘记关闭 SourceMap 功能。

🔍 SourceMap 是什么?

SourceMap 是前端开发时的重要调试工具,它会将线上压缩后的 .js/.css 文件映射回人类可读的源码,方便定位问题。但……

正常生产环境必须关闭 SourceMap!

否则,任何人都能通过浏览器控制台或插件,将源码完整下载 🤯。

果然,rxliuli 使用 Chrome 插件,几分钟内就将整个前端项目抓取下来并发布到了 GitHub:

✅ 源码包括 Svelte + TypeScript 项目结构、UI 组件、API 逻辑、路由配置……几乎完整可运行!


💾 泄露代码仓库(已被封禁)

🔗 原 GitHub 仓库链接(状态:已封禁
https://github.com/rxliuli/apps.apple.com

虽然仓库目前已无法访问,但部分热心开发者已备份代码,比如这个Fork的地址

github apple前端源码
直接下载
如果链接失效,私信或者微信公众号"四楼没电梯" 发送 "applestore"留言


👀 泄露代码包含哪些?

根据仓库 README 与实际内容,泄露部分包括:

  • ✅ 基于 Svelte + TypeScript 的完整前端源码
  • ✅ 状态管理实现
  • ✅ UI 组件与样式
  • ✅ API 对接逻辑
  • ✅ 路由 & 页面配置
  • ⛔️ 不包含后端代码、敏感配置或用户数据

也就是说,功能重现没问题,但无法用于攻击苹果服务器或获取隐私信息

这也是为什么业界认为:此次事故虽然是前端团队的“稀有翻车”,但实际影响较为有限。


🧪 实机效果展示

以下为仓库中预览到的界面截图:
在这里插入图片描述

界面与 App Store 指标一致,页面布局和动态交互均支持本地渲染。用 Chrome 本地静态服务器即可访问。
在这里插入图片描述


📦 如何本地运行泄露代码?

泄漏项目包含两部分内容:

部分说明是否可立即运行
已编译前端产物/assets/ 和各国家站点目录(如 /us/✅ 直接运行即可
源代码/src/ + /shared/,基于 Svelte⚠️ 需自行补依赖和私有包

因此,给出两种本地运行方式:快速预览(零依赖)源码构建(需补包)


✅ 方式 A — 快速静态预览(推荐)

适合不想折腾,只想看效果的朋友。

运行步骤(以 PowerShell 为例):

# 进入仓库根目录(示例)
Set-Location -Path 'd:\dragon\page\apps.apple.com-main'

# 启动本地静态服务器(默认监听 8080 端口)
python -m http.server 8080

# 打开浏览器预览页面
# http://localhost:8080/us/iphone/today.html

注意:你可能看到 404 错误,原因是 HTML 引用的资源名带 ~,但磁盘上文件实际无该符号。本文已为这些常见文件创建了兼容副本,确保能正常访问。

示例兼容文件:

  • assets/index~B87DnNzwx-.js(从 assets/indexB87DnNzwx-.js 复制)
  • assets/index~C-lllyUtRG.css(从 assets/indexC-lllyUtRG.css 复制)
  • 添加最小 manifest.json(供页面请求)

如果你仍遇到缺失资源,可用以下命令排查路径:

Get-ChildItem -Recurse -Include *.html,*.js,*.css -File |
  Select-String -Pattern '/assets/[^"\'\)\s>]+' -AllMatches |
  ForEach-Object { $_.Matches } | ForEach-Object { $_.Value } | Sort-Object -Unique

🛠️ 方式 B — 从源码运行(需补依赖)

适合想研究项目结构+源码或做二次开发的朋友。

项目采用 Svelte + Vite + TypeScript,但内含大量 @amp/* 私有组件,需要自行处理(如制作 stub 包)。

关键步骤:

  1. 安装 Node.js(推荐 v18+)
  2. 在根目录创建 package.json
  3. 安装必要依赖并处理私有包
  4. 运行 npm run dev

示例 package.json

{
  "name": "appstore-local",
  "private": true,
  "version": "0.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
  "devDependencies": {
    "vite": "^5.0.0",
    "svelte": "^4.0.0",
    "@sveltejs/vite-plugin-svelte": "^2.0.0",
    "typescript": "^5.0.0",
    "sass": "^1.0.0"
  }
}

启动示例:

Set-Location -Path 'd:\dragon\page\apps.apple.com-main'
npm install
npm run dev

🔚 结语:权当一声“苹果也会犯错”

前端部署遗漏 SourceMap,看似低级,却是所有 Web 工程师都可能踩过的坑。

这次公开“翻车”不仅让开发者窥见苹果前端架构,对于学习 Svelte + Vite 实战的朋友而言,也是一份宝贵的“实战级”代码库。


实用小工具

App Store 截图生成器在线图片压缩utc timestamp, ctf tool
乖猫记账,AI智能分类的最佳聊天记账App。
Elasticsearch可视化客户端工具
百度网盘免费加速

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@井九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值