分享

关注微信公共账号就能上网是怎么回事

 FHT图书馆 2014-06-20

不请自来,本人之前接私活,做过类似项目的 TPM,在本人所接手的项目中,用户的体验其实没有之前诸位说的那么差,至少我们已经做到了一次关注操作后,用户即可上网,并且下次用户再来上网时无需重复操作,做到无感知的用户操作体验。关于这个路由器的技术实现,如果不出意外的话,应该是这样的。


知识预备



  • 一般商家的微信公众号都是开了微信公众号的 API,你需要在微信公众号管理页面中配置商家的服务器地址以及一些公众号权限认证的信息,该服务器是用来接收腾讯发过来的各种微信事件,比如有人关注了公众号,有人取消关注了公众号,有人向公众号发送了微信并回复等。所以,当你关注了该公众号后,商家的服务器能够得到你的微信账号信息并入库记录,当你取消关注后,商家服务器同样能够把你在他们自己数据库中的记录标注出来。


  • 无线路由器一般通过手机 WiFi 的 MAC 地址来选择放行 / 禁止其联网的行为。


  • 无线路由器一般有类似管理接口,使得像 RADIUS 服务器可以通过该接口控制无线路由器对终端 MAC 地址的过滤行为。


使用场景


场景 1- 终端用户在商家 WiFi 网内,关注商家公众号


用户 A 通过手机终端连接商家无线路由器(下面将以 AP 代替),该 AP 无密码限制,AP 得到了该终端的 MAC 地址 A_mac_address。此时用户发现连上 WiFi 后不能上网,浏览任何网页都会跳到一个广告页面,页面内容为告知用户在 AP 网内使用微信关注公众号(该 AP 放行微信 URL 以及商家自己服务器的 URL,如果用户未验证的话,AP 就会每隔几分钟就会自动踢掉用户,使得用户 WiFi 断开连接,用户必须手动再次连接该 WiFi 才能重新连接,防止用户蹭网刷微信)。于是用户照做,关注商家公众号后,公众号会向用户 A 推送一条包含“一键上网”链接的消息,用户在 AP 网内点击该链接后直接访问商家的 RADIUS 服务器,服务器能够取到该请求发送者的微信 ID,MAC 地址等,然后核对该微信 ID 是否已关注商家公众号,如果已关注,则将该 MAC 地址和微信 ID 一起关联入库,只要该用户 A 一直关注该公众号,在商户 AP 下就能够一直保持放行权限,上网无阻。使得 A 后续再次来到该商户连接 WIFI 上网达到用户无感知的效果。


场景 2- 终端用户在自有网络内(手机蜂窝数据,其他 WiFi 下),关注商家公众号


用户 A 通过非商家 WiFi 环境中关注商户公众号,用户 A 的微信 ID 被商户记录入库,被推送“一键上网”链接,用户点击该链接后被告知必须在商户 WiFi 内执行此操作方有效,于是用户等到某天来到该商户 AP 网内,再次打开微信,点击之前的“一键上网”链接,访问商户 RADIUS 服务器,radius 服务器记录该用户的微信 ID,MAC 地址,比对之前的已关注微信 ID 表后放行该用户的联网行为。


场景 3- 终端用户取消关注商家公众号(无商家 AP 网内限制)


用户 A 在任何公网 WiFi 环境下,登录微信,取消关注该商户公众号,该取消关注事件会通过腾讯服务器推送到商家服务器上,商家服务器标注该微信 ID 关联的终端 MAC 地址,使得该终端在商户 AP 下的上网行为被限制。


题外话


作为商家,搞这么多服务器实在太麻烦,所以现在市场上的微营销平台都将微网站功能平台化,每个入驻商户分配个子域名,有现成的类似 CMS 系统或者模板给商家展示各种广告,商品信息等。RADIUS 服务器有的集成在 AP 路由器里,有的则是微营销平台提供的统一服务器,并且都给商户提供了配置管理的界面,对于商户来说,你只用买他们的 AP 路由器,交会费入驻他们的微营销平台,注册个公众号并做一些简单的配置就可以了。


========


我所接手的项目由于 AP 限制,是需要点击“一键上网”链接实现 oAuth Web 认证。还有一种只要关注后直接认证上网,无需点击“一键上网”按钮。我猜测应该是无线 AP 会针对未认证 WiFi 终端进行数据包分析,抓取“关注公众号“的微信请求数据报,从而得到 MAC 地址,用户微信 ID,关注商户 ID 等信息,再访问远程权限控制服务器,查询该商户微信 ID,用户微信 ID 是否已匹配入库,如果是的话就放行该 MAC 地址的终端。


以上


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多