链接是个微博短链:。放浏览器里访问,解析出完整的地址:。打开Web调试器看了下,页面中不仅百度统计代码外,核心代码如下:
if (!/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) && / baiduboxapp/i.test(navigator.userAgent)) {
window.location.replace('bdbox://utils?action=sendIntent&minver=7.4¶ms=%7B%22intent%22%3A%22weixin%3A%2F%2Fdl%2Fbusiness%2F%3Fticket%3Dt59a2235a3662135bfb0e8f7edccc22c5%23wechat_redirect%23wechat_redirect%23Intent%3Bend%22%7D');
} else {
window.location.replace('weixin://dl/business/?ticket=t59a2235a3662135bfb0e8f7edccc22c5#wechat_redirect#wechat_redirect');
}
setTimeout(function() {
document.getElementById("loading").style.display = "none";
},3000);
复制
以上代码的逻辑是:判断不是苹果的设备,并且访问 UA 中包含 baiduboxapp 字符,修改页面联接为:
bdbox://utils?action=sendIntent&minver=7.4¶ms=%7B%22intent%22%3A%22weixin%3A%2F%2Fdl%2Fbusiness%2F%3Fticket%3Dt59a2235a3662135bfb0e8f7edccc22c5%23wechat_redirect%23wechat_redirect%23Intent%3Bend%22%7D
复制
否则更改页面联接为:
weixin://dl/business/?ticket=t59a2235a3662135bfb0e8f7edccc22c5#wechat_redirect#wechat_redirect
复制
因为主要是研究陌陌唤醒,先不看 baiduboxapp,直接看陌陌激起短链 weixin://dl/business,谷歌搜索下发觉是陌陌第三方公众号临时会话插口。这是一个内部的隐藏插口。链接中见到短链有个 ticket 参数,多刷新几次页面,ticket 参数会发生变化,但是激起页面的联接没有变。现在关键点成了如何按照自己的页面生成合法的 ticket 参数。
在想如何生成 ticket 的时侯,自然会想到陌陌是怎样解析这个参数的,看看能不能从解析的逻辑中反推出生成的逻辑。找了客户端的朋友,反编译安卓微信客户端,发现客户端里的逻辑很简单,拿到短链后,直接传递给陌陌服务器,服务器就返回了 真实的访问地址。
https://open.weixin.qq.com/sns/webview?url=http%3A%2F%2Fun.m.jd.com%2Fcgi-bin%2Fapp%2Fappjmp%3Fto%3Dp.imtt.qq.com%252fh%253fd%253d7%2526b%253dtrade%2526type%253dsite%2526id%253d4061%2526u%253d%252568%252574%252574%252570%25253a%25252f%25252fvip.3.js.cn%252Fyyzs87.php%253Fticket%253D6148523063446f764c3364344c6d707764336775636d566b4c3364344c7a426c4e3251314d546b314f47466a4e7a6b314e5464694e57566a59575a6a4e546779595749324d6d51774c6d68306257772f644430784e54457a4d4451334d7a4d7a%2526from%253dshare%2526bid%253d13276%2526pid%253d1226104-1438221658%2526_wv%253d1027%2526sid%253dfavewofji%2526type%253d3%2526rnd%253d0.8738031948450953&appid=wxae3e8056daea8727&ts=1513047962&nonce=rjWsn6jYHv&sig=1c3d50cc9b948b2736398e1c1c66c32a&key=ad88abc27c4d295460ca3b05b7ed7a9a723ec81fbdb1e45386946920883a470f9b6e90cd75da4f05b8394a798f4b9446e673410a32c660224c93802cc47f427aa043de1c15cde5463ce4ad0ee5fecdd0&uin=MzY5MDEwNDExNQ%3D%3D&scene=0&version=26050839&pass_ticket=hKkz2FEs91MHFXEbW0vcmXwsfnKdDGqmvpQ1GG0cIYlqNFr5OcrssuH8DwD%2FSFmW
复制
后面就是陌陌外置 webview 浏览器访问这个地址,解析出最后的落地页
ticket解析访问地址全在服务端,分析不下来哪些东西。只能从陌陌服务器返回的链接看下有没有哪些有用的信息。从 ***到 中间转换了好几次。
好了,这样整个流程都通了。
自己拼一个链接测试一下,通过易迅的链接跳转到陌陌:%2Fh%3Fd%3D7%26b%3Dtrade%26type%3Dsite%26id%3D4061%26u%3Dhttp%3A%2F%2F
现在关键问题是易迅开发平台生成 weixin://dl/business/?ticket= 连接的时侯有个白名单机制,尝试了几种联接,都未能通过白名单验证。找了一个易迅云服务平台的咨询,得到的答复是唤醒陌陌的插口,现在被人恶意调用,存在很大的安全风险,京东内部早已构建了白名单和黑名单的机制,打击恶意调用行为,不接受也不会透漏白名单。
后续
前面搜索相关内容的时侯还查到 51万年历,陌陌,招商银行都有生成 weixin://dl/business/?ticket= 连接的服务。想到既然易迅的插口是 手Q 给的,那 手Q 自己必然也有插口权限,并且应当会有其他类似易迅的合作顾客会有权限,像上面几家公司。后面营运又给了几个联接,解析下来的地址是 域名下的,确认了上面的推测。