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