您的当前位置:首页 > 综合 > 微信关注即可使用 Wi-Fi,取消关注即断网的路由器是怎样实现的? 正文

微信关注即可使用 Wi-Fi,取消关注即断网的路由器是怎样实现的?

时间:2024-05-07 04:22:18 来源:网络整理 编辑:综合

核心提示

最近看到这个公司的一款路由器,珠海市微·商智能科技|MBI,自主研发安装在店里后,打开微信关注企业微信账号即可免费wifi,取消关注就不能上网了。这个是怎么控制的呢?不请自来,本人之前接私活,做过类似

微信关注即可使用 Wi-Fi,取消关注即断网的路由器是怎样实现的?

最近看到这个公司的微信网一款路由器,珠海市微·商智能科技|MBI,关注关注自主研发
安装在店里后,打开微信关注企业微信账号即可免费wifi,即可即断取消关注就不能上网了。使用实现
这个是取消器样怎么控制的呢?

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

以上

6/22更新

这个题目好久没出现在TL上,今天突然看到一个

@play play

的更新, 他其中的某些明显的错误让我不得不更新这个答案。当然,

@play play

以一个同行创业者的姿态来一同论述这个问题,对大家看清楚商业WiFi会更有帮助。

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

  1. 不需要使用微信公众平台高级接口:用网页、水牌、桌贴等提示用户关注商户的微信公众账号,然后分两种情况: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地址做相关,前提就只能是微信告诉你用户的关注事件本身,(至于说抓包解密这种逗比的解决方案就不要再讨论了好吗?)而这根本是不可能的。

@张强 的对原理描述得比较详细,尤其是在对 “普通微信三方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相关问题。

先说结论,如何实现题主的需求:

  1. 绝大部分情况下不需要调用微信开放平台的接口,只用到了微信公众账号的开发者模式就完成了;
  2. 如果想进一步改善用户体验,需要使用服务号调用微信 网页授权获取用户基本信息 接口。

作为一个商业公共WiFi相关的创业者做点补充,希望有小小贡献吧

后面的主要内容:

  • 基本认证流程
  • 如何判断当前用户是否关注了商户的微信公众账号?
  • 已经关注商户微信公众账号的用户 可以无感地自动可以访问网络么?
  • 针对其它回答的问题:我们设计Wi-Fi接入和认证管理服务器的定位和功能、接口时序图
  • 如何得到MAC地址呢?
  • 如何实现微信和MAC地址绑定呢?

参考知乎相关问题:

  • iOS 8 设备随机 MAC 地址躲避 Wi-Fi 热点的记录追踪,技术上是怎么实现,有何影响?
  • 大数据时代,在街头安装收集移动设备 MAC 地址的装置,会不会是新商机,有哪些运用可能,有法律风险吗?

==利益相关提醒==

我自己的创业公司在做:

  • 商业公共免费WiFi网络部署(生活服务类商户联盟)
  • 提供智能WiFi解决方案(帮客户自行部署商业公共WiFi网络)
  • 提供融合营销解决方案(帮客户完成手机网站、微信公众账号、支付宝钱包服务窗、百度直达号、手机电商、支付宝支付和微信支付、CRM和会员管理、平台数据管理和分析,整套解决方案)
  • 支付宝首批全国认证合作伙伴和授权代理——我们现在主推的是支付宝钱包Wi-Fi接口认证(不是关注认证,支付宝钱包服务窗的关注认证原理和微信关注认证一样),用户体验很好、一键打开钱包并进入到商户的服务窗,很方便

==================================================

基础原理:

我就从去年做的一个PPT中截几个图,分享点干货吧

智能WiFi的本质:

有知友的回答中提到AC、AP、各种场景等等,很复杂,看这里:

上图中,分两种场景:

  • 区域较小,同时在线人数较少、不需要漫游
  • 区域较大,同时在线人数较多、需要漫游
微信关注即可使用 Wi-Fi,取消关注即断网的路由器是怎样实现的?

认证流程简图:

基本认证流程:

  • 用户设备(手机、Pad、笔电)连接到Wi-Fi热点
  • 提供热点的终端节点(路由器/AP)上的WiFiDog拦截用户网络,将用户HTTP请求转向到云端AC服务器
  • (可跳过)云端AC服务器返回网页提醒用户进行认证
  • (可跳过)用户在网页或APP里完成认证(开放认证、粉丝认证、自主或定制认证)
  • 云端AC服务器通知终端节点放行

