注册会员   登录
代理IP知识问答
微信关注即可使用 Wi-Fi,取消关注即断网的路由器是怎样实现的?
提问时间:2016/6/26 12:49:35    楼主:未知网友   阅读量:6000
最近看到这个公司的一款路由器,珠海市微·商智能科技|MBI,自主研发
安装在店里后,打开微信关注企业微信账号即可免费wifi,取消关注就不能上网了。
这个是怎么控制的呢?
1楼(站大爷用户)

了解两个开源项目,分别实现认证的客户端和云端:wifidog、authpuppy
2楼(未知网友)

ACL的可行,需要路由能够动态接收AC L
3楼(未知网友)

这个微信无线wifi现在很流行啊,我们公司就在卖。
4楼(未知网友)

是不是可以简单的理解为,路由本身没有密码,用户可以连接但被mac地址禁用,需要关注微信来获取id和手机的mac地址,然后发送到服务器对商家的关注id进行匹配的扫描,如果数据库扫描到就通过放行,找不到就禁止
5楼(站大爷用户)

麦德龙的最简单,关注微信后发wifi密码
6楼(匿名用户)

6/22更新
这个题目好久没出现在TL上,今天突然看到一个 @play play的更新, 他其中的某些明显的错误让我不得不更新这个答案。当然,@play play以一个同行创业者的姿态来一同论述这个问题,对大家看清楚商业WiFi会更有帮助。

对于他题目中某些说我错误的地方,我不反驳,因为这只是对商业模式认识的不同,他的答案也很长,跑题居多,我不想一条条去反驳,我只对其中涉及问题的一条做相关说明:

不需要使用微信公众平台高级接口:用网页、水牌、桌贴等提示用户关注商户的微信公众账号,然后分两种情况:A. 用户刚刚关注,服务器在用户关注时自动下发的信息(一般是多图文,当然也可以要求用户发“上网”关键字),其中有一条目的是引导用户点击,例如“点此免费使用WiFi”——该条目对应的url里带了一个对应该设备(用户)的唯一的、一次性的token——用户点击该链接后转到对应的页面——此时服务器从链接中获得了这个token——服务器通知AP(放在商户现场的路由器)放行该设备(用户);B. 用户曾经已经关注过,请对该商户的微信公众账号发送某个关键字,如“上网”,或在商户微信公众账号菜单中点“上网”——服务器返回图文信息,其中有一条引导用户点击,后续同A
——核心思路:用户只要能和商户的微信公众账号互动,就意味着已经关注了该商户。因此,只需要将商户微信公众账号设为开发模式,并接入到相关服务器即可,不需要开通高级接口。
@play play也许不是技术人员,这块有明显的错误也是可以理解的。我指出是为了让大家不要被错误答案迷惑,我下面说的逻辑应该只要数学好点的都能理解。

微信公众平台是有编辑模式和开发模式的, @play play说的“不需要使用微信公众平台高级接口”,我理解为是不需要使用开发模式。
我之所以说@play play的这点是错误的,就是因为编辑模式只能发送固定的文字图片等信息,不可能做到mac和token绑定。这明显是 @play play对技术不了解导致的流程理解错误:
1、用户发送信息&添加微信公众号&点击菜单按键,可以触发事件。
2、事件触发后,微信开发模式服务通过开发模式走接口,将用户token发给服务端,并请求实时生成一条上网链接,有效时间5分钟,有效次数1次(可自己调整)。
3、微信公众号将链接发给用户
4、用户点击进入一个页面,页面记录mac地址并绑定相应token,允许该mac地址上网

逻辑性好的人大概可以知道,mac与token绑定的关键在于那个“实时生成的链接”,这个链接地址不可能是个死链接,而编辑模式只能提供一个死链接。死链接意味着无论是不是关注公众号,你只要访问这个链接就可以上网。这就是 @play play最大的逻辑漏洞。


另外, @play play 说的“用户点击该链接后转到对应的页面——此时服务器从链接中获得了这个token”,目前我们自己实现不了在网页上获取用户token这个技术,理论上也应该实现不了——不然我随便弄个网页让微信用户点击到webview去就能收集到用户token了,这个其它微信第三方做开发的小伙伴们应该会比较了解。
希望 @play play能分享下这个技术的实现原理:)

