那天我闲来无事刷 Hacker News,热榜上有个帖子吸引了我的注意。一个程序员爹收到了女儿学校的通知——想看演出行程?下载这个 App。好家伙,124MB,权限多到吓人,隐私政策比合同还长。就为了看一个时间表。换我我也得炸。

这个场景放在国内,就是无数家长的日常。国内高校和中小学推广的“今日校园”“企业微信”等应用,体积臃肿、功能稀碎,但凡你想查看课表、成绩、通知,就必须把整个全家桶塞进手机。更离谱的是,这些App往往还捆绑了位置权限、通讯录权限、短信权限——一个查课表的工具,需要知道你家住在哪、在跟谁聊天,属实离谱。

程序员 reaction:Me:Boyohboy,i'mthinkingabout

有意思的是,这种“用技术手段强迫用户就范”的操作,并不是中国特色。在北欧瑞典,家长们同样被一个叫 Skolplattformen 的平台折腾得苦不堪言。这个平台由斯德哥尔摩市政府耗资数十亿瑞典克朗打造,用于学校信息管理,但其用户体验堪称灾难——界面复杂、加载缓慢、通知混乱,家长们怨声载道。有家长甚至发推特说要戴着印有"垃圾 Skolplattformen"的棒球帽去接孩子放学。

Skolplattformen家长改造计划

Skolplattformen家长改造计划

正是一位叫 Landgren 的程序员——他同时是三个孩子的父亲,也是瑞典创新咨询公司 Iteam 的 CEO——实在忍不了了,直接给市政府写信要求开放 API。在等待回信的间隙,他登录账户试着分析了这个系统,几个小时后竟然已经能看到部分学校信息了。干脆一不做二不休,他联合另外两位码农家长 Johan Öbrink 和 Erik Hellman,决定在原有平台上构建一个新的 API 层,做成更易用的应用供其他家长使用。

这个故事后来被 IT之家 报道,成为技术社区热议的话题:为什么官方的、耗巨资打造的系统,反而不如几个程序员利用业余时间做出来的工具好用?这个问题值得我们深思。

事情到这一步,普通人可能忍忍就算了。但 Landgren 不是普通人——他是一家创新咨询公司的 CEO,也是三个孩子的父亲。工程师思维驱使他想搞清楚:这个 App 到底在干什么?

为什么一个查课表的工具能膨胀到 124MB

要理解这个现象,得先明白国内校园 App 的技术架构。以「今日校园」为例,逆向分析显示其网络请求几乎没有明文字段,连字段名都做了混淆处理,用 "p"、"s" 这种简短字符替代原本含义明确的命名

程序员 reaction:Content-Length:50

。这种做法有两个目的:一是防止竞争对手抓取数据,二是让普通用户难以通过抓包工具分析其行为。

但代价是,这个 App 集成了大量非必要的 SDK:推送服务、统计分析、广告联盟、甚至某些玄学权限。每一层封装都让安装包体积膨胀几分。对于只是想查课表的家长而言,这是完全不可接受的技术债务转移。

臃肿校园App的请求架构

臃肿校园App的请求架构

从抱怨到行动:一次教科书式的逆向工程

Landgren 没有止步于抱怨。他给斯德哥尔摩市政府写了封信,申请查看该平台的 API 文档——这是正规渠道。然而在等待回复的间隙,他忍不住登录了自己的账户,想看看这个系统是否可以被「非正规操作」。

结果出乎意料:几个小时的探索后,他已经能访问学校平台的部分数据了。与其等待一个可能永远不会来的 API 文档,不如直接动手构建替代品。

他的技术路径并不复杂,核心思路是「在现有平台之上再构建一层」:

  1. 抓包定位关键端点:通过 Chrome 开发者工具记录所有请求的 URL 和有效载荷
  2. 解析 API 调用逻辑:提取平台内部的数据交互模式
  3. 封装可复用的 SDK 包:让其他开发者可以在此基础上快速构建应用

