鄢化鵬 聶云峰 汪濤 吳文波
摘要:為解決移動(dòng)互聯(lián)網(wǎng)背景下違章查詢接口不公開的問(wèn)題,提出一種基于Node.js的違章查詢系統(tǒng)解決方案。通過(guò)分析12123APP違章查詢接口及其通信加密方式,在獲取12123APP與服務(wù)器之間的通信加密密匙后,通過(guò)Node.js平臺(tái)下的Crypto模塊實(shí)現(xiàn)用戶與12123APP服務(wù)器之間通信的AES加密解密,最終從12123APP服務(wù)器獲得違章查詢結(jié)果。通過(guò)對(duì)接口進(jìn)行postman功能測(cè)試及ApacheJMeter壓力測(cè)試,實(shí)驗(yàn)結(jié)果表明,該方法能有效實(shí)現(xiàn)違章查詢功能,并具有良好的高并發(fā)性能。
關(guān)鍵詞:違章查詢;接口;Node.js;AES;Crypto
DOI:10.11907/rjdk.173203
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(2018)007-0132-03
Abstract:InordertosolvetheproblemthatillegalqueryinterfacedoesnotopentothepublicinthebackgroundofmobileInternet,asolutionofillegalquerysystembasedonNode.jsisproposed.Byanalyzingthe12123APPillegalqueryinterfaceanditscommunicationencryptionmethod,weobtainthecommunicationencryptionkeybetweenthe12123APPandtheserver,andtheCryptomoduleontheNode.jsplatformisusedtorealizetheAESencryptionanddecryptionofthecommunicationbetweentheuserandthe12123APPserversothatfinally
illegalsearchresultsaerobtamedfromthe12123APPserver.ThroughthepostmanfunctionaltestingandApacheJMeterstresstestingontheinterface,theexperimentalresultsshowthatthismethodeffectivelysolvestheproblemthatillegalqueryinterfacedoesnotopentothepublic.
KeyWords:illegalquery;interface;Node.js;AES;Crypto
0引言
據(jù)公安部交管局統(tǒng)計(jì),截至2017年3月底,全國(guó)機(jī)動(dòng)車保有量首次突破3億輛,其中汽車達(dá)2億輛[1],駕車出行已成為人們出行的主流方案,與此同時(shí),車輛違章問(wèn)題也越來(lái)越突出。據(jù)調(diào)查,2017年上半年大約有12%的車主有過(guò)違章記錄。因此,人們迫切需要一個(gè)有效的違章查詢工具。雖然市場(chǎng)上的違章查詢工具很多,但是質(zhì)量參差不齊,大部分違章查詢工具的用戶體驗(yàn)較差。研究表明,其本質(zhì)原因是沒有一個(gè)開放、統(tǒng)一的違章查詢接口。
市場(chǎng)上現(xiàn)有的違章查詢接口主要分為兩種:一種由地方交通管理局提供,一種由軟件公司提供。地方交管局提供的接口有很大的局限性,只能查詢某市或某省的車輛違章情況,給用戶帶來(lái)很大不便;軟件公司提供的接口質(zhì)量參差不齊,并且需要收費(fèi),因而無(wú)法保證用戶擁有良好體驗(yàn),同時(shí)也限制了一些經(jīng)費(fèi)不足的公司及個(gè)人進(jìn)行違章查詢軟件開發(fā)。
為解決違章查詢接口不開放與統(tǒng)一的問(wèn)題,本文設(shè)計(jì)一種基于Node.js的違章查詢系統(tǒng)解決方案[2-3]。選取Node.js平臺(tái)下的Express框架,使系統(tǒng)具有良好的高并發(fā)性能。采用的12123APP違章查詢接口由公安部交通管理局開發(fā),其數(shù)據(jù)庫(kù)為全國(guó)數(shù)據(jù)庫(kù),且具有權(quán)威性。通過(guò)分析12123APP違章查詢接口及其通信加密方式,獲取12123APP與服務(wù)器之間的通信加密密匙及偏移向量,通過(guò)Crypto模塊對(duì)用戶發(fā)送數(shù)據(jù)AES加密,以及對(duì)用戶接收數(shù)據(jù)AES解密[4-6],從而實(shí)現(xiàn)具有高并發(fā)性能且接口開放的違章查詢接口。
1Node.js簡(jiǎn)介
Node.js是一個(gè)基于ChromeV8引擎的JavaScript運(yùn)行環(huán)境,Node.js使用了一個(gè)事件驅(qū)動(dòng)、非阻塞式I/O模型,使其輕量又高效,Node.js作為服務(wù)器端JavaScript的運(yùn)行平臺(tái),弱類型、基于作用域和原型鏈依舊是其本身的特征,其主要特點(diǎn)如下:①異步非阻塞I/O。這是Node.js的主要特性,也是其處理高并發(fā)請(qǐng)求的關(guān)鍵所在;②單線程。單線程的優(yōu)勢(shì)是無(wú)需考慮多線程下的狀態(tài)同步、上下文切換、死鎖、線程安全等方面問(wèn)題;③事件機(jī)制。配合異步I/O操作,具有輕量級(jí)、松耦合、只關(guān)注事務(wù)點(diǎn)等優(yōu)勢(shì)。這些特點(diǎn)使Node.js非常適合數(shù)據(jù)量大、業(yè)務(wù)邏輯簡(jiǎn)單的應(yīng)用[7-9]。Express作為Node.js下最流行的框架,其核心特點(diǎn)是:①可以設(shè)置中間件以響應(yīng)HTTP請(qǐng)求;②定義路由表用于執(zhí)行不同的HTTP請(qǐng)求動(dòng)作;③歷史最久、文檔最全、資料最多。因此,采用Express框架搭建服務(wù)器非常簡(jiǎn)單,且搭建的服務(wù)器較為穩(wěn)定[10-12]。目前在國(guó)內(nèi)也有許多大公司在開發(fā)項(xiàng)目時(shí)使用Node.js,包括淘寶指數(shù)、淘寶數(shù)據(jù)魔方、Angular中文網(wǎng)站后臺(tái)、CNode網(wǎng)站后臺(tái)等。
2系統(tǒng)設(shè)計(jì)
根據(jù)違章查詢系統(tǒng)需求分析,違章查詢系統(tǒng)主要分為兩大模塊,分別為個(gè)人管理模塊及車務(wù)管理模塊。個(gè)人管理模塊主要功能包括:注冊(cè)、登錄,以及用戶基本信息、車輛信息與駕駛證信息增刪改查;車務(wù)管理模塊主要功能包括:違章查詢、記分查詢、罰款代繳。
基于Node.js的違章查詢系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)如圖1所示,從頂層到底層分別為用戶層、接口層、業(yè)務(wù)層及數(shù)據(jù)層。
(1)用戶層主要指不同類型的客戶端,包括IE瀏覽器、Firefox瀏覽器、Chrome瀏覽器等不同類型的PC客戶端和以Android、IOS為主的移動(dòng)客戶端。