-----------------原答案--------------------
看到这么多答案主要是以猜测为主,只有 @张强的答案才是靠谱的,本人作为这个行业从业者来吐点干货。
目前国内真正有自主研发能力商业WiFi公司只有为数不多的几家,我是其中一家公司的产品经理,圈子太小所以匿了。
1、国内做商业WiFi的公司粗算有大约400家
其中贴牌公司占90%以上,而按照研发能力分主要有这几个等级
a、完全不具备任何开发能力,路由器是贴牌从别的公司买来的。
b、具备一定的wap页面开发能力,可以对商家wifi连接成功的微网站做一定的开发优化
c、拥有固件开发能力,可以对路由器功能做定制,包括微信登陆、微博登陆等方式的开发(实际上是路由器mac地址控制类的技术)。
d、掌握了无线射频探测技术和初步商业化的能力。
e、有稳定的代工厂和硬件设计能力。

其中处于cde这个阶层的,最近比较热的有杭州的wifisong和树熊(witown)。
wifisong早期就一直在主打通过无线射频来统计客流的技术,并且是自己设计硬件找代工厂生产,综合研发实力在业内比较强。
树熊前段时间发布会上提到了无线射频探测技术,但是还没看到实际应用,硬件用的是华3的设备。树熊的wap页面开发能力强悍,已经超过一线微信微站服务商的设计研发能力。
杭州的小草网络,在wep页面设计研发能力上我个人觉得也比别的公司强很多。

2、认证方式目前所能做到的最简方式,除了 @张强说的,实际上还有一种。
做商业WiFi的公司有两个思路,一个是想做大数据,一个是想做商家服务。前面提到的wifisong和树熊都是想做大数据,他们必须要将用户的微信号和mac地址做绑定才能做大数据的事情,所以需要用户发送上网指令,点击一个实时生成的连接或图片,跳转到一个页面,做微信号和mac地址的绑定。
还有一类公司,是专注于商家服务,帮商家运营好他的微站和微信公众号或微博,比较典型的就是杭州的小草网络,不需要用户点击跳转,只需要用户通过微信号的自定义菜单点击上网按钮(访问固定网址),即可上网,这样也无法做微信号和mac地址的绑定,但是对用户来说更简单。
(有看不懂的留评论回头补示意图)

3、更好的认证方式需要跟微信合作
我们这行都希望能做到题目描述中的状态,但是现实是不可能的。因为要通过关注事件和mac地址做相关,前提就只能是微信告诉你用户的关注事件本身,(至于说抓包解密这种逗比的解决方案就不要再讨论了好吗?)而这根本是不可能的。
7楼(站大爷用户)

不请自来,这两天要做工程,通过题主的链接找到了珠海市微·商智能科技|MBI,自主研发这家公司。我只是简单的问了句你们是部署软件还是怎样,在我没有对我的需求和情况进行任何说明的情况下,客服人员回答我,我们是做大工程的,不单卖系统,想要买单各产品就请去淘宝,想要了解我们的产品就请浏览网站。其余一律不答。
作为一个客服,代表的是公司的脸面。如果一个客服这个态度,可想而知,这家企业的经营态度是怎样的了。可能在客服眼中,我们只是做小工程的,不值得和他联系,打400电话除了占线也就是没人接听。
如果题主是为这家企业做广告,那么我只能说,这个广告做的真是好。
8楼(未知网友)

@张强 的对原理描述得比较详细,尤其是在对 “普通微信三方oAuth授权认证”原理说明上。
按照“必智?微信关注即登录上网”的比较含混的白皮书说明,似乎不是“普通微信三方oAuth授权认证”。这里就自己理解做一些阐述。
声明:由于没有“珠海市微·商”的产品,无法验证其白皮书 http://www.mbisolution.com/products/weixinsys.php 中各种功能描述是否属实或有夸大成分,因此如下描述和推断不一定准确。

先大致说明一下涉及的几个概念和机制:
1、AC、AP以及ACL
做WIFI实施部署,涉及几个概念:AP、AC、无线路由器、认证,简单说来:
AP就是无线接入点。
无线路由器大致可以理解为:AP+路由
AC是用来管理AP用的,可以对AP进行集中式管理。这在诸如连锁店、大公司部署需要支撑上百个接入点以及复杂的控制措施(例如多级认证,微·商白皮书中提到的全国漫游)等就需要AC。
AC最重要的职能是完成对接入设备的认证、授权、计费(AAA),一般采用Radius协议来完成。认证、授权的凭证包括终端的MAC地址等等信息(Radius系统一般放在云端,大家常用的宽带拨号上网的认证都是基于Radius认证)。

