湯艷君,斯嘉懿,李嘉奇
(中國(guó)刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系,遼寧沈陽(yáng)110854)
微信公眾號(hào)是騰訊公司于2012年上線的基于微信軟件開(kāi)發(fā)的一項(xiàng)業(yè)務(wù),目前可分成4類(lèi),分別是訂閱號(hào)、服務(wù)號(hào)、企業(yè)號(hào)和小程序。微信公眾號(hào)成為人們獲取信息的主要途徑。根據(jù)《2017年微信數(shù)據(jù)報(bào)告》顯示,微信公眾號(hào)月活躍賬戶(hù)數(shù)達(dá)到350萬(wàn)個(gè)[1],公眾號(hào)月活躍“粉絲”數(shù)達(dá)到了 7.97 億[2]。涉微信公眾號(hào)違法犯罪是指,嫌疑人以微信公眾號(hào)為媒介和平臺(tái),或者將微信公眾號(hào)作為違法犯罪的工具或直接侵害的對(duì)象所實(shí)施違法犯罪活動(dòng)的統(tǒng)稱(chēng)[3]。微信公眾號(hào)在嫌疑人實(shí)施違法犯罪活動(dòng)中,既可能被作為一種媒介或平臺(tái)也可能被作為違法犯罪的工具,也可能是違法犯罪行為所侵害的直接對(duì)象。涉微信公眾號(hào)違法犯罪問(wèn)題主要出現(xiàn)在注冊(cè)門(mén)檻相對(duì)低、申請(qǐng)條件相對(duì)簡(jiǎn)單且能夠面向個(gè)人開(kāi)放的訂閱號(hào)這一類(lèi)型。微信公眾號(hào)中出現(xiàn)的違法犯罪現(xiàn)象種類(lèi)繁多。其中涉及最多的涉微信公眾號(hào)違法犯罪問(wèn)題就是傳播謠言,傳播謠言的公眾號(hào)多為地域類(lèi)賬號(hào),嫌疑人的動(dòng)機(jī)也是為制造輿論或者博取關(guān)注。微信公眾號(hào)中另一類(lèi)比較常見(jiàn)的違法犯罪是傳播淫穢物品或者組織賣(mài)淫等涉嫌淫穢色情方面的犯罪,嫌疑人利用微信公眾號(hào)為掩護(hù)販賣(mài)淫穢色情音像制品或者將微信公眾號(hào)作為其賣(mài)淫招嫖的工具,這一類(lèi)型的公眾號(hào)通常宣傳的手段比較隱蔽,在固定的群體中流傳比較廣泛。
目前對(duì)利用微信公眾號(hào)違法犯罪取證的研究較少,相關(guān)的研究主要集中在取證思路和方法上。如基于KNN的微信取證[4]、基于Android的手機(jī)微信取證[5]、基于 iPhone手機(jī)的微信聊天記錄提?。?]等,大多是手動(dòng)取證[7],對(duì)涉微信公眾號(hào)違法犯罪自動(dòng)取證的研究,還有待進(jìn)一步深入。
網(wǎng)絡(luò)爬蟲(chóng)技術(shù)是一種通過(guò)訪問(wèn)統(tǒng)一資源定位符(uniform resource locator,URL)來(lái)實(shí)現(xiàn)自動(dòng)訪問(wèn)頁(yè)面內(nèi)容的技術(shù),是一種網(wǎng)頁(yè)自動(dòng)檢索工具,能夠自動(dòng)采集所有其能訪問(wèn)到的頁(yè)面內(nèi)容。使用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)可以獲取目標(biāo)公眾號(hào)所有文章標(biāo)題與地址并獲取“cookies”,實(shí)現(xiàn)自動(dòng)登錄微信公眾號(hào)后臺(tái),達(dá)到模擬登錄的效果,進(jìn)而通過(guò)后臺(tái)文章轉(zhuǎn)發(fā)接口獲取目標(biāo)賬號(hào)的文章標(biāo)題與地址。
為了實(shí)現(xiàn)對(duì)涉微信公眾號(hào)違法犯罪的自動(dòng)取證,本文擬使用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)進(jìn)行微信公眾號(hào)的取證。利用“python selenium”模塊中的“webdriver”驅(qū)動(dòng)瀏覽器自動(dòng)登錄微信公眾號(hào),獲取“token”、“fakeid”等參數(shù),自動(dòng)獲取目標(biāo)賬號(hào)所有的文章標(biāo)題與地址,使用截屏的方式自動(dòng)保存目標(biāo)文章內(nèi)容。
微信公眾號(hào)采用的是瀏覽器-服務(wù)器(browser/server,B/S)結(jié)構(gòu)[8],該結(jié)構(gòu)通過(guò)WWW瀏覽器來(lái)進(jìn)入工作界面,事務(wù)邏輯中的極少部分在前端瀏覽器實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端[9]。目前大多數(shù)手機(jī)的APP都起到了B/S結(jié)構(gòu)中瀏覽器的作用,用戶(hù)在微信軟件中使用公眾號(hào)功能就相當(dāng)于在使用瀏覽器,形成了B/S結(jié)構(gòu)中的表現(xiàn)層(UI)。用戶(hù)使用微信公眾號(hào)點(diǎn)擊瀏覽一篇文章或者點(diǎn)擊某個(gè)菜單按鈕都是向微信WEB服務(wù)器發(fā)送了一條數(shù)據(jù)請(qǐng)求,實(shí)現(xiàn)了表現(xiàn)層(UI)向業(yè)務(wù)邏輯層(BLL)的訪問(wèn)。WEB服務(wù)器再根據(jù)瀏覽器發(fā)來(lái)的不同請(qǐng)求向數(shù)據(jù)訪問(wèn)層(DAL)的數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求數(shù)據(jù),并將應(yīng)答結(jié)果返回給瀏覽器端,微信公眾號(hào)的結(jié)構(gòu),如圖1所示。
圖1 微信公眾號(hào)的結(jié)構(gòu)
通過(guò)注冊(cè)以及調(diào)試之后,在后臺(tái)管理界面,微信公眾號(hào)擁有7個(gè)功能模塊,分別是功能、小程序、管理、推廣、統(tǒng)計(jì)、設(shè)置與開(kāi)發(fā),每一個(gè)模塊下又設(shè)置了不同的操作,可以實(shí)現(xiàn)不同的功能。微信公眾號(hào)的部分功能結(jié)構(gòu),如圖2所示。
(1)功能模塊。運(yùn)營(yíng)者可以設(shè)置微信公眾號(hào)為用戶(hù)提供的功能,包括設(shè)置自動(dòng)回復(fù)、自定義菜單、投票、卡卷以及原創(chuàng)聲明等功能。
圖2 微信公眾號(hào)部分功能結(jié)構(gòu)
(2)小程序。小程序是微信公眾號(hào)推出的一種 功能,是與訂閱號(hào)、服務(wù)號(hào)、企業(yè)號(hào)類(lèi)似的一種公眾號(hào)類(lèi)型。小程序可以是門(mén)店應(yīng)用、小游戲等諸多形式,也可以與公眾號(hào)相關(guān)聯(lián)。
(3)管理模塊。向關(guān)注者推送消息以及與關(guān)注者進(jìn)行互動(dòng)交流,在這個(gè)過(guò)程中,會(huì)涉及到運(yùn)營(yíng)者準(zhǔn)備素材、用戶(hù)關(guān)注以及留言等方面。
(4)推廣模塊。方便運(yùn)營(yíng)者進(jìn)行商業(yè)推廣,運(yùn)營(yíng)者可以申請(qǐng)開(kāi)通廣告主和流量主兩個(gè)功能欄。
(5)統(tǒng)計(jì)模塊。是將微信公眾號(hào)的運(yùn)營(yíng)情況進(jìn)行統(tǒng)計(jì),以圖表的形式直觀反饋給運(yùn)營(yíng)者,方便運(yùn)營(yíng)者對(duì)賬號(hào)進(jìn)行分析進(jìn)而采取下一步運(yùn)營(yíng)策略。
(6)設(shè)置模塊。運(yùn)營(yíng)者可以對(duì)公眾號(hào)進(jìn)行設(shè)置操作,包括公眾號(hào)的基本設(shè)置、認(rèn)證設(shè)置以及一些安全設(shè)置等。
(7)開(kāi)發(fā)模塊??梢詭椭\(yùn)營(yíng)者開(kāi)發(fā)公眾號(hào)的高級(jí)功能,例如配置服務(wù)器、開(kāi)發(fā)接口等,應(yīng)用這一模塊需要具備較高的計(jì)算機(jī)專(zhuān)業(yè)知識(shí)。
取證是破案工作中的重要環(huán)節(jié),涉微信公眾號(hào)違法犯罪的取證方法主要可以從嫌疑人使用的電子設(shè)備以及微信公眾號(hào)前臺(tái)、后臺(tái)等3個(gè)方面進(jìn)行取證。
嫌疑人在實(shí)施涉微信公眾號(hào)違法犯罪時(shí),其使用的電腦以及手機(jī)中肯定會(huì)留有大量的證據(jù)信息。根據(jù)涉微信公眾號(hào)違法犯罪的種類(lèi)不同,本機(jī)取證主要可以從以下幾個(gè)方面進(jìn)行。
(1)對(duì)嫌疑人手機(jī)的取證。在涉微信公眾號(hào)違法犯罪的取證中,要重點(diǎn)關(guān)注嫌疑人的微信記錄,尤其是對(duì)公眾號(hào)的取證。如果是嫌疑人綁定公眾號(hào)的微信是當(dāng)前使用的微信,騰訊會(huì)使其微信自動(dòng)關(guān)注一個(gè)名為“公眾平臺(tái)安全助手”的公眾號(hào),如圖3所示。
公眾平臺(tái)安全助手公眾號(hào)在嫌疑人每次操作公眾號(hào)實(shí)施違法犯罪行為時(shí),會(huì)將所有的操作記錄下來(lái)并發(fā)送到嫌疑人的手機(jī)微信中。因此,根據(jù)該公眾號(hào)的消息記錄可以掌握嫌疑人最近操作使用微信公眾號(hào)的情況,也可以根據(jù)其中的“綁定查詢(xún)”功能查詢(xún)嫌疑人手機(jī)號(hào)、身份證號(hào)以及微信號(hào)綁定公眾號(hào)的情況。
(2)對(duì)嫌疑人電腦的取證。通過(guò)電腦登錄微信公眾平臺(tái)網(wǎng)站進(jìn)行操作也是嫌疑人實(shí)施涉微信公眾號(hào)違法犯罪的主要途徑。取證主要從以下2個(gè)方面的內(nèi)容進(jìn)行。
第一,對(duì)電腦瀏覽器記錄的取證。嫌疑人通常會(huì)使用瀏覽器訪問(wèn)微信公眾平臺(tái),進(jìn)行相關(guān)公眾號(hào)的操作;也會(huì)使用第三方編輯網(wǎng)站對(duì)微信公眾號(hào)內(nèi)容的樣式進(jìn)行編輯。因此,可以通過(guò)對(duì)“cookies”、“history”和“temporary internet files”等涉及瀏覽器使用痕跡的相關(guān)文件進(jìn)行提取與分析[10],將嫌疑人訪問(wèn)微信公眾平臺(tái)頻率、時(shí)間、上傳和下載的文件等信息提取出來(lái),形成完整的證據(jù)鏈,以證明嫌疑人使用微信公眾號(hào)實(shí)施違法犯罪行為的存在。
第二,對(duì)電腦中相關(guān)文件的取證。嫌疑人使用電腦通過(guò)微信公眾號(hào)發(fā)送違法犯罪信息,電腦中會(huì)有準(zhǔn)備的素材??梢詫?duì)嫌疑人電腦中的有關(guān)文件、聊天記錄以及轉(zhuǎn)賬交易記錄等方面進(jìn)行取證。
圖3 公眾平臺(tái)安全助手
涉微信公眾號(hào)違法犯罪,一般在違法犯罪發(fā)生之時(shí),會(huì)通過(guò)手機(jī)以及電腦中的微信客戶(hù)端或者使用瀏覽器訪問(wèn)涉嫌違法犯罪的微信公眾號(hào)鏈接,此時(shí)對(duì)包含違法犯罪信息的客戶(hù)端頁(yè)面進(jìn)行取證。具體的操作方法為:對(duì)顯示證據(jù)信息的頁(yè)面使用截屏、拍照、錄像等方式保存;如果通過(guò)電腦瀏覽器訪問(wèn)客戶(hù)端時(shí)則使用保存網(wǎng)頁(yè)的方法將有關(guān)證據(jù)固定。例如,在嫌疑人傳播謠言的圖文消息等證據(jù)未刪除前,辦案人員通過(guò)關(guān)注此公眾號(hào),訪問(wèn)嫌疑人發(fā)送的謠言信息,及時(shí)將謠言等違法信息通過(guò)截屏或?qū)ζ聊慌恼?、錄像等方式固定下?lái),為抓獲犯罪嫌疑人后的審訊等工作做準(zhǔn)備。與犯罪嫌疑人、被告人供述和辯解,勘驗(yàn)、檢查、辨認(rèn)、偵查實(shí)驗(yàn)等筆錄以及公眾號(hào)后臺(tái)信息等證據(jù)一起形成完整的證據(jù)鏈,使嫌疑人受到應(yīng)有的法律制裁[11]。
涉微信公眾號(hào)違法犯罪的發(fā)生往往都在一瞬間,嫌疑人完成犯罪之后對(duì)證據(jù)的消除也非常迅速。因此,需要在抓獲違法犯罪嫌疑人后對(duì)公眾號(hào)服務(wù)器端的數(shù)據(jù)進(jìn)行取證,這是將涉嫌違法犯罪的公眾號(hào)與現(xiàn)實(shí)中的嫌疑人進(jìn)行關(guān)聯(lián)的重要一步。
(1)對(duì)微信公眾號(hào)的主體信息取證。首先應(yīng)該明確公眾號(hào)的主體信息,通過(guò)對(duì)微信公眾號(hào)主體信息進(jìn)行取證,能夠證明涉嫌違法犯罪的賬號(hào)為嫌疑人所有,解決將網(wǎng)絡(luò)社會(huì)落實(shí)到現(xiàn)實(shí)社會(huì)的問(wèn)題。
(2)對(duì)微信公眾號(hào)發(fā)送的消息取證。嫌疑人在實(shí)施違法犯罪行為時(shí),公眾號(hào)多數(shù)情況下充當(dāng)著信息發(fā)布的工具,通過(guò)分析關(guān)注者與賬號(hào)運(yùn)營(yíng)者之間的會(huì)話,可以掌握嫌疑人實(shí)施違法犯罪行為更加全面的證據(jù)。將違法信息的內(nèi)容和發(fā)送時(shí)間、嫌疑人登錄微信公眾號(hào)后臺(tái)的時(shí)間、嫌疑人手機(jī)中收到的發(fā)送信息成功的提醒三者結(jié)合,可以形成嫌疑人實(shí)施違法犯罪行為的完整證據(jù)鏈。
(3)對(duì)微信公眾號(hào)其他數(shù)據(jù)的取證。統(tǒng)計(jì)模塊相當(dāng)于為取證人員提前做了對(duì)微信公眾號(hào)諸多方面的數(shù)據(jù)統(tǒng)計(jì)。在這個(gè)模塊,取證人員可以根據(jù)案情需要,查看公眾號(hào)所發(fā)消息的送達(dá)人數(shù)、所發(fā)文章的閱讀次數(shù)、自定義菜單的被點(diǎn)擊次數(shù)等信息,還可以在“統(tǒng)計(jì)-消息分析”中搜索包含特定關(guān)鍵詞的消息。
對(duì)微信公眾號(hào)客戶(hù)端取證具有過(guò)程復(fù)雜、接口少、圖片格式特殊等難點(diǎn),且在對(duì)公眾號(hào)進(jìn)行取證時(shí)如使用拍照、截屏等方式過(guò)程相當(dāng)繁瑣,如果將整個(gè)過(guò)程實(shí)現(xiàn)自動(dòng)化可以極大提高工作效率。本程序中使用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的目的是獲取目標(biāo)公眾號(hào)所有文章標(biāo)題與地址,同時(shí)要實(shí)現(xiàn)自動(dòng)登錄微信公眾號(hào)后臺(tái)的需求還需要獲取“cookies”。微信公眾號(hào)自動(dòng)取證程序的主體功能主要有三部分:自動(dòng)登錄微信公眾號(hào)后臺(tái)、自動(dòng)獲取目標(biāo)賬號(hào)所有的文章標(biāo)題與地址、使用截屏的方式自動(dòng)保存目標(biāo)文章內(nèi)容。該自動(dòng)取證程序以Python作為編程語(yǔ)言[12],采用網(wǎng)絡(luò)爬蟲(chóng)與網(wǎng)頁(yè)截屏技術(shù),實(shí)現(xiàn)程序的設(shè)計(jì)。
首先,需要注冊(cè)一個(gè)個(gè)人微信公眾號(hào),通過(guò)后臺(tái)圖文轉(zhuǎn)發(fā)的功能獲取目標(biāo)賬號(hào)的相關(guān)信息。通過(guò)“python selenium”模塊中的“webdriver”驅(qū)動(dòng)瀏覽器登錄微信公眾號(hào),獲取登錄之后的“cookies”信息,并保存到本地文本中。其次,以“https://mp.weixin.qq.com”為 URL 使用上一步獲取的“cookies”信息實(shí)現(xiàn)自動(dòng)登錄微信公眾號(hào)并獲取“token”等參數(shù); 以 “https://mp.weixin.qq.com/cgi-bin/searchbiz?”為“search_url”搜索目標(biāo)賬號(hào)名稱(chēng)并獲取“fakeid”等參數(shù);以“https://mp.weixin.qq.com/cgi-bin/appmsg?”為“appmsg_url”獲取目標(biāo)賬號(hào)所有文章的標(biāo)題與地址并寫(xiě)入本地文件中。最后,通過(guò)“python selenium”模塊驅(qū)動(dòng)“Phantomjs”瀏覽器,使用上一步獲取到的文章標(biāo)題與地址,通過(guò)地址訪問(wèn)對(duì)應(yīng)文章的頁(yè)面,對(duì)網(wǎng)頁(yè)進(jìn)行截圖并以文章標(biāo)題命名寫(xiě)入指定目錄下。
主函數(shù)調(diào)用2個(gè)函數(shù):“weChat_login()”用于實(shí)現(xiàn)登錄公眾號(hào),“get_content(query)”用于爬取目標(biāo)公眾號(hào)文章數(shù)據(jù)并截圖保存。
代碼實(shí)現(xiàn)如下。
if__name__=='__main__':
try:
weChat_login()
for query in gzlist:
print("開(kāi)始爬取公眾號(hào):"+query)
get_content(query)
print("爬取完成")
except Exception as e:
print(str(e))
以Windows系統(tǒng)為運(yùn)行環(huán)境,安裝Python第三方基礎(chǔ)代碼庫(kù)、配置相關(guān)瀏覽器、設(shè)置參數(shù)運(yùn)行自動(dòng)取證軟件,實(shí)現(xiàn)相關(guān)功能。主要操作如下。
(1)使用“pip”命令安裝第三方庫(kù)。軟件中使用到的庫(kù)有“selenium”、“time”、“json”、“requests”、“re”、“random”,其 中“time”、“json”、“re”、“random”均為Python3版本內(nèi)置庫(kù),無(wú)需額外安裝,需要安裝的的第三方庫(kù)為“selenium”以及“requests”。
(2)配置瀏覽器。安裝“Google chrome”瀏覽器并下載對(duì)應(yīng)的“Chromedriver”驅(qū)動(dòng)程序,將“Chromedriver”驅(qū)動(dòng)程序放在“Google chrome”瀏覽器的根目錄下,并修改程序中對(duì)應(yīng)的路徑。下載“Phantomjs”瀏覽器,將“phantomjs.exe”程序放置在“Python”的根目錄下,并在程序中設(shè)置對(duì)應(yīng)的路徑。
(3)設(shè)置參數(shù)并運(yùn)行。取證人員需要輸入自己申請(qǐng)的個(gè)人公眾號(hào)的賬戶(hù)名與密碼,并設(shè)置要對(duì)其取證的目標(biāo)公眾號(hào)的名稱(chēng)列表。將“Python”腳本拖入“cmd”命令提示符框中,點(diǎn)擊“回車(chē)”運(yùn)行,軟件運(yùn)行后,所有的文章截屏圖片都被放入了指定的文件夾中。自動(dòng)取證軟件的運(yùn)行結(jié)果,如圖4所示。
圖4 自動(dòng)取證軟件的運(yùn)行結(jié)果
在研究了微信公眾號(hào)架構(gòu)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一種涉微信公眾號(hào)違法犯罪的自動(dòng)取證方法。該方法通過(guò)后臺(tái)圖文轉(zhuǎn)發(fā)功能獲取目標(biāo)賬號(hào)的相關(guān)信息。通過(guò)“python selenium”模塊中的“webdriver”驅(qū)動(dòng)瀏覽器登錄微信公眾號(hào),獲取登錄之后的“cookies”信息;通過(guò)微信公眾號(hào)固定URL前綴與前一步獲取的“cookies”構(gòu)造出訪問(wèn)URL,實(shí)現(xiàn)自動(dòng)登錄微信公眾號(hào),獲取“token”、“fakeid”等參數(shù)后,獲取目標(biāo)賬號(hào)所有文章的標(biāo)題與地址并寫(xiě)入本地文件中;通過(guò)“python selenium”模塊驅(qū)動(dòng)“Phantomjs”瀏覽器,使用上一步獲取到的文章標(biāo)題與地址,通過(guò)地址訪問(wèn)對(duì)應(yīng)文章的頁(yè)面,對(duì)網(wǎng)頁(yè)進(jìn)行截圖并以文章標(biāo)題命名寫(xiě)入指定目錄下,實(shí)現(xiàn)自動(dòng)取證。經(jīng)實(shí)驗(yàn)驗(yàn)證,所提出的方法可以實(shí)現(xiàn)對(duì)微信公眾號(hào)文章的遠(yuǎn)程、自動(dòng)取證。