Skolplattformen逆向技术路径

Skolplattformen逆向技术路径

联合另外两位程序员 Johan Öbrink 和 Erik Hellman 后,这个三人小团队用了数周时间,就在原有「垃圾 API」的基础上,搭建出了一个全新的访问层。他们将成果发布为开源应用,让更多家长可以绕过原始平台的糟糕体验。

技术与权力的边界在哪里

这里有个值得深挖的问题:Landgren 的做法合法吗?

从技术角度看,他并没有破解任何加密算法或突破认证机制——他只是利用浏览器本身就能看到的信息,重新组织了访问方式。本质上,这与用 Python 脚本自动化登录某个网页抓取公开数据没有区别。

但从法律角度看,情况就复杂了。许多校园平台的服务条款明确禁止「未经授权的自动化访问」,而逆向工程本身在多数法域都属于灰色地带

程序员 reaction:losingafewpackets

。斯德哥尔摩市政府的回应也印证了这种紧张关系:他们最初拒绝了 Landgren 的 API 申请,理由之一正是担心「非法访问个人信息」。

讽刺的地方在于:一个耗资数十亿克朗、用户体验烂到被家长发推嘲讽的平台,反过来要求普通用户「合法使用」——这种合法性本身就值得质疑。

技术与权力的边界在哪里

说到这里,问题来了:这种逆向行为本身合法吗?

从技术角度看,Landgren 他们的做法其实很克制。他们没有破解任何加密,也没有伪造身份——他们只是在用自己的账号、调自己的数据。打个比方,这就像你家门上装了一把开发商配的烂锁,你不换锁,反而天天翻窗进出,结果开发商报警说你非法入侵。荒谬吗?荒谬。但现实中,很多平台的 EULA(用户协议)确实写得模棱两可,把“反向工程”列为禁止项。

瑞典法律对这一块相对宽松。《版权法》允许出于兼容性目的进行反向工程,前提是不得侵犯源代码本身的版权。但 Öppna Skolplattformen 面临的问题不是法律,而是行政阻力——斯德哥尔摩市政府随后给家长施压,要求他们停止使用非官方客户端,理由是会“非法访问个人信息”。

讽刺的是,这些信息本来就是家长的,却被一个闭源系统扣在手里当筹码。

社区响应与开源替代

Landgren 三人的故事被媒体报道后,迅速在瑞典家长圈子里炸开。GitHub 上,Öppna Skolplattformen 的 Star 数一路飙升,全球各地的开发者开始提 Issue、写 PR,甚至有人主动翻译成英语、阿拉伯语、索马里语——毕竟瑞典是个移民国家,很多家庭的语言背景比平台本身还多元。

Öppna Skolplattformen 项目演进

Öppna Skolplattformen 项目演进

更深远的影响在于,它把一个技术问题变成了公共议题。瑞典家长开始追问:为什么一个教育管理平台需要 80 亿克朗却做成一坨?为什么家长不能自由查看自己孩子的信息?甚至有议员在议会上引用 Öppna Skolplattformen 的代码,质问教育部门的数字化策略。

最终,斯德哥尔摩市政府不得不坐到谈判桌前,讨论开放 API 的可能性。一个三人小团队的“技术洁癖”,撬动了整个行政系统的反思。

这大概就是程序员改变世界的方式——不是写 PPT,不是发朋友圈吐槽,而是直接动手,把烂代码换掉。

有意思的是,Landgren 本人倒是很淡定。他在一次采访中说:“我就是受不了用垃圾软件。如果官方愿意改进,我随时可以把仓库删掉。”

问题是,他们愿意吗?

参考文献

上一篇:
【AI面试八股文 | Agent架构】一次Agent编排故障让我重新理解了MCP协议的设计取舍
下一篇:
美国AI监管的夏天:行政令、5%股权与一场事先张扬的IPO

分享到这些地方