MySejahtera PHP Web App

一个用了简单PHP写的Web App

MySejahtera , 一个马来西亚民众应该都不陌生的App

它是马来西亚政府推出的一款针对 COVID-19 疫情的App

早在之前,有几位大佬合伙搞出了 nakvaksin.com ,针对 MySejahtera App 没有及时推送疫苗预而导致民众必须重新获得预约并且需要每天手动刷新MySejahtera以检查是否获得疫苗接种预约.

我也使用了他们的服务,真的很准确,在MySejahtera 推送了疫苗预约的那个时间段,我的邮箱和手机号码都收到了来自 nakvaksin.com 的提醒,提醒我要赴约

由于马来西亚政府推动疫苗接种的热情未减,马来西亚目前已经有90%的成年人人口完成接种疫苗,因此,nakvaksin.com 决定关停服务,并且保留Github上的源码.

这促使了我开始思想着能不能直接从网页上查询 MySejahtera App 里面的信息,包括但不限于:

  • 名字

  • 身份证号码/护照号码

  • 疫苗状态(Fully Vaccinated / Partially Vaccinated / Not Vaccinated)

  • 风险状态 ( Low Risk / Casual Contact / Confirmed Cases / Close Contact)

  • 疫苗详细信息 ( First / Second Dose Vaccine Number , Expiry Date , Appointment Date / Venue / Health Facility)

  • 查询周围的确诊案例

  • 电子版疫苗证书(PDF)


因此,MySejahtera PHP Web App 诞生啦~

Github Repo

首先,为了尽可能模拟真实使用 MySejahtera 的环境,所有 MySejahtera API的请求都使用了 MySejahtera 的 User Agent ( MySejahtera/1.0.36 (iPhone; iOS 14.4.2; Scale/2.00)

既然都说了这个是一个简单的PHP,那么代码自然而然也没有复杂到哪里去,基本就是判断 if else 这类的而已.

接下来,MySejahtera 的 API 请求需要你在 Request Header 上面加上 x-auth-token.

你需要做一个 POST 的请求到他们的登录API,如果用户名和密码正确,Response Header 上将包含 x-auth-token.

详细 API 教程可以看这里: samleong123/MySejahtera-PHP-Web: Retrieve MySejahtera App's data from MySejahtera API and show to users via web browser. Written in PHP (github.com)

登陆界面

首页,显示风险/疫苗状态和你的身份证/护照号码

疫苗详细信息,显示First / Second Dose Vaccine Number , Expiry Date , Appointment Date / Venue / Health Facility

可查询输入的位置周围的确诊案例,使用了 OpenStreetMap 的 API

由于个人隐私原因考虑,这个 MySejahtera PHP Web App不会存储用户的用户名/密码信息,换句话说,只要用户关闭了这个页面并且清除缓存,再重新打开就必须登录,不然 x-auth-token 超过3天后会过期.


目前正在打算加入显示 Booster Dose 加强针的预约显示,奈何我手上没有任何已经收到Booster Dose 加强针的预约的MySejahtera账户,如果您有并且您愿意提供我数据,请联系我.

您在提供数据时应该且需要删除您的个人隐私信息.


如果您觉得这个 Web App 有帮到您,麻烦到 Github 里帮忙点一个Star,谢谢!