转载安卓或苹果手机获取URL scheme方法
首先,打开支付宝,来到需要抓取的小程序页面。此处以上海的随申码为例演示,打开随申办小程序,点击顶部的「随申码」按钮进入页面。
可以看出这个一个二级页面,如果想要使用 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」打开它,两种解决方法都是可以的。
注意要点
该方法可以作为通用 URL Scheme 查询指南 中「网页书签法」的扩展方法,在之前的文章中只讲到了支付宝打开小程序,因为当时的局限性不知道有 page 参数可用,所以此处补齐这个扩展方法。
对于需要登录授权的小程序,例如通信行程卡,可能需要短信验证码才可以登录。
和微信小程序一样,如果拍照使用的是官方的接口,一样无法获取到页面路径。
云闪付
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
转载安卓或苹果手机获取URL scheme方法的更多相关文章
- JavaScript&jQuery获取url参数方法
JavaScript&jQuery获取url参数方法 function getUrlParam(name){ var reg = new RegExp("(^|&)" ...
- HttpServletRequest 获取URL的方法及区别
HttpServletRequest 获取请求的URL的方法有: 1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它 ...
- JavaScript获取URL参数方法总汇
现在做页面基本都用AJAX,因此导致操作很麻烦,每次都需要通过JS获取url中的参数值,网上所搜到很多资料,没一次能记住的,也不知道在哪个项目中使用过,现在又需要通过JS获取url参数,因此不能在偷懒 ...
- jquery 获取url 参数方法 以及 解决url中文问题
//jQuery 动态给a 标签赋值 跳转 新的页面打开. /* <a class="btn btn-success" id="test" target= ...
- js获取url参数方法
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- request获取url的方法总结
辣么多属性.方法 不用就忘了 ,当需要用的时候挠头也想不到,现在总结一下 以备用 例如:http://localhost/testweb/default.aspx 1.Request.Applic ...
- 【转载】ASP.NET获取路径的方法
HttpContext.Current.Request.PhysicalPath; // 获得当前页面的完整物理路径.比如 F:\XFU.NSQS\project\website\Default ...
- HttpServletRequest常用获取URL的方法
1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数.2.request.getRequestURI() ...
- JS获取URL参数 方法
function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = qu ...
- 【javaWeb】HttpServletRequest常用获取URL的方法
1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数. 2.request.getRequestURI( ...
随机推荐
- Prometheus学习笔记之设置存储时间为30天不生效
0x00 概述 Prometheus升级到2.23进行测试发现,设置存储时间为30天未生效,根据官方说明手册,实际运行后发现数据只能存储几个小时.... --storage.tsdb.retentio ...
- Tensorflow1.0版本与以前函数不同之处
大部分是Api版本问题: AttributeError: 'module' object has no attribute 'SummaryWriter' tf.train.SummaryWriter ...
- 开源 IM 系统 tinode 部署教程| WSL 环境
背景 我们的需求是在本地部署一套 IM 系统,选择 tinode.为便于后端启动,我们采用 WSL 环境,配合 docker 安装数据库,来启动 IM 应用. 解决 WSL 启动前端和后台服务 cmd ...
- flannel 关闭SNAT
flannel 关闭SNAT 默认情况下,flannel 访问集群外网络是通过 SNAT 成宿主机 ip 方式,在一些金融客户环境中为了能实现防火墙规则,需要直接针对 POD ip 进行进行规则配置, ...
- 预览服务器上的html静态网页
预览服务器上的html静态网页 远程服务器中html静态文件不方便直接查看 使用vscode快速预览远程服务器上的html静态文件 我遇到的场景: 我使用windows电脑办公,使用vscode的ss ...
- 探索如何在java中执行python脚本
一个偶然的场景,笔者需要在java代码中执行某个python脚本,并且需要向脚本中传递参数,有可能的话,还要获取该脚本的某些执行结果,回到主程序中继续执行下去. 没有思路之前,狭隘的想法是,java中 ...
- 蓝牙mesh组网实战(智能家居应用)
目录 蓝牙mesh组网目前存在有入门门槛高的问题,比如,嵌入式工程师需要考虑到标准mesh模型的兼容,app开发工程师需要了解mesh协议栈才能直接走mesh与芯片通信.而沁恒官方提供的透传模型简洁易 ...
- C语言中局部变量和全局变量关于释放
1.全局都属于静态,局部区分静态非静态,局部静态和全局的区别在于可见范围,局部能使用外部看不见的意思,本质相同的. 2.如果是全局变量或局部静态变量,编译器会为其分配一个位于静态存储区的地址.这个地址 ...
- 再识redis-2
Redis初识 特点关键字: 高性能Key-Value服务器 ops能达到十万级别 每秒能执行约11万集合 每秒约81000-条记录 主要数据结构 列表 集合 有序集合 散列(别名哈希 Redis的哈 ...
- redis的安装详细教程
redis官方下载地址是:https://redis.io/download, redis 64位下载地址是:https://github.com/ServiceStack/redis-windows ...