一種免費(fèi)無(wú)線上網(wǎng)的認(rèn)證方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及免費(fèi)無(wú)線上網(wǎng)的認(rèn)證方法。
【背景技術(shù)】
[0002] 現(xiàn)有的大型商場(chǎng)、購(gòu)物中心、寫(xiě)字樓、飯店等公共設(shè)施內(nèi)均提供有免費(fèi)WIFI無(wú)線 上網(wǎng)環(huán)境,用戶可先打開(kāi)智能手機(jī)的WIFI設(shè)置進(jìn)行連接AP,然后需要輸入本人手機(jī)號(hào)碼, 發(fā)起申請(qǐng)認(rèn)證請(qǐng)求。公共WIFI云服務(wù)器根據(jù)申請(qǐng)認(rèn)證請(qǐng)求生成相應(yīng)的上網(wǎng)認(rèn)證碼,并將 其返回給用戶輸入的手機(jī)號(hào)碼。用戶需要將該上網(wǎng)認(rèn)證碼輸入到相應(yīng)的輸入框中生成上網(wǎng) 認(rèn)證請(qǐng)求,云服務(wù)器認(rèn)證通過(guò)后下發(fā)認(rèn)證結(jié)果給AP,隨后AP放行用戶的訪問(wèn),用戶可正常 訪問(wèn)互聯(lián)網(wǎng)。
[0003] 圖1示意性地給出了現(xiàn)有技術(shù)中公共WIFI環(huán)境組網(wǎng)的結(jié)構(gòu)圖,如圖1所示,系統(tǒng) 由AP和公共WIFI運(yùn)營(yíng)商云服務(wù)器組成,下文中簡(jiǎn)稱云服務(wù)器。AP也可能就是一個(gè)無(wú)線路 由器,負(fù)責(zé)與云服務(wù)器通信。在云服務(wù)器上完成用戶管理,代理商管理和設(shè)備查看。AP負(fù)責(zé) 從云服務(wù)器處獲取認(rèn)證方式,由云服務(wù)器下發(fā)認(rèn)證結(jié)果。云服務(wù)器一般包括認(rèn)證管理服務(wù) 器和PORTAL服務(wù)器,下文中所述的portal實(shí)指云服務(wù)器的一部分。
[0004] 圖2示意性地給出了現(xiàn)有技術(shù)中無(wú)線上網(wǎng)的流程圖,如圖2所示,現(xiàn)有方法的步驟 如下:
[0005] 步驟1、用戶打開(kāi)手機(jī)終端的無(wú)線網(wǎng)絡(luò)設(shè)置,選擇并連接商鋪的免費(fèi)WIFI,成功。 此時(shí)不會(huì)自動(dòng)彈PORTAL認(rèn)證,用戶也還沒(méi)有經(jīng)過(guò)系統(tǒng)認(rèn)證,無(wú)法訪問(wèn)INTERNET。
[0006] 步驟2、用戶需自己打開(kāi)手機(jī)的瀏覽器,輸入要訪問(wèn)的網(wǎng)址,如WWW. BAIDU. COM,以 便觸發(fā)認(rèn)證。
[0007] 步驟3、瀏覽器的訪問(wèn)被AP重定向到一個(gè)PORTAL頁(yè)面,頁(yè)面提示用戶輸入手機(jī)號(hào), 點(diǎn)擊獲取驗(yàn)證碼。
[0008] 步驟4、用戶需要等待驗(yàn)證碼的到來(lái),然后在認(rèn)證頁(yè)面輸入驗(yàn)證碼。
[0009] 步驟5、完成終端在免費(fèi)WIFI系統(tǒng)中的認(rèn)證過(guò)程,之后可正常訪問(wèn)互聯(lián)網(wǎng)。
[0010] 上述上網(wǎng)方式存在諸多不足,如:
[0011] 1.上網(wǎng)過(guò)程非常煩鎖,手機(jī)號(hào)總共有11位,驗(yàn)證碼有6-8位,為了上網(wǎng)就得輸入將 近20個(gè)數(shù)字或字母,手機(jī)終端本身設(shè)計(jì)為方便觸摸操作而非輸入操作,加上還要有一個(gè)等 驗(yàn)證碼的過(guò)程,有時(shí)因?yàn)槎绦啪W(wǎng)關(guān)原因,驗(yàn)證碼還發(fā)送不成功,所有這些因素加起來(lái),導(dǎo)致 了整個(gè)認(rèn)證的效率非常低下,用戶體驗(yàn)極差。
[0012] 2.有些用戶以為加上WIFI就能用了,沒(méi)有意識(shí)到需要自己打開(kāi)一個(gè)瀏覽器去觸 發(fā)認(rèn)證。當(dāng)用戶直接打開(kāi)微信卻發(fā)現(xiàn)用不了時(shí),會(huì)懷疑是無(wú)線信號(hào)等原因?qū)е律喜涣司W(wǎng),直 接放棄使用,這無(wú)疑會(huì)導(dǎo)致商家直接失去這批用戶。
【發(fā)明內(nèi)容】
[0013] 為了解決上述現(xiàn)有技術(shù)方案中的不足,本發(fā)明提供了一種用戶體驗(yàn)好的免費(fèi)無(wú)線 上網(wǎng)的認(rèn)證方法。
[0014] 本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
[0015] -種免費(fèi)無(wú)線上網(wǎng)的認(rèn)證方法,所述認(rèn)證方法包括以下步驟:
[0016] (Al)打開(kāi)移動(dòng)終端的無(wú)線網(wǎng)絡(luò)設(shè)置,選擇并連接商家的免費(fèi)WIFI ;
[0017] (A2)所述移動(dòng)終端發(fā)出探測(cè)網(wǎng)絡(luò)的報(bào)文,處理所述報(bào)文,使移動(dòng)終端自動(dòng)彈出認(rèn) 證頁(yè)面,用戶點(diǎn)擊微信認(rèn)證方式;
[0018] (A3)微信自動(dòng)打開(kāi),用戶輸入所述商家的微信公眾號(hào)。
[0019] (A4)微信彈出商家的信息,用戶點(diǎn)擊"關(guān)注",從而完成免費(fèi)上網(wǎng)認(rèn)證。
[0020] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,在步驟(A3)中,用戶用掃一掃功能,掃描商家的微 信公眾號(hào),從而輸入微信公眾號(hào)。
[0021] 根據(jù)上述的認(rèn)證方法,可選地,在步驟(A2)中:
[0022] 如果用戶已經(jīng)關(guān)注過(guò)商家的微信公眾號(hào),再次來(lái)到該商家時(shí),用戶只需在微信中 打開(kāi)商家微信公眾號(hào),進(jìn)入商家的功能界面,點(diǎn)擊"立即上網(wǎng)"功能按鈕。
[0023] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,在步驟(A2)中:
[0024] 所述報(bào)文的處理方法是:檢查報(bào)文是否符合探測(cè)報(bào)文條件,如果符合,進(jìn)行處理; 如果不符合,終結(jié)報(bào)文。
[0025] 根據(jù)上述的認(rèn)證方法,可選地,所述報(bào)文滿足以下要求:
[0026] 是TCP報(bào)文、目的端口是80、帶有PSH標(biāo)志位,報(bào)文內(nèi)容符合HTTP協(xié)議格式。
[0027] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,HTTP頭User-Agent:包含字符 串"CaptiveNetworkSupport ",或者 HTTP 頭包括的 URL 地址為:"/library/test/success. html " 或者 User-Agent 包含字符串:"wispr"。
[0028] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,在步驟(A2)中:
[0029] 所述報(bào)文的處理方法是:
[0030] 構(gòu)造服務(wù)器的響應(yīng)報(bào)文發(fā)送給所述移動(dòng)終端,響應(yīng)報(bào)文帶的內(nèi)容是 "HTTP302F0UND\r\n",并帶上相對(duì)應(yīng)的參數(shù)。
[0031] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,構(gòu)造服務(wù)器的響應(yīng)報(bào)文的方法是:
[0032] (BI)在LINUX內(nèi)核中創(chuàng)建一個(gè)SKB ;
[0033] (B2)計(jì)算所述移動(dòng)終端的TCP請(qǐng)求報(bào)文,獲得TCP長(zhǎng)度、TCP SEQ序列號(hào),將兩者 相加,作為回復(fù)TCP報(bào)文的ACK號(hào);
[0034] 用所述移動(dòng)終端的ACK號(hào)作為回復(fù)TCP報(bào)文的序列號(hào);將要回復(fù)的TCP載荷組裝 出一個(gè)TCP報(bào)文內(nèi)容;
[0035] (B3)將所述TCP報(bào)文內(nèi)容拷貝到SKB的傳輸層位置;
[0036] (B4)根據(jù)移動(dòng)終端的IP地址信息,組裝出一個(gè)標(biāo)準(zhǔn)的IP報(bào)文結(jié)構(gòu)頭,拷貝到SKB 的網(wǎng)絡(luò)層位置;
[0037] (B5)由網(wǎng)絡(luò)協(xié)議棧發(fā)送函數(shù)dev_queue_xmit(skb),將上述SKB發(fā)送出去。
[0038] 根據(jù)上述的認(rèn)證方法,可選地,
[0039] 當(dāng)回復(fù)了 302給所述移動(dòng)終端后,所述移動(dòng)終端會(huì)根據(jù)302重定向提示發(fā)起第二 次連接,此時(shí)連接的目的地址將指向AP ;
[0040] 移動(dòng)終端根據(jù)302的結(jié)果,自動(dòng)連接AP本地WEB服務(wù)器;AP便可以在響應(yīng)中回復(fù) 帶有廣告內(nèi)容的頁(yè)面。
[0041] 根據(jù)上述的認(rèn)證方法,可選地,在所述帶有廣告內(nèi)容的頁(yè)面中嵌入一個(gè)設(shè)定的URL 鏈接,指向PORTAL服務(wù)器的一個(gè)空白橫線圖片:
[0042] 如果判斷出移動(dòng)終端已完全顯示出了 PORTAL頁(yè)面,就可以對(duì)移動(dòng)終端后續(xù)的周 期性探測(cè)請(qǐng)求回復(fù)成功結(jié)果,這樣,移動(dòng)終端才會(huì)認(rèn)為無(wú)線是可用的,顯示出已成功連接的 無(wú)線圖標(biāo);否則,一直嘗試得不到成功結(jié)果,移動(dòng)終端會(huì)認(rèn)為無(wú)線不可達(dá)而將無(wú)線自動(dòng)關(guān) 閉。
[0043] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,非探測(cè)報(bào)文的終結(jié)的方法是:
[0044] 如果接到的終端報(bào)文是TCP 80端口的SYN請(qǐng)求,則丟棄報(bào)文并以目標(biāo)地址身份去 回復(fù) SYN-ACK ;
[0045] 如果接到的終端報(bào)文TCP 80端口的是ACK,不帶數(shù)據(jù),則直接丟棄;
[0046] 如果接到的終端報(bào)文是DNS報(bào)文,則重定向到本地DNS代理服務(wù)器;
[0047] 如果接到的是終端的ICMP報(bào)文,則直接放行,以便于進(jìn)行網(wǎng)絡(luò)的診斷;
[0048] 其他報(bào)文,直接丟棄。
[0049] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,步驟(A3)進(jìn)一步包括以下步驟:
[0050] (Cl)當(dāng)用戶用微信掃一掃功能掃了商家的微信號(hào)時(shí),移動(dòng)終端發(fā)出一個(gè)HTTP請(qǐng) 求到微信;
[0051] (C2)AP預(yù)先配置好微信的域名和IP地址,以便AP直接放行;當(dāng)AP接到訪問(wèn)該目 的IP的報(bào)文時(shí),直接轉(zhuǎn)發(fā)出去給微信服務(wù)器;
[0052] (C3)用戶點(diǎn)擊商家的微信詳情頁(yè)面中的"關(guān)注"按鈕時(shí),移動(dòng)終端會(huì)向商家的服務(wù) 器地址發(fā)送一個(gè)HTTP GET請(qǐng)求,請(qǐng)求帶上一個(gè)約定好的URL參數(shù);
[0053] 當(dāng)AP識(shí)別出該字符串時(shí),重定向到后臺(tái)云服務(wù)器系統(tǒng);所述用戶的信息記錄在云 端;
[0054] (C4)所述云服務(wù)器系統(tǒng)接到請(qǐng)求,判斷用戶認(rèn)證通過(guò),修改在線用戶表中的用戶 為已認(rèn)證,下發(fā)結(jié)果給AP,請(qǐng)求AP放行該終端;
[0055] (C5)該移動(dòng)終端后續(xù)訪問(wèn)被AP放行。
[0056] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,
[0057] 所述AP動(dòng)態(tài)地更新所述域名對(duì)應(yīng)的IP,轉(zhuǎn)換成IP白名單進(jìn)行業(yè)務(wù)處理,從而使得 在移動(dòng)終端與微信服務(wù)器進(jìn)行TCP連接握手的階段就正確地放通。
[0058] 根據(jù)上述的認(rèn)證方法,優(yōu)選地,放通微信訪問(wèn)包括以下步驟:
[0059] (Dl)AP中預(yù)配置好微信域名;
[0060] (D2)AP中預(yù)配置好微信外其他服務(wù)器IP名單;
[0061] (D3)移動(dòng)終端與微信服務(wù)器連接:
[0062] 如果是基于域名,且沒(méi)有CACHE,則會(huì)先發(fā)出DNS查詢,AP截獲DNS響應(yīng),匹配查詢 的主機(jī)名包括微信的域名,刷新IP地址到IP白名單中;進(jìn)入步驟(D4);
[0063] 如果移動(dòng)終端本地有DNS CACHE,則會(huì)跳過(guò)DNS查詢;進(jìn)入步驟(D5);
[0064] (D4)移動(dòng)終端與微信服務(wù)器發(fā)起TCP握手,發(fā)出SYN報(bào)文,AP判斷目標(biāo)IP是屬于 IP白名單,直接放行該IP報(bào)文;
[0065] (D5)因移動(dòng)終端不發(fā)DNS直接向微信服務(wù)器的IP發(fā)起HTTP訪問(wèn),AP此時(shí)尚不具 備對(duì)應(yīng)的IP白名單,因此判斷目標(biāo)IP不屬于IP白名單,AP直接回復(fù)SYN-ACK,進(jìn)行終結(jié)處 理;
[0066] (D6)移動(dòng)終端對(duì)SYN-ACK響應(yīng)ACK,TCP握手成功。AP收到ACK后,丟棄