首页 > 编程开发, 网络 > 让你的APP支持微信二维码扫描下载

让你的APP支持微信二维码扫描下载

2013年12月16日

今天同事反馈公司的app无法通过微信二维码扫描下载,经测试发现包括京东、淘宝的APP都无法通过微信二维码扫描下载,考虑可能是微信此版本的一个BUG。后测试腾讯的APP却能从微信的二维码扫描下载,才意识到这是微信的一种限制。很不理解腾讯的想法,别人看到二维码,才想到用微信的二维码功能去扫描,在此微信是实现目标的工具,而腾讯却好像担心自己的用户会流失一样,不让用户扫描除腾讯公司以外其他公司的app,这不是失去了它本身存在的意义了么。

既然是限制,考虑到腾讯会采用三种方式:

1、通过域名方式限制:最难、甚至无法破解的方式。
2、通过http头限制:几率最大的方式。
3、通过临时生成的key:难破解,但是实现成也比较高,因为腾讯产品的下载连接实在是太多了。

 下面是我对腾讯产品可以通过微信二维码扫描下载分析,解决公司app不能通过微信二维码扫描下载的过程。文中地址仅供参考,随腾讯产品的更新可能会失效,但思路不会失效。

1. 我测的可下载的腾讯产品是“手机QQ2013安卓版本”的下载,下载地址如下:

2. 链接的页面中有一个二维码,通过微信二维码扫描出来后,在微信中打开一个页面,点击页面中的“下载QQ”按钮,即会弹出微信,在浏览器打开下载链接,自动下载QQ。

3. 二维码扫描出来的页面地址:

4. 在Chrome中分析二维码扫描出来的页面,发现最后的真实下载地址为:

5. 通过linux的curl里面,分析地址的http响应头:

从上面的http响应头可以看出,页面最后被定向到一个IP为119.167.195.61的下载服务器,url中没有域名,所以排除了通过域名限制的可能性。url中有一个mkey,倒是有点像是通过临时key限制的。

6. 将同样的mkey参数附在公司app的下载地址后,在二位码工具中生成二维码,在微信中扫描此二维码,发现仍然不能下载,一片空白,没反应。看看mkey到像是用来统计用户下载的,所以pass掉通过临时key限制的可能性。

7. 再回头看看上面的http头中url的IP地址后面竟然带了个类似域名的"softfile.3g.qq.com"路径,莫非是通过只要url中带了“softfile.3g.qq.com”就能通过微信扫描下载,经测试,果真如此,只要url中带有"softfile.3g.qq.com"或“3g.qq.com”都可以通过微信二维码扫描下载,如下地址都可以:

url中含有"3g.qq.com"关键词生成的二维码通过微信扫描二维码即会弹出到默认浏览器下载app:

让你的APP支持微信二维码扫描下载

总结:很低劣的限制方法,不过应该微信的下个版本就会改成其他方法吧


本文的评论功能被关闭了.