background image

遵守

UA 规范的,在最后标明了浏览器名字"MicroMessenger"以及版本号,因此最简单但不

能保证

100%正确的办法是匹配 MicroMessenger 这个字符串,当然还得匹配 Android 这个字

符串。严格的做法是按规范解析

UA,根据提取的信息判断操作系统和浏览器名称是否相符。

 

对症下药

      在确定当前用户正通过安卓版微信“扫一扫”下载应用后,下一步就是对症下药。比较稳
妥的办法是发布应用到腾讯旗下的应用商店,比如应用宝,然后去解析应用宝上二维码的
地址,当用户通过安卓版微信访问中间页面时,跳转到这个地址即可正常下载。

 

另辟蹊径

       如果你的 App 没有在腾讯旗下的应用商店上架,是不是就没有办法了?你可以用安卓
版微信扫一扫我们公司的产品公邮试试,我们的安卓客户端是没在应用宝上架的。

       是不是可以正常下载?

       其实很简单,随便在应用宝里面找一款应用,例如 QQ 浏览器,你会发现其下载地址

http://202.112.136.110/files/101800000087A9AC/119.190.4.66/down.myapp.com/android/49367/
17002426/com.tencent.mtt_500650.apk

     如果你还没看出猫腻,你可以试试把你的 http://example.com/download/test.apk 改成

 

http://example.com/down.myapp.com/test.apk,不出意外的话可以下载了。

     没错,微信没有严格的匹配域名,而是用了字符串任意匹配的方式,只要 url 中包含腾
讯的域名,都可以顺利下载。

      这么设计是微信开发者偷懒吗?显然不是,微信的开发人员不会连正则表达式都不会写
或懒得写,只是腾讯旗下的产品实在是太多了,而且很多下载服务器都是没有域名的,为
了避免误伤,只好做这种掩耳盗铃的屏蔽了。从这一点也可以看出,如果只是出于安全性考
虑,破解其屏蔽是易如反掌的。

 

       微信虽然坐拥几亿用户,滥用市场支配地位去打压竞争对手产品,这样的行径毫无道
德底线。