Matrix 首页推荐

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


编注:此文章为《微信小程序也能一键直达,除了健康码你还想跳转什么?》的后续拓展,如果你还没有看过这篇文章,推荐先行阅读;如果你对微信不感兴趣,又有制作快捷指令的基础,欢迎跳过直接阅读本文。

上篇文章介绍了微信小程序指定页面的 URL Scheme 抓取,以及相关自动化的制作。但是由于该方法使用人数的增加,很快就触及了微信小程序的每日 50 万次的跳转上限,导致了很多人在中午开始就无法使用 URL Scheme 跳转,另一方面,也有不少读者反馈日常更惯用支付宝/云闪付,希望能够给出类似的活用方式。

所以经过作者群友 @SunsetYe 的提示,又实现了支付宝的指定页面路径跳转,而且方法比微信小程序简单很多,接下来就来看看如何只用简单几个步骤,实现支付宝指定页面的路径抓取。另外,云闪付的小程序用了类似的方法进行跳转,在此处也一并讲解,提供给有需要的读者参考使用。

支付宝

首先,打开支付宝,来到需要抓取的小程序页面。此处以上海的随申码为例演示,打开随申办小程序,点击顶部的「随申码」按钮进入页面。

可以看出这个一个二级页面,如果想要使用 URL Scheme 一键访问,同样需要知道这个页面的 path 参数(可理解为某个页面的「身份证」。点击右上角的「更多」图标按钮,再依次点击「分享」>「复制链接」。

剪切板的链接地址如下所示,前往 Safari 粘贴打开剪切板链接,这时候会弹出询问窗口,询问是否在支付宝中打开。

https://ur.alipay.com/7jQeHZlc

 

点击取消,看到 Safari 的地址栏,可以看出短链接经过解析,变成了含有参数的长链接。复制出这个长链接,如下所示:

https://render.alipay.com/p/s/i/?scheme=alipays%3A%2F%2Fplatformapi%2Fstartapp%3FappId%3D2019072665939857%26page%3Dpages%252Fmy-station-type%252Fmy-station-type%26enbsv%3D0.2.2108270116.35%26chInfo%3Dch_share__chsub_CopyLink

此处的链接参数是被编码过的,使用 URLDecode.org 进行解码一下,得到如下的原始文本,我们将这一长串的链接分段解析一下。

https://render.alipay.com/p/s/i/?
scheme=alipays://platformapi/startapp?appId=2019072665939857
&page=pages%2Fmy-station-type%2Fmy-station-type
&enbsv=0.2.2108270116.35
&chInfo=ch_share__chsub_CopyLink

可以看到,解析后的链接中包含了四个参数。分别是 scheme、page、enbsv、chInfo,根据《微信小程序也能一键直达,除了健康码你还想跳转什么?》中微信小程序的格式,不难猜出 scheme 和 page 拼接之后就能打开指定路径,此处的 page 就等价于微信的 path。所以删除前后无用的参数,只保留 scheme 和 page,就可以构造出如下的链接地址:

alipays://platformapi/startapp?appId=2019072665939857&page=pages%2Fmy-station-type%2Fmy-station-type

有了 URL Scheme 之后,就可以打开快捷指令进行构建了(下简称为「捷径」)。新建捷径,选择「打开 URL」模块,将构造好的 URL Scheme 地址填入,编辑好捷径的名称和图标之后就制作好了。

此处有一个小技巧需要介绍,捷径在只有一个动作的情况下,无法显示自定义的捷径图标。这个时候可以在捷径里随意加一个无意义的变量解决这个问题,例如加入一个「文本」动作。或者也可以将 URL Scheme 放在「URL」模块里,然后使用「打开 URL」打开它,两种解决方法都是可以的。

为了方便读者使用,点击即可下载 支付宝随申码

注意要点

  1. 该方法可以作为通用 URL Scheme 查询指南 中「网页书签法」的扩展方法,在之前的文章中只讲到了支付宝打开小程序,因为当时的局限性不知道有 page 参数可用,所以此处补齐这个扩展方法。
  2. 对于需要登录授权的小程序,例如通信行程卡,可能需要短信验证码才可以登录。
  3. 和微信小程序一样,如果拍照使用的是官方的接口,一样无法获取到页面路径。

云闪付

《微信小程序也能一键直达,除了健康码你还想跳转什么?》文章发出后,作者群友 @sleep9ull 询问我,是否能够抓取出云闪付的小程序地址,据他介绍云闪付打开随申码无需次次授权,只需要一次授权,长期有效。稍微研究了一下,也找出了云闪付的 URL Scheme 跳转地址结构,格式如下:

upwallet://applet?toLink=【小程序 URL】&encryptAppId=【小程序 ID】

接下来趁热打铁,看看如何实现云闪付的小程序地址抓取。打开随申码小程序页面,同样是复制链接,依次点击右上角的「更多」图标 >「分享」>「复制链接」。

但是此时,如果还想使用和支付宝一样的方法,是行不通的了。因为此时已经是一个长链接了,复制到 Safari 打开也没用了。这次直接对链接进行分析,由于这个链接中包含了个人身份信息,我对链接做了一些处理,替换了某些参数值来介绍。所以替换后的链接地址如下所示:

https://base.95516.com/s/wl/WebAPP/helpAgree/page/help/shareRutineHelp.html?params=ewogICJ0b0xpbmsiIDogImh0dHBzOi8vc3Vpc2hlbm1hZnJvbnQxLnNoLmdvdi5jbi9zbXp5L2Z5ei9xcmNvZGU/ZnJvbT15c2YmYWRkcmVzcz0mbG9uZ2l0dWRlPTEyMC4wMCZsYXRpdHVkZT0zLjAwJnR5cGU9RllfUVJDT0RFXzAxJm13PXNzcGFpSmFtZXNIb3Bib3VybiZpc1JlbGF0aW9ucz0wJm13Rm9yUmVsYXRpb25zPXZuS0FreDc3JTIwbTNGNjdPcjdTU0RPc1N3RnFncjBFUWYvb0VWMTJFclVWZWRWRGQvc3NwYWkiLAogICJlbmNyeXB0QXBwSWQiIDogImJhNDMxYmY3MDUwNzMxYTAiCn0=

可以看出,它不同于曾经见到过了支付宝或者微信小程序链接,后面跟着一堆 ABCD 字母,看到最后的等于号,不难猜出这是一段 base64 编码。将这段 base64 复制,在终端使用 base64 命令进行解码。如果不习惯使用终端,也可以使用在线的 base64decode.org 进行解码,解码后的内容如下所示:

{
  "toLink" : "https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?from=ysf&address=&longitude=120.00&latitude=3.00&type=FY_QRCODE_01&mw=sspaiJamesHopbourn&isRelations=0&mwForRelations=vnKAkx77%20m3F67Or7SSDOsSwFqgr0EQf/oEV12ErUVedVDd/sspai",
  "encryptAppId" : "ba431bf7050731a0"
}

此处有两个参数,toLink 和 encryptAppId,而 encryptAppId 就是所谓的小程序 ID,没有值得研究的地方。接着将此处的 toLink 参数单独拿出解析一下,将它切分一下,看看各个参数值。可以看出此处有 8 个参数,包含了跳转来源、地址、经纬度和 mw 等参数。

https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?
from=ysf
&address=
&longitude=120.00
&latitude=3.00
&type=FY_QRCODE_01
&mw=sspaiJamesHopbourn
&isRelations=0
&mwForRelations=vnKAkx77%20m3F67Or7SSDOsSwFqgr0EQf%2FoEV12ErUVedVDd%2Fsspai

经过实验,此处只需要保留一个 mw 即可成功认证。请注意此处的 mw 等效于个人身份标识码,所以请不要将这个链接随意分享。最后删除无用参数,重构链接得到以下结果:

https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?mw=sspaiJamesHopbourn

刚才在开头提过了云闪付小程序的基本结构,接下来就是构建 URL Scheme 了,拼接两个参数之后,得到如下的 URL Scheme

upwallet://applet?toLink=https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?mw=sspaiJamesHopbourn&encryptAppId=ba431bf7050731a0

同样将它创建为一个捷径。新建捷径,选择「打开 URL」模块,粘贴这个 URL Scheme 地址即可。

云闪付对参数进行了 base64 编码,但是经过解码之后一样可以得到关键信息。其实看过云闪付的桌面书签代码之后,感觉它做的还是比较好的。内部使用了 base64 和字符串拼接之后才能得到 URL Scheme,增大了直接获取 URL Scheme 的难度。

但是其实也是有通杀方法的,不去分析网页代码,无论如何最终书签都是要跳转应用的。所以另一种方法是使用 URL Scheme 查询指南 中「网页报错法」,在电脑上伪装 UA,直接打开链接,一下就能获得到完整的 URL Scheme。云闪付小程序的 URL Scheme 基本格式正是使用这个方法获得。

小结

现在,三个常用应用:支付宝、微信、云闪付的小程序 URL Scheme 结构都介绍过了,至于要如何使用,就看各位读者自行发挥的能力了,花几分钟动手折腾一下还挺有趣的,亦可为日后使用带来不少便捷。下面是三个软件的跳转情况对比图,读者可以选择合适的软件进行跳转。

最后,再来总结一下这三个软件小程序跳转的基本格式

weixin://app/wx5aa333606550dfd5/jumpWxa/?userName=【账号原始 ID】&path=【页面路径】

 

alipays://platformapi/startapp?appId=【小程序 ID】&page=【页面路径】

 

upwallet://applet?encryptAppId=【小程序 ID】&toLink=【小程序 URL】

彩蛋

在部分学校里的菜鸟驿站站点,收取快递可能需要出示身份码扫描。在研究菜鸟小程序的身份码的时候,使用上面的「支付宝分享法」解析出了淘宝直达链接,有需要的读者也可以自取,使用 URL Scheme 一件跳转之后,就不需要额外再下载「菜鸟驿站」了,只需要捷径点击一下,即可直接打开身份码,URL Scheme 地址和演示效果如下。

tbopen://m.taobao.com/tbopen/index.html?h5Url=https%3A%2F%2Fmarket.m.taobao.com%2Fapp%2Fcn-yz%2Fmulti-activity%2FauthCode.html

 

关联阅读

> 下载少数派 客户端 、关注 少数派公众号 ,了解更妙的数字生活 🍃

> 想申请成为少数派作者?冲!