终端设备要接入网络,必须在AC的ACL(访问控制列表中)有对应的匹配项,对终端的标识包括MAC地址、IP等信息。
一个粗略的通过微信认证上网的操作流程:
a、用户连接wifi,AC查看ACL列表中是否有对应的信息(主要是MAC地址),如果有效,则直接让用户上网;如果无,则给用户在ACL中临时增加一条有时间限制的记录,以便于在未经认证情况下,能够上微信完成对公众号的关注。
值得注意的是:ACL列表不一定是AC本地的,有可能是从中央Radius服务器获取的,例如在允许漫游的情况下。
b、用户关注公众号,完成认证和授权过程,AC获取用户的MAC地址等信息,从ACL中删掉用户未授权认证的临时上网记录并新增一条经过认证授权的记录,用户可以正常上网。
c、用户取消关注公众号,则从ACL中删除掉对应的记录
ACL的信息属于7层协议的网络层,并没有应用层的OpenID等信息。

2、公众平台“开发模式”
如果在微信公众平台中将高级功能设置为“开发模式”,则在用户执行关注公众号、取消关注等操作时候,公众平台都会以事件方式通知“开发模式”定义的接口。
公众平台接口标识一个微信用户并不是使用用户微信号,而是用类似o0geNuJmbuDIwnMMCOhF6hFFLEqU这样的字符串,实际上就是OpenID(接口协议中的fromusername)。
而OpenID之类的信息在7层协议中是在应用层(第7层)

3、OpenWRT以及管理系统
目前各种智能路由器(极路由、果壳、小米等)都是基于OpenWRT系统。而对OpenWRT系统本身的管理都是基于wifidog等管理系统,可以与外部系统(例如微信公众平台)直接对接。


因此回到话题,最本质的问题其实就是:
AC是怎样来匹配ACL列表中的MAC和OpenID的呢?

由于不知道“必智?微信关注即登录上网”是否需要商家在公众平台中配置指向无线路由器(AC或AP)的接口地址,因此分成两种情况讨论:
1、如果需要配置,则:
由于有关注、取消关注等事件时候,都会有url地址通知AC的服务器,由于是TCP链接,在关注、取消关注的报文的TCP报文中本身就有MAC信息,在HTTP报文中有OpenID信息,因此只需要在同一个报文中就能获得MAC和OpenID的对应关系。

2、如果不需要配置,则:
由于要识别用户关注、取消关注事件的报文,在应用层并无明确的特征(url回调),此时后可以通过抓包获取关注、取消关注事件的报文,然后对符合符合特征的报文进行处理,并不难,但采用此种方式在维护较为麻烦,可能性不大。

与其他支持微信认证的智能WIFI(例如rippleos之类)解决方案的差异(个人感觉):
1、AC+AP一体化方案:其他厂商一般是根据用户接入规模大小,分为AP、AC+AP的方案,如果接入终端数少,则直接采用AP方案,如果规模较大,则采用AC+AP方式(AC和AP是独立的终端)。而必智的方案算是AC+AP一体化方案。
2、集中认证:应该采用了独立Radius系统,其他厂商较少提供多店集中认证、漫游的方案。
3、宣传策略更貌似高大上,技术上其他有OpenWRT自主研发能力的厂商也能做,但其方案在简化接入、面向多店集中认证上出发点确实不错,另外在整体解决方案上包装得更高大上。
9楼(未知网友)

不请自来,本人之前接私活,做过类似项目的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地址的终端。

以上
友情链接 (合作QQ207309712):  每日免费代理IP  代理IP知识问答  网站地图


©CopyRight 2012-2017    ICP备案:辽ICP备17012256号-2   
 
客服QQ:207309712   投诉建议:2219765152    站大爷代理IP交流群:417568497    爬虫开发者交流群:343030927

警告:本站资源仅限用来计算机技术学习参考及大数据爬虫应用等合法行为,用户所有操作行为均有日志记录存档并保留2个月,用户若擅自利用本站资源从事任何违反本国(地区)法律法规的活动,由此引起的一切后果与本站无关。