1. 程式人生 > >【智慧路由器】打賞連wifi

【智慧路由器】打賞連wifi

打賞連wifi是最近路由上的一個新功能,每個需要通過路由上網的人必須通過微信或者支付寶打賞後才能聯網,最近專案和這個有關。同事笑著算了這樣的一筆賬:我們有30萬路由分佈在各大城市的餐館,KTV等餐飲娛樂場所,假如每臺裝置每天有20人打賞連wifi,平均每人2毛錢,每天靠打賞來錢120萬!!!

當然,這賬不是我算的,能不能達到目標還得看怎麼去營銷。據說老闆是這樣算的:錢都無所謂,重要是資料…

這裡寫圖片描述

好了,扯開前面的廢話,我們從技術上探討一下在路由上怎麼實現打賞連wifi。

頁面劫持環節

利用wifidog來實現使用者認證
路由上通過wifidog來強制使用者跳轉到認證伺服器,認證伺服器會丟給使用者一個打賞連wifi頁面,點選按鈕,即可進行打賞操作。
在arvik的

【智慧路由器】部落格專欄中還未曾講過這個在路由上普遍應用的認證工具——wifidog,原因是網上對wifidog原始碼剖析的文章比較多,arvik也只是粗略的看了下網上關於wifidog的原始碼流程介紹,並沒有真正分析過原始碼。

順便說一下wifidog,wifidog的作用主要是兩件事:
1. 由iptables將80埠流量轉發到wifidog,wifidog根據http請求,返回302跳轉報文
2. 確認認證

wifidog的內部幾乎都是通過向iptables下規則來實現使用者流量放行與否

arvik曾想過wifidog的替代方案,但不知效果比起wifidog如何:
1. 解決跳轉:在底層可以寫個netfilter鉤子攔截http請求,然後構造一個302返回包即可實現跳轉
2. 解決認證:路由器與伺服器可實現一套訊息推送協議,其實這方面已經有一些開源的協議了。伺服器在認證之後,將訊息推送到路由即可放行某使用者的流量。當然,這套協議不僅僅是用於認證,還可用於平時路由和伺服器的訊息傳輸。

打賞環節

打賞的過程也就是認證的過程,伺服器收到打賞金額後會通知(或者被動通知)wifidog來放行使用者流量,這樣使用者就能上網了。

該環節需要web開發工程師對接微信或支付寶的開發者文件來開發和對接支付介面。

支付後,微信會通知伺服器,伺服器根據支付結果再通知路由是否放行該使用者流量。

打通支付環節

使用者在成功認證之前是不能正常上網的,既然都不能正常上網,那還怎麼進行微信支付、支付寶支付呢?
我們知道,wifidog可以對認證伺服器的流量進行放行。但卻無法放行微信、支付寶的流量。

解決方案:
1. 放行一分鐘
目前,有些路由上的做法是這樣的,使用者在認證的環節可以免費上網1到2分鐘,這段的時間用來給使用者進行支付寶或微信支付操作,等過了這個時間使用者依然是不能正常上網的。
這種方式實現起來較為簡單一些,但據說會降低使用者體驗度。

2. 深度報文分析
根據深度報文分析直接分析出微信、支付寶流量,無條件予以放行,這樣可保證使用者可以在認證之前,微信和支付寶能夠正常進行支付動作。

有關深度報文分析的文章arvik也寫了兩篇,分別參看【智慧路由器】專欄: