`
shuai1234
  • 浏览: 977546 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

让微信二维码扫描您的APK

 
阅读更多

二维码深入人心,很多App都在官网挂出了可以扫描下载apk的二维码,笔者所在公司的产品也不例外。一般二维码编码的URL不会直接放apk而是放中间地址,通过这个中间地址再跳转到apk所在URL,原因大概是有几个:

       1. 让网址尽可能短:信息越少,二维码的尺寸就可以做得越小,嵌入的LOGO可以更大,识别率也会越高。

       2. 让iPhone和Android通过同一个二维码下载:在这个中间地址根据User Agent提取操作系统,然后根据操作系统来决定跳转到iTunes Store链接、apk下载地址还是产品介绍页面。

       3. 便于数据统计:在这个中间页可加入一些下载量统计功能,虽然也可以通过Webserver的Access Log实现,但中间页的方式显然更简单。

       现在,又多了第4个原因:支持微信扫描

       笔者在查看访问日志时发现二维码地址被微信扫描时,一般同一个客户端会重复好几次,最后竟然都是用别的浏览器下载的,自己用微信扫了扫才发现扫出来一片空白。

       读者朋友可以拿起Android版微信5.0“扫一扫”百度应用商店里的二维码,不出意外的话也是一片空白的。原来微信“扫一扫”中对apk链接加入了白名单机制,只有腾讯自己域名下的apk才可以通过扫一扫下载。

       那么如何突破这个限制,让微信安卓版能扫描下载你的apk?

 

识别安卓版微信“扫一扫”

       首先,我们要识别出微信安卓版的UA,才能对症下药。这里笔者从访问日志中摘取了一段以供参考:

Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9100G Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.0.1.352

        对比普通安卓浏览器的UA

Mozilla/5.0 (Linux; Android 4.1.1; MI 2 Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.58 Mobile Safari/537.36

      可见,为了兼容性,微信安卓版扫一扫内置浏览器(其实就是Webview)的UA是严格遵守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中包含腾讯的域名,都可以顺利下载。

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

 

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

分享到:
评论
1 楼 zkzqzzz 2016-08-01  
博主威武!

相关推荐

    解决微信扫描二维码下载APK问题

    JAVA代码,解决微信扫描APK二维码空白,不能下载APP的问题

    安卓条码扫描二维码相关-仿微信二维码制作二维码扫码读取名片信息.rar

    这个压缩包文件“安卓条码扫描二维码相关-仿微信二维码制作二维码扫码读取名片信息.rar”似乎提供了一个实现类似微信功能的示例项目,让我们来详细探讨一下相关的知识点。 1. **二维码技术**: - 二维码是一种二维...

    Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

    在Android开发中,实现二维码和条形码的扫描功能是一项常见的需求,比如微信中的二维码扫描。本教程将基于Google的Zxing开源库,讲解如何在Android应用中集成二维码和条形码扫描,并实现类似微信的扫描效果。Zxing,...

    基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

    本教程将深入探讨如何基于Zxing在Android应用中实现类似微信的二维码扫描效果,以及如何生成二维码。 首先,我们需要在项目中集成Zxing库。可以通过添加Gradle依赖来完成这一操作: ```groovy dependencies { ...

    微信Hook读取二维码源码

    要实现微信Hook读取二维码,我们需要编写一个Xposed模块,该模块会监听微信内部处理二维码扫描的函数,并在触发扫描事件时捕获二维码数据。这需要对Java和Android SDK有深入理解,特别是对反射和Intent机制的运用。 ...

    【毕业设计】二维码识别-使用opencv在Android上开发的微信二维码识别项目源码+演示apk+详细使用说明.zip

    本项目是针对二维码识别技术的一次毕业设计,主要利用OpenCV库在Android平台上实现微信二维码的扫描与识别功能。OpenCV(开源计算机视觉库)是一个强大的图像处理和计算机视觉库,它提供了丰富的图像处理和分析功能...

    apk微信扫码下载页面

    2. **微信扫码功能**:微信内置了二维码扫描功能,用户可以通过相机扫描二维码来获取信息、打开网页、下载文件等。在这种情况下,扫描二维码可以直接跳转到下载页面,用户点击下载按钮即可获取APK文件。 3. **安全...

    微信扫码下载app页面

    在微信扫码下载App的场景中,二维码包含了App的下载链接或者特定的识别码,当用户通过微信扫描二维码时,微信会解析这些信息并引导用户进行下一步操作。 2. **Android与iOS下载机制**:Android系统的App通常通过...

    ZBar实现微信条形码二维码扫描界面

    本篇文章将深入探讨如何使用ZBar库来实现一个类似微信的条形码和二维码扫描界面。ZBar是一个开源的图像识别库,支持多种一维和二维条码格式,如EAN、UPC、Code39、QR Code等。 首先,我们需要了解ZBar的基本使用。...

    Android应用源码之二维码扫描案例

    这个"Android应用源码之二维码扫描案例"提供了实现二维码扫描功能的源代码,据描述所述,它的性能优于微信的"扫一扫"功能。 首先,我们需要了解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,...

    扫描二维码(zxing)

    本文将详细讲解如何使用ZXing库在Android应用中实现二维码扫描功能,并提供相关的代码示例。 首先,我们需要在项目中引入ZXing库。如果你使用的是Gradle构建系统,可以在app模块的build.gradle文件中添加依赖: ``...

    轻松实现微信中扫二维码直接下载APP(整合IOS和安卓).docx

    为了解决这一问题,商家需要采取一种策略,使得用户在微信内扫描二维码或点击链接可以直接跳转到外部浏览器进行APP的下载,无论用户使用的是iOS还是Android设备。这种功能的实现可以通过微信跳转其他浏览器打开下载...

    微信扫一扫智能判断IOS和Android

    这个功能不仅仅局限于扫描二维码,还可以实现各种智能化操作,如支付、添加好友、获取信息等。在这个特定的场景中,"微信扫一扫智能判断IOS和Android" 是一种技术手段,旨在通过用户使用微信扫一扫时,自动识别他们...

    扫码下载app代码说明(java,web)

    2. **扫描识别**:用户通过手机上的二维码扫描工具(如微信、支付宝等)扫描二维码,扫描结果会被解析成URL。 3. **系统检测**:客户端(通常是扫描软件)检测当前用户的操作系统,如果是Android,它会直接打开下载...

    不用扫描二维码上微信.pdf

    然而,在某些特殊情况下,例如手机无法正常使用或丢失,用户可能需要在没有扫描二维码的情况下登录微信。本文将为您详细讲解如何实现这一操作,让您在不依赖手机的前提下,也能顺利在电脑上使用微信。 首先,让我们...

    android二维码扫描程序

    这是我之前做过的二维码项目的源码,将Zxing包进行了精简,扫描速度很快,可以直接加入项目中,里面有我详细的注释,加载到工程中只需要更改一下Android的版本就可以运行了

    微信实现自动跳转到用其他浏览器打开指定APP下载

    在这个问题的背景下,本文讨论了如何让微信在扫描二维码或点击链接后,跳转到外部浏览器来完成APP的下载。这样做的好处是,即便微信屏蔽了特定的链接,用户依然可以使用手机默认浏览器打开指定的网页进行下载。 ...

    微信判断浏览器自动弹出遮罩层【完整代码】

    在微信环境中,有时候我们需要针对特定的浏览器行为做出反应,例如防止自动弹出遮罩层。这种情况通常发生在用户打开一个网页链接时,微信内置浏览器为了提供更好的用户体验,可能会自动添加遮罩层来阻止页面的默认...

    xamarin android使用zxing扫描二维码例子

    在Xamarin Android开发中,有时候我们需要集成二维码扫描功能,这时候就可以利用ZXing.Net.Mobile这个库。ZXing(Zebra Crossing)是一个开源项目,提供多种平台上的条形码和二维码读取与生成。在Xamarin环境中,...

Global site tag (gtag.js) - Google Analytics