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