抛开更多技术细节,主要补充说明:

如何判断当前用户是否关注了商户的微信公众账号?

为了避免太复杂的描述,以下讨论的前提是该商户的微信公众账号启用开发者模式并接入相应的接口实现服务器(一般由我这样的商业公共WiFi服务的第三方提供,或者我的客户),实现思路主要有两种:

  1. 不需要使用微信公众平台高级接口(思路:用户能与本公众账号互动,就说明已经关注):
    用网页、水牌、桌贴等提示用户关注商户的微信公众账号,然后分两种情况:
    A. 用户刚刚关注,服务器在用户关注时自动下发的信息(一般是多图文,当然也可以要求用户发“上网”关键字),其中有一条目的是引导用户点击,例如“点此免费使用WiFi”——该条目对应的url里带了一个对应该设备(用户)的唯一的、一次性的token——用户点击该链接后转到对应的页面——此时服务器从链接中获得了这个token——服务器通知AP(放在商户现场的路由器)放行该设备(用户);
    B. 用户曾经已经关注过,请对该商户的微信公众账号发送某个关键字,如“上网”,或在商户微信公众账号菜单中点“上网”——服务器返回图文信息,其中有一条引导用户点击,后续同A
    ——核心思路:用户只要能和商户的微信公众账号互动,就意味着已经关注了该商户。因此,只需要将商户微信公众账号设为开发模式,并接入到相关服务器即可,不需要开通高级接口。
  2. 使用微信公众平台高级接口:
    又分为两种情况:
    A. 调用用户信息接口 获取用户基本信息(UnionID机制) (参考上文,此为无用的方案)——与上文区别不大,只不过通过调用接口判断是否是粉丝——可是,也需要用户至少一个操作来获取OpenId——既然交互了、能获取OpenId了,说明用户已经关注本公众账号,还需要调用接口么?
    B. 调用OAuth-Basic接口 网页授权获取用户基本信息(注意:必须是在微信内嵌浏览器中,而且只有服务号有权限):用户浏览器访问网页的请求被智能WiFi拦截并强制转向到商户的手机门户——在商户的手机门户的页面中加入对微信高级接口之OAuth-Basic的调用,获得当前用户(注意:对应当前商户微信公众账号)的OpenId——然后在服务器端保存的该商户的粉丝列表里匹配是否已有对应项——已有,服务器通知AP(放在商户现场的路由器)放行该设备(用户)——额外地,服务器端需要通过微信公众平台的粉丝关注和取消关注接口来维护粉丝OpenId的列表
    ——嗯嗯,熟悉服务号和高级接口,并细心的朋友能发现这里面还有扩展的空间和玩法。

至于在微信中发个消息、点个菜单后,微信回复预设好的WiFi密码——这是古时候某些号称国内最早、国内唯一的能用微信和WiFi关联的厂家的玩法,就不讨论了,呵呵

好,这里面有个延伸问题:

已经关注商户微信公众账号的用户 可以无感地自动可以访问网络么?

以上方法中,方法1显然是离不开用户与商户微信公众账号的互动的;方法2,如果用户已经关注过则可以实现无感体验的。

——但是,从商户甚至是商业公共WiFi服务方的利益来说,就是需要让用户在上外网前,先看看有些什么样的信息嘛

当然,我们自己是否定用商业公共WiFi发广告的商业模式的。

昨天和阿里大数据的PM聊的很开心,因为我们是用心做商户联盟、数据采集和拼图的,呵呵

其它细节参考回答:

大数据时代,在街头安装收集移动设备 MAC 地址的装置,会不会是新商机,有哪些运用可能,有法律风险吗?

-------------------------补充分享------------------------------

嗯,对了,这两年见过很多公司表示不屑一顾:这事儿简单嘛,没什么技术门槛。

是的,这事儿不是不能做,也的确不算难做,但说三个方面谨供各位头脑发热的同行参考:

  1. 技术门槛永远不是门槛,从开发实现一个简单环境中的Demo到能够投入市场商业化运作,这里面大大小小的坑不计其数——这毕竟不是学生做一个毕业设计交给老师点击下看看就给个分数,何况门槛越低竞争越激烈;
  2. 商业化运营中,为了最大程度照顾好商户和用户的体验问题,我们是有专门的网络工程师团队来支撑的,这里面的成本并不低;
  3. 考虑好你的盈利模式、退出机制是什么?——不要告诉我你钱多、砸钱圈地(好吧,砸我吧)。

