你的“应用”本可以是一个网页(所以我帮你修好了)

你的“应用”本可以是一个网页(所以我帮你修好了)

Hacker News 摘要

原标题:Your 'App' Could Have Been a Webpage (so I fixed it for you)

作者 Dan Q 发表了一篇文章,表达了他对现代“应用文化”泛滥的不满,并记录了他将一个臃肿的移动应用还原为简洁网页的过程。

事件背景

今年夏天,作者的孩子们要在迪士尼乐园参加表演。学校要求家长安装一个名为 Travelbound 的应用,以此获取行程、交通安排和住宿详情。作者认为这类信息完全可以通过网页发布,没必要强迫用户安装一个专门的应用。

应用存在的问题

经过检查,作者发现该应用本质上只是展示文本、图片和 PDF 文件链接。相比于网页,这个应用不仅体积大、速度慢,还具有两个典型的负面特征:

隐私追踪:将关联用户谷歌账号的追踪数据回传给开发者。

强制广告:展示所谓的“灵感”板块,实际上是该机构其他旅游项目的广告。

作者指出,如果这些信息发布在网页上,用户可以自由地复制粘贴、打印、保存、收藏或搜索,而且几乎能在任何设备上使用,具有更好的可访问性。

逆向工程过程

为了“修复”这个问题,作者决定对该安卓应用进行逆向工程,提取其背后的数据接口。步骤如下:

1. 在 Android Studio 的虚拟设备管理器中创建一个新的虚拟设备。

2. 使用 rootAVD 工具对虚拟设备进行 Root 处理。

3. 通过 Magisk 设置自动授予应用 su 权限。

4. 运行 HTTP Toolkit 拦截虚拟设备的流量。

5. 从谷歌应用商店安装目标应用。

6. 配置 HTTP Toolkit 仅代理该应用的流量,以过滤干扰信息。

作者很快发现,该应用通过拼接用户名和密码组成特定的 URL 访问接口,例如 https://travelbound.api.vamoos.com/api/itineraries/{username}-{password}。该接口返回一段 JSON 数据,包含了应用显示的所有内容,包括行程数组、广告数组以及图片和文件的参考链接。

制作替代方案

作者编写了一个 Ruby 脚本,通过 Cron 定时任务运行。该脚本会自动抓取最新的 JSON 数据并生成一个简单的 HTML 页面。

过滤内容:脚本完全跳过了广告部分,只保留行程项目和 PDF 下载链接。

安全性:生成的页面使用了与原应用相同的密码进行保护。

透明度:作者在网页底部通过 <details> 元素附带了原始 JSON 数据,以便核对信息。

最终对比

作者对比了两种访问方式的优劣:

官方应用:初始大小 43MB,下载额外内容后膨胀至 124MB,包含追踪和广告。

自定义网页:仅 0.05MB,无追踪,无广告,功能更全,且支持更多设备。

作者感叹,目前的软件开发环境令人费解。公司愿意花更多的钱、投入更多精力去开发受限的应用,却不愿直接发布更开放、功能更强的网页。他认为除了少数必须调用硬件底层功能的任务外,绝大多数此类应用都应该是网页。

读者反馈

评论区的读者对此产生了强烈共鸣。许多人提到,现在连餐厅菜单、加油站优惠甚至查看工资单都被强制要求安装应用。读者们普遍认为,这是一种剥夺用户控制权、规避浏览器隐私保护、强制收集数据的行为。有人称之为“应用独裁”,并赞扬作者这种取回控制权的黑客精神。


原文:https://danq.me/2026/07/09/your-app-could-have-been-a-webpage/

评论:https://news.ycombinator.com/item?id=48869989

Report Page