一種微信數(shù)據(jù)獲取方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及社交網(wǎng)絡(luò)數(shù)據(jù)采集領(lǐng)域,涉及一種微信數(shù)據(jù)獲取方法和系統(tǒng),具體涉及基于安卓平臺(tái)應(yīng)用測(cè)試組件和瀏覽器測(cè)試組件相結(jié)合的微信數(shù)據(jù)獲取方法和系統(tǒng)。
【背景技術(shù)】
[0002]據(jù)統(tǒng)計(jì),中國(guó)手機(jī)用戶超過(guò)9億,截至2011年12月底,中國(guó)網(wǎng)民規(guī)模達(dá)到3.56億,智能手機(jī)網(wǎng)民達(dá)1.9億,同時(shí)隨著3G時(shí)代的到來(lái)和智能手機(jī)的普及,使用智能手機(jī)上網(wǎng)的用戶數(shù)量呈現(xiàn)出超過(guò)使用電腦上網(wǎng)的用戶數(shù)量的明顯趨勢(shì)。結(jié)合快速的3G/4G網(wǎng)絡(luò),手機(jī)具有高速度、多媒體、個(gè)性化的特點(diǎn),成為人們隨身攜帶便于溝通的交互式工具。
[0003]Web2.0技術(shù)下的信息傳播由于網(wǎng)絡(luò)的聚合作用而大大加強(qiáng),促進(jìn)了新的媒介生態(tài)環(huán)境的出現(xiàn)。媒體信息也從傳統(tǒng)平臺(tái)轉(zhuǎn)戰(zhàn)新媒體,媒體信息發(fā)布者對(duì)網(wǎng)絡(luò)和手機(jī)的利用也無(wú)所不用其極,手機(jī)短信、手機(jī)微博等媒體信息處處可見(jiàn)?;谑謾C(jī)即時(shí)通訊(IM)的媒體信息傳播還處于起步發(fā)展階段,但是已經(jīng)被諸多媒體以及組織個(gè)人等關(guān)注。
[0004]2011年I月21日,騰訊正式推出基于QQ用戶的微信。這款通過(guò)網(wǎng)絡(luò)快速發(fā)送語(yǔ)音短信、視頻、圖片和文字,支持多人群聊的手機(jī)聊天軟件,使用戶可以通過(guò)微信與好友進(jìn)行形式上更加豐富的類(lèi)似于短信、彩信等方式的聯(lián)系。微信可以說(shuō)是介于手機(jī)QQ和微博之間的第三種社交關(guān)系,它正在改變著人們的社交生活方式。在累計(jì)經(jīng)過(guò)40多個(gè)版本升級(jí)后,微信自身形成了一個(gè)三維溝通矩陣:X坐標(biāo)是語(yǔ)音、文字、圖片、視頻;¥坐標(biāo)是手機(jī)通訊錄、智能手機(jī)客戶端、QQ、微博、郵箱;Z坐標(biāo)是LBS定位、漂流瓶、搖一搖、二維碼識(shí)別??v橫交錯(cuò)立體化的社交鏈,覆蓋了工作、生活的多層次需求面,并且在這個(gè)三維空間里,各溝通鏈條完全交叉、各平臺(tái)互通共享,這是其他IM工具所無(wú)法比擬的。
[0005]現(xiàn)在面向微信平臺(tái)的數(shù)據(jù)獲取技術(shù)主要有:(I)人工破解客戶端,包括通信協(xié)議破解,能夠快速獲取數(shù)據(jù),但是同時(shí)客戶端破解需要較強(qiáng)的逆向工程技術(shù),同時(shí)伴隨微信版本升級(jí),其安全機(jī)制不斷升級(jí),存在失效的可能性。破解難度較大,成本過(guò)高。(2)Web協(xié)議模擬,通過(guò)抓包等方式分析網(wǎng)頁(yè)版微信的通信協(xié)議,通過(guò)協(xié)議模擬達(dá)到數(shù)據(jù)獲取的目的,但是從長(zhǎng)期實(shí)用角度考慮,伴隨微信版本升級(jí),存在協(xié)議升級(jí)改動(dòng),協(xié)議模擬失效的可能性,長(zhǎng)期維護(hù)投入成本較大。同時(shí),此方法無(wú)法避開(kāi)人工二維碼掃描登陸,在大規(guī)模數(shù)據(jù)采集環(huán)境下,需要額外頻繁的人工開(kāi)銷(xiāo)。
[0006]由于傳統(tǒng)的對(duì)社交網(wǎng)絡(luò)數(shù)據(jù)獲取的技術(shù)主要是面向PC端社交網(wǎng)絡(luò)媒體的數(shù)據(jù)采集,而微信僅提供移動(dòng)設(shè)備平臺(tái)的客戶端和包含基本聊天功能的web方式(其中macOSX平臺(tái)微信客戶端為web方式封裝,功能僅包括基本聊天功能),所以對(duì)于用戶歷史消息和資料等信息以及長(zhǎng)遠(yuǎn)考慮更多的消息的獲取只能從微信移動(dòng)設(shè)備端出發(fā)。
[0007]綜上,微信由于其安全機(jī)制及其本身生態(tài)圈的封閉性,對(duì)于微信客戶端的破解或通信協(xié)議的破解成本投入過(guò)大且伴隨版本升級(jí)破解成果難以確保長(zhǎng)久有效。
【發(fā)明內(nèi)容】
[0008]為了實(shí)現(xiàn)面向微信平臺(tái)的數(shù)據(jù)獲取,同時(shí)保證其數(shù)據(jù)的相對(duì)完整性以及即時(shí)性,此外考慮到避免純網(wǎng)頁(yè)版獲取方式的人工操作,本發(fā)明提出了一種微信數(shù)據(jù)獲取方法和系統(tǒng),通過(guò)安卓平臺(tái)應(yīng)用測(cè)試組件和瀏覽器測(cè)試組件相結(jié)合來(lái)實(shí)現(xiàn)。
[0009]需要說(shuō)明的是,安卓平臺(tái)應(yīng)用測(cè)試組件最初是面向安卓平臺(tái)app的自動(dòng)化功能測(cè)試,通過(guò)安卓開(kāi)放的接口實(shí)現(xiàn)安卓控件的定位和操作。因?yàn)閍pp應(yīng)用可解析為不同控件組成的樹(shù)狀結(jié)構(gòu)。而瀏覽器測(cè)試組件最初面向桌面瀏覽器的自動(dòng)化功能測(cè)試或壓力測(cè)試。
[0010]為了實(shí)現(xiàn)上述目的,本發(fā)明通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0011]—種微信數(shù)據(jù)獲取方法,是通過(guò)將安卓平臺(tái)應(yīng)用測(cè)試組件和瀏覽器測(cè)試組件相結(jié)合分別獲取微信非即時(shí)數(shù)據(jù)和即時(shí)數(shù)據(jù)實(shí)現(xiàn)的。
[0012]考慮到單個(gè)app只能同時(shí)操作一個(gè)界面,故微信非即時(shí)數(shù)據(jù)和即時(shí)數(shù)據(jù)的獲取是分別進(jìn)行的。
[0013]獲取微信非即時(shí)數(shù)據(jù)包括以下步驟:
[0014]1-1)通過(guò)任務(wù)分配調(diào)度機(jī)制獲取目標(biāo)公眾賬號(hào)(即欲獲取數(shù)據(jù)的微信公共賬號(hào)),并進(jìn)行關(guān)注。
[0015]1-2)通過(guò)安卓平臺(tái)應(yīng)用測(cè)試組件模擬用戶行為操作微信客戶端,進(jìn)入公眾賬號(hào)資料界面,獲取賬號(hào)資料信息。
[0016]1-3)由微信公眾賬號(hào)資料界面進(jìn)入歷史消息界面,點(diǎn)擊轉(zhuǎn)發(fā),選擇發(fā)送給朋友,隨機(jī)選擇任意好友,進(jìn)入確認(rèn)轉(zhuǎn)發(fā)界面,通過(guò)定位轉(zhuǎn)發(fā)界面的安卓控件,提取歷史消息頁(yè)面地址。
[0017]1-4)通過(guò)瀏覽器測(cè)試組件打開(kāi)步驟1-3)提取的歷史消息頁(yè)面地址,加載后獲得相應(yīng)的頁(yè)面消息數(shù)據(jù)。
[0018]1-5)將上述歷史消息頁(yè)面地址和相應(yīng)的頁(yè)面消息數(shù)據(jù)進(jìn)行分析和請(qǐng)求鏈接拼接,獲取該微信公眾賬號(hào)所有歷史消息。
[0019]步驟1-5)的具體過(guò)程為:對(duì)于獲得的歷史消息頁(yè)面地址和頁(yè)面消息數(shù)據(jù),分析得到不同參數(shù)的規(guī)律,基于此規(guī)律進(jìn)行下一輪請(qǐng)求的格式拼接并向服務(wù)器發(fā)出申請(qǐng),不斷通過(guò)返回的數(shù)據(jù)進(jìn)行下一輪請(qǐng)求拼接,實(shí)現(xiàn)AJAX通信過(guò)程模擬的數(shù)據(jù)請(qǐng)求,從而獲取該微信公眾賬號(hào)所有歷史消息。
[0020]所述的頁(yè)面消息數(shù)據(jù)包括消息ID、精確的發(fā)布時(shí)間、引用封面的URL、消息的源地址、消息內(nèi)容等數(shù)據(jù)。
[0021]獲取微信即時(shí)數(shù)據(jù)包括以下步驟:
[0022]2-1)通過(guò)瀏覽器測(cè)試組件打開(kāi)網(wǎng)頁(yè)版微信,獲取并下載二維碼。
[0023]2-2)將步驟2-1)下載到的二維碼傳輸給安卓模擬器或安卓真機(jī),然后通過(guò)安卓平臺(tái)應(yīng)用測(cè)試組件打開(kāi)并登陸微信客戶端,客戶端自動(dòng)掃描二維碼,從相冊(cè)獲取并選擇之前傳輸過(guò)來(lái)的二維碼,自動(dòng)掃描二維碼并通過(guò)確認(rèn)按鈕登陸網(wǎng)頁(yè)版微信。
[0024]2-3)通過(guò)瀏覽器測(cè)試組件,監(jiān)聽(tīng)網(wǎng)頁(yè)版微信頁(yè)面DOM元素樹(shù)節(jié)點(diǎn),快速分析獲取微信即時(shí)數(shù)據(jù)。
[0025]進(jìn)一步地,步驟2-2)中通過(guò)Android提供的adb工具將步驟2_1)下載到的二維碼傳輸給安卓模擬器或安卓真機(jī)。
[0026]本發(fā)明還提供了一種微信數(shù)據(jù)獲取系統(tǒng),包括安卓平臺(tái)應(yīng)用測(cè)試組件、瀏覽器測(cè)試組件和數(shù)據(jù)采集模塊;
[0027]所述瀏覽器測(cè)試組件用于打開(kāi)網(wǎng)頁(yè)版微信,獲取并下載二維碼,以及監(jiān)聽(tīng)頁(yè)面DOM樹(shù)節(jié)點(diǎn)以實(shí)現(xiàn)即時(shí)信息的獲??;
[0028]所述安卓平臺(tái)應(yīng)用測(cè)試組件用于模擬用戶行為進(jìn)行安卓端app 二維碼掃描和確認(rèn)登陸操作以實(shí)現(xiàn)Web端微信登陸;以及用于模擬用戶行為進(jìn)入公眾賬號(hào)歷史消息頁(yè)面,通過(guò)解析轉(zhuǎn)發(fā)功能的控件屬性,獲取公眾賬號(hào)歷史消息頁(yè)面地址,以此地址作為種子,結(jié)合歷史消息頁(yè)面元素,拼接得到新的數(shù)據(jù)請(qǐng)求鏈接向服務(wù)器發(fā)起新的數(shù)據(jù)請(qǐng)求,再通過(guò)返回的數(shù)據(jù)拼接新的數(shù)據(jù)請(qǐng)求,以此循環(huán),得到該賬號(hào)全部的歷史消息數(shù)據(jù);
[0029]所述數(shù)據(jù)采集模塊用于將安卓平臺(tái)測(cè)試組件和瀏覽器測(cè)試組件相結(jié)合,獲取微信即時(shí)數(shù)據(jù)和非即時(shí)數(shù)據(jù)。
[0030]進(jìn)一步地,上述系統(tǒng)還包括數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)獲取的微信即時(shí)數(shù)據(jù)和非即時(shí)數(shù)據(jù)。
[0031]本發(fā)明的積極效果如下:
[0032]基于安卓平臺(tái)測(cè)試組件方式,可以模擬用戶行為操作客戶端,包括登陸、查看、滑屏等;由此方式獲取的微信公眾平臺(tái)賬號(hào)歷史消息的網(wǎng)頁(yè)地址結(jié)合主動(dòng)采集技術(shù),可獲取微信公眾賬號(hào)完整的歷史消息。安卓平臺(tái)測(cè)試組件繞開(kāi)了客戶端破解,降低了開(kāi)發(fā)成本以及伴隨版本升級(jí)可能帶來(lái)的破解功能失效,同時(shí)結(jié)合主動(dòng)采集的方式,能夠顯著加快消息的獲取速度。此外,本方式可獲取微信公眾平臺(tái)賬號(hào)的資料等信息。
[0033]I)安卓模擬器下即時(shí)消息無(wú)法直接通過(guò)界面切換獲取,需要獲取最新歷史消息頁(yè)面URL并通過(guò)URL獲取最新的消息,由此需要更多的界面點(diǎn)擊切換以及為了確保大規(guī)模數(shù)據(jù)獲取的即時(shí)性,存在維護(hù)一張歷史消息頁(yè)面URL表的可能需求,需要的資源消耗過(guò)大。基于瀏覽器測(cè)試組件的方式,可以模擬用戶行為操作WEB頁(yè)面,優(yōu)勢(shì)在于能夠模擬用戶行為操作,通過(guò)XPath方式定位和操作DOM樹(shù)以獲得數(shù)據(jù),同時(shí)在后期維護(hù)上僅需要根據(jù)用戶操作進(jìn)行較小的邏輯改動(dòng)就可以適應(yīng)新版本,避免了因