这事儿一定是相当红的红海,而且没多久以后注定三大阵营:BAT、三大运营商和虚拟运营商和硬件厂家(比如Fon的模式)、某些具备行业资源的大公司(机场、飞机、铁路、交运、公交、地铁等等),小公司也不是一点生存不下去,只是重点一定不在WiFi甚至不在C端(抢不过BAT等)


-----------------看别的回答发现了点问题,补充分享----------------

相关从业者 匿名用户 的回答虽然很有参考性,但仔细看了下有很大的问题,比如这一段:

a、完全不具备任何开发能力,路由器是贴牌从别的公司买来的。
b、具备一定的wap页面开发能力,可以对商家wifi连接成功的微网站做一定的开发优化
c、拥有固件开发能力,可以对路由器功能做定制,包括微信登陆、微博登陆等方式的开发(实际上是路由器mac地址控制类的技术)。
d、掌握了无线射频探测技术和初步商业化的能力。
e、有稳定的代工厂和硬件设计能力。

其实,如果结合自身特点考虑好产品定位、再换一种设计思路,路由器硬件、固件都不是问题。比如我们的产品和技术实现的设计思路有几个要点(为避免广告,不讨论具体细节,尽量用白话描述意义而不是产品本身):

  1. 终端无关:无论终端设备使用的是开源系统和固件如DD-Wrt、Open-Wrt,还是极路由等,前者有WiFiDog,后者可以做插件,但到了WiFi接入和认证服务器、Portal(门户和具体应用)服务器都是一样的——也就是说可以兼容任何终端设备(AP、胖AP、AC);
  2. 简化认证模型,Radius无关:没有使用Radius认证,同上,我们封装了一套Web API,无论任何终端设备中的WiFiDog或者极路由插件等,通过Http/Https与接入和认证服务器通讯,随后由Portal服务器接管以进行业务判断、提供更丰富的内容和应用;
  3. 支持不同级别的漫游:一般都支持AC内的若干AP间漫游(比如KTV、电影院),额外可以支持同一商户的不同路由器/胖AP(节点)之间漫游(比如更大的ShoppingMall、机场、旅游景区),当然,甚至可以支持商户之间的漫游——取决于业务需求。只是,好的设计让你可以很简单实现,不那么好的设计会比较累吧;
  4. 与现有产品可以很快速、简单集成——WiFi接入管理和认证的系统,与Portal系统(手机网站、具体业务)分离,后者可能是第三方(比如我们的客户)自己的系统,提供了各种特色的内容、服务,必须让他们可以很快速、简单的在已有产品中加入和对接智能WiFi;
  5. WiFi接入和认证服务器可以和第三方认证服务器对接:比如,有银行客户想采用我们的系统并且与我们开展商盟的联盟营销方面的合作,但总部推荐了另外的技术公司。考虑到银行营业厅的特殊性、采集数据的价值,我们建议他们采用总部推荐的技术公司的产品(利益问题),但可以对接数据或者接口。同理,可对接大型商场已有的WiFi,甚至运营商的CMCC、ChinaNet——考虑清楚自己的核心优势是什么?技术?no, no,有核心优势外加终端无关,一样可以推翻之前使用的别家的产品重来(有没有必要罢了);
  6. MAC地址无关:MAC地址不是商业公共WiFi的核心诉求,别走偏了。MAC地址固然好,类似于Cookie,能唯一标识一个“设备”(设备可能会更换,也可能有多个)。但是如果没有MAC地址是不是就什么也不能干了?不是滴,核心在于通过用户的各种数据拼碎片,MAC地址是其中比较好用的一种罢了;
  7. 个人坚持不碰无线射频探测:好嘛,还是冲着MAC地址来的,呵呵。上面说了,我们的产品设计思路与MAC地址无关,不是没能力实现MAC Sniffer而是存在相当大的隐私泄露方面社会事件和法律相关风险,比如近期的新闻和问题:iOS 8 设备随机 MAC 地址躲避 Wi-Fi 热点的记录追踪,技术上是怎么实现,有何影响?从用户角度或者商业角度,个人都期望类似技术尽快流行,避免甚至打击MAC嗅探技术的过度使用。其实这类问题不妨邀请芝麻科技等来回答。

因此,对照匿名用户的几条来看,其中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接口去控制了。