您的当前位置:首页 > 综合 > 微信关注即可使用 Wi-Fi,取消关注即断网的路由器是怎样实现的? 正文
时间:2024-05-07 04:22:18 来源:网络整理 编辑:综合
最近看到这个公司的一款路由器,珠海市微·商智能科技|MBI,自主研发安装在店里后,打开微信关注企业微信账号即可免费wifi,取消关注就不能上网了。这个是怎么控制的呢?不请自来,本人之前接私活,做过类似
不请自来,本人之前接私活,微信网做过类似项目的关注关注TPM,在本人所接手的即可即断项目中,用户的使用实现体验其实没有之前诸位说的那么差,至少我们已经做到了一次关注操作后,取消器样用户即可上网,微信网并且下次用户再来上网时无需重复操作,关注关注做到无感知的即可即断用户操作体验。关于这个路由器的使用实现技术实现,如果不出意外的取消器样话,应该是这样的。
知识预备
使用场景
场景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地址的终端。
以上
6/22更新
这个题目好久没出现在TL上,今天突然看到一个
@play play的更新, 他其中的某些明显的错误让我不得不更新这个答案。当然,
@play play以一个同行创业者的姿态来一同论述这个问题,对大家看清楚商业WiFi会更有帮助。
对于他题目中某些说我错误的地方,我不反驳,因为这只是对商业模式认识的不同,他的答案也很长,跑题居多,我不想一条条去反驳,我只对其中涉及问题的一条做相关说明:
@play play
- 不需要使用微信公众平台高级接口:用网页、水牌、桌贴等提示用户关注商户的微信公众账号,然后分两种情况:A. 用户刚刚关注,服务器在用户关注时自动下发的信息(一般是多图文,当然也可以要求用户发“上网”关键字),其中有一条目的是引导用户点击,例如“点此免费使用WiFi”——该条目对应的url里带了一个对应该设备(用户)的唯一的、一次性的token——用户点击该链接后转到对应的页面——此时服务器从链接中获得了这个token——服务器通知AP(放在商户现场的路由器)放行该设备(用户);B. 用户曾经已经关注过,请对该商户的微信公众账号发送某个关键字,如“上网”,或在商户微信公众账号菜单中点“上网”——服务器返回图文信息,其中有一条引导用户点击,后续同A
——核心思路:用户只要能和商户的微信公众账号互动,就意味着已经关注了该商户。因此,只需要将商户微信公众账号设为开发模式,并接入到相关服务器即可,不需要开通高级接口。
也许不是技术人员,这块有明显的错误也是可以理解的。我指出是为了让大家不要被错误答案迷惑,我下面说的逻辑应该只要数学好点的都能理解。
微信公众平台是有编辑模式和开发模式的,
@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地址做相关,前提就只能是微信告诉你用户的关注事件本身,(至于说抓包解密这种逗比的解决方案就不要再讨论了好吗?)而这根本是不可能的。
@张强 的对原理描述得比较详细,尤其是在对 “普通微信三方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自主研发能力的厂商也能做,但其方案在简化接入、面向多店集中认证上出发点确实不错,另外在整体解决方案上包装得更高大上。
抱歉,不请自来,主要因为排名第一的回答是错误的——答主根本不熟悉微信接口,也没回答微信关注可使用Wi-Fi相关问题。
先说结论,如何实现题主的需求:
作为一个商业公共WiFi相关的创业者做点补充,希望有小小贡献吧
后面的主要内容:
参考知乎相关问题:
==利益相关提醒==
我自己的创业公司在做:
==================================================
基础原理:
我就从去年做的一个PPT中截几个图,分享点干货吧
智能WiFi的本质:
有知友的回答中提到AC、AP、各种场景等等,很复杂,看这里:
上图中,分两种场景:
微信关注即可使用 Wi-Fi,取消关注即断网的路由器是怎样实现的?
认证流程简图:
基本认证流程:
抛开更多技术细节,主要补充说明:
如何判断当前用户是否关注了商户的微信公众账号?
为了避免太复杂的描述,以下讨论的前提是该商户的微信公众账号启用开发者模式并接入相应的接口实现服务器(一般由我这样的商业公共WiFi服务的第三方提供,或者我的客户),实现思路主要有两种:
至于在微信中发个消息、点个菜单后,微信回复预设好的WiFi密码——这是古时候某些号称国内最早、国内唯一的能用微信和WiFi关联的厂家的玩法,就不讨论了,呵呵
好,这里面有个延伸问题:
已经关注商户微信公众账号的用户 可以无感地自动可以访问网络么?
以上方法中,方法1显然是离不开用户与商户微信公众账号的互动的;方法2,如果用户已经关注过则可以实现无感体验的。
——但是,从商户甚至是商业公共WiFi服务方的利益来说,就是需要让用户在上外网前,先看看有些什么样的信息嘛
当然,我们自己是否定用商业公共WiFi发广告的商业模式的。
昨天和阿里大数据的PM聊的很开心,因为我们是用心做商户联盟、数据采集和拼图的,呵呵
其它细节参考回答:
大数据时代,在街头安装收集移动设备 MAC 地址的装置,会不会是新商机,有哪些运用可能,有法律风险吗?-------------------------补充分享------------------------------
嗯,对了,这两年见过很多公司表示不屑一顾:这事儿简单嘛,没什么技术门槛。
是的,这事儿不是不能做,也的确不算难做,但说三个方面谨供各位头脑发热的同行参考:
这事儿一定是相当红的红海,而且没多久以后注定三大阵营:BAT、三大运营商和虚拟运营商和硬件厂家(比如Fon的模式)、某些具备行业资源的大公司(机场、飞机、铁路、交运、公交、地铁等等),小公司也不是一点生存不下去,只是重点一定不在WiFi甚至不在C端(抢不过BAT等)
-----------------看别的回答发现了点问题,补充分享----------------
相关从业者 匿名用户 的回答虽然很有参考性,但仔细看了下有很大的问题,比如这一段:
a、完全不具备任何开发能力,路由器是贴牌从别的公司买来的。
b、具备一定的wap页面开发能力,可以对商家wifi连接成功的微网站做一定的开发优化
c、拥有固件开发能力,可以对路由器功能做定制,包括微信登陆、微博登陆等方式的开发(实际上是路由器mac地址控制类的技术)。
d、掌握了无线射频探测技术和初步商业化的能力。
e、有稳定的代工厂和硬件设计能力。
其实,如果结合自身特点考虑好产品定位、再换一种设计思路,路由器硬件、固件都不是问题。比如我们的产品和技术实现的设计思路有几个要点(为避免广告,不讨论具体细节,尽量用白话描述意义而不是产品本身):
因此,对照匿名用户的几条来看,其中C是错误的,微信登录等不需要固件开发能力,也与MAC地址控制无关;B是我们的目标客户和合作伙伴;A和E意义不大;D可能面临较大的风险——个人感觉匿名用户所在公司的产品定位、设计思路和技术路线有问题。同样,@张强 的技术实现思路也比较传统甚至过时了。
所以,不要纠结设备是否是找厂家定制的了——这是传统厂家的优势,它们也会来做商业公共智能路由的(貌似Dlink已经推出了吧);不要纠结系统和固件了——这是海蜘蛛、WayOS等等的地盘;不要纠结是否自己去从0实现了——有解决方案提供商和成熟商业产品、运营经验了。
呵呵,我们是在开始启动之前已经分析好这些优劣势才决定了产品的定位和设计思路的,个人以为非常值得同行参考。
分享干货,针对想自己实现智能WiFi产品,或者在已有产品中集成智能WiFi的开发人员,最后上张图吧——我们自己用、提供给合作伙伴的 WiFi接入和认证管理服务器 接口封装示意图:
=====================================
好嘛,既然有朋友私信来问,再补充一句:
我不是树熊的,而且个人并不认同它的产品定位、技术实现方式和水平。至于它与支付宝的合作:恭喜靠了棵大树,成为众多抢夺C端渠道的之一(还有百度和腾讯)
=======================
对于其他回答的观点:
(2014.7.31.补充开始)
1. 更正一个评价:从排名第一的 @张强、匿名用户的回答,以及对其评论的回答,可以断定他俩显然不熟悉微信相关的接口。
@张强应该是熟悉智能Wi-Fi基本原理,至少做过RADIUS认证的,只是不熟悉智能WiFi与微信公众平台相关的开发和微信公众平台相关接口。
2013年11月,微信开放了相关接口,详见:
网页授权获取用户基本信息,我下文中回答题主问题的两种主要思路:1、不需要高级接口;2、使用高级接口。用户体验不同。
2. 至于匿名用户指出我的回答有逻辑问题等等,其实在他粘贴我的那一段“错误回答”的前面一句话,说的很清楚了:
为了避免太复杂的描述,以下讨论的前提是该商户的微信公众账号启用开发者模式并接入相应的接口实现服务器
可是匿名用户兄台不仅没仔细看,甚至他粘贴我的“错误回答”原文中也包含这句话:“只需要将商户微信公众账号设为开发模式,并接入到相关服务器即可,不需要开通高级接口”
不知道为何,他还是揣测了一下,认为我不懂编辑模式和开发模式的区别、不知道还有个开发模式
——我都不知道该怎么评论他的评论了,只能说这位兄台自己才是没有真正做过相关开发的。
3. 后来看了下其它回答里的评论,发现除了微信方面,大家最有疑问的环节是MAC地址这部分,虽然不在原问题里,这里简单补充一下:
如何得到MAC地址呢?
这是路由器侧来完成的,比如一般常用的是WiFiDog,它在拦截用户的HTTP请求时,会将用户设备的MAC作为参数提交给认证服务器。
如何实现微信和MAC地址绑定呢?
关键是触发WiFiDog携带设备的MAC到认证服务器,认证服务器再从已经保存的数据中匹配即可。
——显然,用户第一次认证通过后保存这部分。
——另外,认证方式不限于微信,下面的回答主要是针对题主的问题,其它方式思路是类似的,但技术实现层面是完全不同的,请参照我在后文中贴的图片:什么是智能WiFi
(2014.7.31.补充结束)
我说个都能看得完也看得懂的原理吧,以wifidog协议和微信接口为例。
先说路由器这边:
wifidog接口里面有个auth接口,返回Auth: 0路由器就会删除用户上网权限,返回Auth: 1路由器就会允许用户上网,路由器会定时访问平台,平台一旦得知微信关注账号里面没这个人,就可以返回Auth: 0,禁止该用户上网。
好了路由器如何和平台交互控制客户端上网说完了,下面就是微信接口如何知道某个用户没有关注xx微信号:
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
参见
获取用户基本信息好了,平台也知道某人是否关注了微信公共账号,就能通过auth接口去控制了。
英雄联盟手游武器大师怎么玩 LOL手游贾克斯出装符文推荐2024-05-07 04:14
英雄联盟手游奥拉夫怎么出装 奥拉夫出装推荐2024-05-07 04:12
《魔兽世界怀旧服》冬泉火酒怎么完成 冬泉火酒任务流程详览2024-05-07 03:52
DNF瞎子怎么样2024-05-07 03:14
王祖贤杨幂刘亦菲都是“仙气十足”的女鬼!2024-05-07 03:10
英雄联盟lol光辉女郎攻略2024-05-07 03:06
梦幻西游笑里藏刀特技 梦幻西游笑里藏刀效果2024-05-07 02:53
dnf强烈之痕迹怎么获得-强烈的痕迹获取方法2024-05-07 02:27
1925年立春查询2024-05-07 01:50
绿色征途法师技能加点及属性加点 附职业选择与路线解析详解2024-05-07 01:39
魅族 MX4 有哪些问题?2024-05-07 04:09
皇室战争骷髅帝王卡组怎么搭配 卡组搭配攻略2024-05-07 03:35
《DOTA2》故人玩偶可以交易吗? 故人玩偶交易情况2024-05-07 03:24
大魔法师的次元回廊2024-05-07 03:13
超微小气泡和小气泡的区别?超微小气泡的优点有哪些?2024-05-07 02:50
自定义模板换脸 ai换脸怎么添加自定义素材?2024-05-07 02:40
《摩尔庄园手游》夏日活动菜谱汇总 2021夏日活动菜谱一览2024-05-07 02:10
英雄联盟S9赛季EZ天赋符文加点出装攻略2024-05-07 01:54
【MX3搜狗手机输入法下载】魅族MX3搜狗手机输入法11.41免费下载2024-05-07 01:53
Apex英雄密客传家宝获取攻略 密客传家宝氪金攻略2024-05-07 01:35