• 沒有找到結果。

使用梯度提昇機辨認暗網市場之毒品高衝擊賣家

N/A
N/A
Protected

Academic year: 2021

Share "使用梯度提昇機辨認暗網市場之毒品高衝擊賣家"

Copied!
74
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學理學院 資訊工程學系 碩士論文. 指導教授︰侯文娟 博士. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家 Identifying High Impact Drug Sellers in Dark Net Marketplaces Using Gradient Boosting Machine. 研究生︰張祐誠 中華⺠國一百零九年九月.

(2) ..

(3) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 摘要 本研究將各樣軟體建構成針對暗網購物市場 (DarkNet Marketplaces, 以下簡稱 . DNM) 的爬蟲,繞過身份認證、Cookie 過期、Crawler reject(robot.txt) 等機制,透過 程式取得研究者需要的 HTML 檔,再交由 Jsoup 函式庫剖析需要的網頁欄位,轉成 Json 格式,儲存在本機的資料庫,並透過內建的 cURL 指令存取 Elasticsearch (以下 簡稱 ES),方便後續維護、備份、以及訓練之自動化。 取得的資料,進一步以梯度提昇機 (Gradient Boosting Machine) 的決策樹機器學 習訓練模型,擷取資料中的特徵,找出高衝擊的因素,嘗試預測每個 DNM 中的新貼 文,未來可能的衝擊度,進而排列出此 DNM 中的賣家衝擊度排行。本研究嘗試使用 藥物本身的生物半衰期作為衝擊度的依據,建構相關程式,從可信賴的網站中取得該 藥物的半衰期,並將半衰期轉換為成癮度,作為該藥物對社會造成的量化衝擊。過去 研究者曾針對鴉片類 (Opioid) 藥物做量化衝擊,以各類藥物相對於嗎啡的等效劑量 (potency) 作為其衝擊參考。然本研究欲探討較寬廣的藥物定義,故選擇生物半衰期作 為量化衝擊。 本研究透過 onion live 作為起點,選擇五個性質不盡相同的 DNM,嘗試建構一套 不受限制的爬蟲架構,方便後續研究者取得資料。使用 XGBoost 各別對每個 DNM 訓 練 GBM 模型,從每個 DNM 中隨機取 90% 作為訓練資料,另外 10% 作為測試資料, 計算 Precision, Recall 以及 F1 score,可達到 95% 的 F1 分數。. 關鍵字︰暗網、暗網市場、購物網站、藥物、梯度提昇機. i.

(4) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. .. ii.

(5) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. Abstract This research utilizes various software into a crawler for the DarkNet Marketplaces . (DNM). The crawler first bypasses the authentication , cookie expiration, and crawler rejection (robot.txt) mechanism. It produces the HTML files needed by this research through the crawler and then we hand them over to the Jsoup library to analyze the required fields and convert them to the Json format. After that, we store the data in the localhost database Elasticsearch (ES) by curl commands to facilitate the subsequent maintenance, backup, and automation of training. The training data is further trained with the decision tree machine learning model of the gradient booster machine. The model is built by extracting the features of the data, finds out the high impact cause and tries to predict the possible impact in the future of the new posts in each DNM. Finally, the sellers are ranked in this DNM in terms of impact values. This research attempts to use the biological half-life of the drug itself as the basis for impact, constructs a program to obtain the half-life of the drug from some trusted website, and converts the half-life into the level of addiction, which is represented as the quantitative impact of the drug on society. In the past, researchers have made quantitative impacts on opioids, using the equivalent doses (potency) of various drugs relative to morphine as their impact reference. However, this study wants to explore a broader definition of drugs, so the biological half-life is selected as the quantitative impact. This research chooses onion live as a starting point and selects DNMs with different iii.

(6) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. characteristics to try to construct a set of unrestricted crawler architecture to facilitate subsequent researchers to obtain data. This research uses XGBoost to train the GBM model for each DNM individually, randomly takes 90% of each DNM as training data, and the other 10% as testing data. The evaluation metrics are Precision, Recall and F1 score. An F1 score of 95% was achieved.. Keywords: darknet, dnm, marketplace, drug, gbm, gradient boosting machine, XGBoost. iv.

(7) 目錄. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 目錄 1 簡介. 1. 2 相關研究探討. 5. 2.1. D-miner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 5. 2.2. Hidden service domain analysis . . . . . . . . . . . . . . . . . . . . . . .. 5. 2.3. Identifying high impact opioid . . . . . . . . . . . . . . . . . . . . . . . .. 6. 2.4. Trojanized version of the torbrowser . . . . . . . . . . . . . . . . . . . .. 7. 2.5. DeepDotWeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 7. 2.6. IRS-CI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9. 3 資料集. 11. 3.1. IPv6 disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 12. 3.2. Privoxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13. 3.2.1. listen address . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13. 3.2.2. socks 5 port forwarding . . . . . . . . . . . . . . . . . . . . . . .. 13. 3.2.3. restart privoxy . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 14. 3.3. torbrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 14. 3.4. Elasticsearch, ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. 3.4.1. index API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. 3.4.2. delete API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 16. 3.4.3. search API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 16. 3.4.4. bulk API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 16. v.

(8) 目錄. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 3.4.5 3.5. max result window . . . . . . . . . . . . . . . . . . . . . . . . . .. 17. Jsoup.jar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 17. 主要使用的 package . . . . . . . . . . . . . . . . . . . . . . . . .. 18. JAVA EE json . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 主要使用的 package . . . . . . . . . . . . . . . . . . . . . . . . .. 19. Python packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 3.5.1 3.6. 3.6.1 3.7. 4 爬蟲架構. 21. 4.1. 取得連線到 DNM 需要的 header . . . . . . . . . . . . . . . . . . . . . .. 21. 4.2. 使用 org.jsoup.Connection 取得 HTML 檔 . . . . . . . . . . . . . . . . .. 23. 4.3. 從 Jsoup 透過 bulk API 匯入 ES . . . . . . . . . . . . . . . . . . . . . .. 24. 4.4. DNM 防堵爬蟲要素及其對應的對策 . . . . . . . . . . . . . . . . . . . .. 25. 4.4.1. 資料頁面遺失 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 25. 4.4.2. 帳號密碼登入與圖形驗證碼 (CAPTCHA) . . . . . . . . . . . . .. 26. 4.4.3. 定期 DDOS CAPTCHA 檢測 . . . . . . . . . . . . . . . . . . . .. 26. 5 生物半衰期與商品衝擊. 27. 5.1. 生物半衰期 (Biological half-life) . . . . . . . . . . . . . . . . . . . . . . .. 27. 5.2. 取得半衰期的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 28. 5.3. 衝擊的定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 33. 5.4. 高衝擊的門檻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 36. 6 訓練模型 6.1. 37. XGBoost 的理論基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi. 37.

(9) 目錄. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 6.2. 資料清洗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 43. 6.3. 對 categorical variable 的 one-hot encoding 處理 . . . . . . . . . . . . . .. 44. 6.4. XGBoost 輸出之決策樹的解讀 . . . . . . . . . . . . . . . . . . . . . . .. 44. 6.5. 弱分類器的提昇 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 46. 6.6. 分開訓練每個 DNM . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. 6.7. 設定高衝擊商品貼文數量 . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. 6.8. 模擬預測新張貼的商品貼文 . . . . . . . . . . . . . . . . . . . . . . . . .. 48. 6.9. XGBoost 訓練的完成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48. 7 實驗結果 7.1. 49. 分析造成實驗結果差異的原因 . . . . . . . . . . . . . . . . . . . . . . . .. 8 結論與未來發展. 49. 55. vii.

(10) 目錄. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. .. viii.

(11) 表目次. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 表目次 1. Onion service 包含之 Categories - Domains[5] . . . . . . . . . . . . . . .. 2. 2. 同一個暗網 onion service 被不同的研究歸類到不相同的類別 [5] . . . . .. 6. 3. 各 DNM 所蒐集到的商品項目數量與蒐集日期 . . . . . . . . . . . . . . .. 12. 4. 字串轉為數字的實際範例 . . . . . . . . . . . . . . . . . . . . . . . . . .. 43. 5. 五個 DNM 實驗的數據細項 . . . . . . . . . . . . . . . . . . . . . . . . .. 50. 6. 表 5 中各欄位的解釋 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 50. 7. 各個 DNM 中有參與訓練的欄位 . . . . . . . . . . . . . . . . . . . . . .. 51. ix.

(12) 表目次. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. .. x.

(13) 圖目次. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 圖目次 1. 使用 torbrowser 瀏覽 elite DNM 實際取得的 headers . . . . . . . . . . .. 22. 2. 使用 torbrowser 瀏覽 elite DNM 實際取得的 fields . . . . . . . . . . . .. 25. 3. 爬蟲遭遇 DDOS 檢測導致停下來的實際截圖 . . . . . . . . . . . . . . .. 27. 4. 藥 丸 表 面 的 標 記 為 S 90 3 的 Clonazolam, 圖 片 來 自 https://www.. 5. drugsdata.org/images/display/8000/8752_lg.jpg . . . . . . . . . . .. 30. cannazon DNM 的決策樹 . . . . . . . . . . . . . . . . . . . . . . . . . .. 45. xi.

(14) 圖目次. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. .. xii.

(15) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 1. 簡介. .. Clearnet 指的是可被各大搜索引擎的爬蟲機器人拜訪的網際網路頁面 [1],與之相. 反的,無法被拜訪的網頁稱為 Deepnet,Deepnet 大致分為兩類︰第一類是私人資料庫 (需要身份認證者)、未開放之頁面。第二類是 Onion Router,此專案當時由美國海軍 為了確保軍方內部交換資訊之安全性所開發的資訊安全架構,爾後進一步開放給一般 ⺠眾使用,其原理是建立在非對稱式加密結構,透過公鑰與私鑰,確保第三方使用者, 無法任意竊取已加密的通訊,包含交談的內容,以及交談的參與者。Deepnet 因為不 易探勘而得名,有許多人誤以為深層網路就是等同於暗網,但事實上暗網僅僅是深層 網路的一小部份而已 [2]。其中,第二類,透過 The Onion Router(以下簡稱 Tor[3][4])、 I2P、freenet 等匿名網路 (anonymous network) 連線的部份,有個更為人所熟知的名 稱,Darknet,或是暗網。 由於其安全性與合法性,任何人都可以存取在 Tor 底下的內容且獲得隱私權,所 以時常被犯罪行為濫用,以至於許多人的印象都是 “暗網” 相當於 “犯罪”。根據 [5] 整 理,在暗網中的購物網站 (marketplaces) 中,約有 82% 的內容是關於毒品或麻醉藥。 貨幣交易方式為加密貨幣轉帳 (bitcoin、ethereum、monero 等),因此不易追查金流紀 錄。貨物交易方式為一般的宅配或包裹,住址或聯絡方式等資訊都是建立在賣家與買 家的私訊聊天 (private messgae, pm),且 pm 本身也享受加密效果,雙方之個資不易取 得。 暗網的應用軟體中,以 Tor 所開發的 Tor Browser 最廣為人知,不需要特別高 深的複雜技能,即可享受洋蔥路由的安全性。Tor Browser 以 Firefox Browser 作為 基底,可以瀏覽 clearnet,同時也能訪問傳統瀏覽器無法解讀的 HTTP 協定,例如 ︰http://darkbayupenqdqvv.onion。Tor 稱之為 onion service 或 hidden service,這 1.

(16) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 表 1: Onion service 包含之 Categories - Domains[5] 網域類別 網域數量 佔比 Finance 476 16.0% Drugs/Narcotics 213 7.2% Identification/Credentials 96 3.2% Hacking 54 1.8% Child Exploitation 53 1.8% Pornography - Illicit or illegal 52 1.7% Intellectual Property/ Copyright Materials 25 0.8% Weapons 20 0.7% Violence 10 0.3% Extremism 2 0.1% 是一種由使用者本身經營、Tor 透過非對稱式加密代為保護的伺服器,前例中的網址 形式就是 http://<publicKeyOfTheOnionServer>.onion[4]。 與傳統使用分散式 Domain Name System(DNS) 直接把網址轉成伺服器的實體 IP 位址不同,Tor Project 的 onion service protocol,會在 onion service 的 server 與 client 之間建立會面點 (rendezvous point, RP[4]),因此,即使 server 與 client 互相不知道彼 此的 IP 位址,只要透過 Tor 就能交流封包。RP 是全世界自願加入 Tor Project 的中 繼點 (relay),任何 Tor 的用戶都可以貢獻自己,透過簡單的設定,讓自己變成服務他 人的中繼點。 從 server 到 RP 之間的路線 (circuit) 由三個 Tor 所隨機挑選的 relay 所組成,而 每個 relay 只知道所收到的加密過的封包其上一個來源地與下一個目的地,並不知道終 端是哪個 client 或 server,建立成功的路線,也會在十分鐘之後自動無效並且重建全新 的路線以保障安全。同理,從 client 到 RP 之間的路線也由三個 relay 所組成,藉此來 提高通訊量分析 (traffic analysis) 的複雜度。 Onion service 存在各式各樣的內容,其中牽涉犯罪議題的網域 (Top-level domain) 如表1所示 ,每個類別的定義在 [5] 中有詳細說明。每一個在 onion service 中的網域相 當於 clearnet 的 Website。可發現約有四分之一的網域涉及違法內容,其中大宗為與比 2.

(17) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 特幣相關的犯罪討論,其次為毒品購物市場,已然構成一般⺠眾生活之威脅。 在 特 定 的 DNM 中 取 得 賣 家 與 商 品 之 文 字 資 訊, 使 用 梯 度 提 昇 機 (gradient boosting machine, GBM) 的機器學習模型,試圖以可解釋之分析,辨認高度危害社會 的商品,預測高衝擊商品貼文,進而找出對應之賣家帳號,試圖切斷毒品批發商的最 後一哩通路,削弱毒販的經濟收入。本研究試圖透過多個現有的開放原始碼工具,自 動地預測新刊登的毒品可能對⺠眾造成的衝擊,減輕執法單位所面臨人力時間不足的 困境。分析所得到的賣家帳號,期盼能提供給相關執法單位,令其與相關國際單位合 作,將該賣家的實體 IP 位置找出來,並以此為基礎,往上游追查其貨源,或依據相關 法令將嫌犯逮捕歸案。 本論文架構如下︰ Chapter 1 為論文簡介,Chapter 2 介紹過去相關研究以及與本 研究之關聯,Chapter 3 與 Chapter 4 說明本研究使用的資料集以及其取得方式之實作 細節,Chapter 5 與 Chapter 6 說明訂定的相關指標定義以及介紹所使用的訓練方法, Chapter 7 介紹實驗結果,Chapter 8 說明本研究未來可以如何延伸以及相關未解決的 難題。. 3.

(18) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. .. 4.

(19) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 2 2.1. 相關研究探討 D-miner. . D-miner 由 [6] 研究命名,意指該研究建置的爬蟲架構,建構的宗旨為,透過若 干軟件克服爬取網頁過程中遇到的障礙。遭遇人機驗證 (CAPTCHA) 時,可以運用 Death by Captach (DBC[7]) 軟件解決。Kibana 軟件 [8] 可以協助爬蟲使用者視覺化 資料表徵。Selenium WebDriver[9] 可以協助爬蟲使用者快速通過登入測試,以及控制 Firefox 瀏覽器克服 “DDOS 分散式阻斷攻擊避免提示”,由爬蟲使用者手動通過登入或 人機測試以後,Selenium 會自動把請求匯入爬蟲,並繼續進行爬取。本研究嘗試過後, 選擇可以融入 JAVA 程式的作法,透過 method 取得 cookie 欄位,判斷是否出現特定 字串,若出現則停下爬蟲,並提示使用者進行驗證。 部份 DNM 每次被拜訪時,會產生隨機的 HTML 樣式,也就是 CSS,透過取得特 定欄位,可以過濾掉干擾資料。Python 的 Beautiful Soup 套件可以協助從 HTML 檔 案抽取資料,之後以較具可讀性的 JSON 格式儲存在 Elasticsearch 資料庫中。 本研究參考 D-miner 的作法,使用 Jsoup 函式庫,將相關欄位轉成 Json 格式並存 入 ES,目的在找尋適用於 JAVA 語言的作法。. 2.2. Hidden service domain analysis. . Dalins 等人對暗網中的 onion service 進行分析,試圖提供執法單位暗網中與犯罪 相關的內容概況,並提出使用 Tor 的動機模型 (Tor-use Motivation Model)[5] 對 hidden service domain 分類。過去分析暗網類型的研究,多以網頁內容的範疇 (Category) 作 為分類依據,屬於一維分類器。但每個研究的關注角度不同,所設定的範疇標準不 5.

(20) 2.3. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. Identifying high impact opioid. 表 2: 同一個暗網 onion service 被不同的研究歸類到不相同的類別 [5] Classification/ Category Scenario Guitton (2013) Moore and Rid (2016) Biryukov et al. (2014) CEM producer… Child Pornography Illegitimate Pornography Adult …CEM fiction Child Pornography Illegitimate Pornography Adult Narcotics … Drugs Drugs Drugs Bitcoin … Bitcoin Finance Other 一,容易誤判,如表2,除了 Narcotics marketplace 被一致歸類為 Drugs,其他三個 Scenario 分別被三份研究歸入為不同類。 因此 [5] 作者增加動機 (Motivation) 維度,試圖以人工審查方式標記每個網站內 容中可能潛藏的 “動機 (Motivation)”,如教學文章 (Education & Training)、販售商品 (Marketplace/For Sale)、系統自動產生字元 (System/Placeholder) 等。得到的結果是 恐怖主義的散佈稀少,大宗以貪婪動機的比特幣犯罪與毒品商品交易為主。. 2.3 .. Identifying high impact opioid Po-Yi Du 等人對暗網中最多人使用的 AlphaBay 與 Dream Market 購物網站中刊. 登販售鴉片類麻醉劑商品的賣家進行分析,以 decision tree 的變形 Gradient Boosted Machine,找出影響最巨的賣家帳號 [10]。先以各樣開源工具針對這些 onion service 爬 取資料,建立資料庫將相關數據歸入對應欄位,例如︰賣家評價、成交數量、商品重 量、在倉庫中儲存時間、該商品的藥性效價強度 (potency) 等。其中成交數量、商品 重量、該商品的藥性效價強度,被作為評量是否為高衝擊商品的指標。並針對每個 賣家在商品名稱與商品描述中填入的非結構性文字做潛在語義分析 (Latent Semantic Analysis, LSA),抽取出相互正交的 50 個特徵向量。使用 Extreme Gradient Boosting Tree(XGBoost[11]) 實作 GBM,學習決策樹的結構、每個節點所使用的資料庫欄位、 應該使用的門檻值 (threshold)。該研究試驗 SVM、GBM、NN 搭配 LSA 分別對兩 6.

(21) 2.4. Trojanized version of the torbrowser. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 組資料集做比較,透過多次的成對樣本 T 檢定,發現 GBM 相較 SVM 與 NN 均有顯 著差異,可以得到九成多的準確率 (Accuracy),以及七成多的 F-score。而搭配 LSA 與否並未存在顯著差異,推測需要更深入的自然語言處理程序,將其納入了未來工作。 本研究從 onion live 入口網站 [12] 挑選出熱門的 DNM,一共五個,辨認商品類別 涵蓋 DNM 常見藥物,包含大麻、興奮劑、抑制劑、處方用藥等,同樣使用 GBM,藉 由辨認高衝擊商品貼文來辨認高衝擊賣家。. 2.4. Trojanized version of the torbrowser. . Tor Browser 作為探訪暗網最主要的途徑,被發現出現針對俄語使用者的特洛伊版 本,偽裝成官方版本,竊取使用者在特定購物網站的比特幣。在俄羅斯的線上支付系 統 QIWI 與俄羅斯前三大暗網購物網站的使用者比特幣帳簿被惡意軟體入侵,當使用 者嘗試透過 Tor Browser 在帳號帳戶增加比特幣時,會出現一組位址,用來把使用者 自己的比特幣轉到購物網站。這個惡意 Tor Browser 就是把這個位址換掉,換成這些 罪犯自己的帳戶,這麼一來就能成功偷竊比特幣。據 ESET 統計,已經有 4.8 元比特 幣證實被竊取,約 40000 元美金,而實際遭竊金額必定更多 [13]。 由此可知,torbrowser 的使用者人數已成⻑到犯罪者欲投機取巧的規模,可見 tor 在全球的的影響力以及研究者投入此領域的必要性。. 2.5. DeepDotWeb. . DeepDotWeb作為致力於報導暗網購物網站、比特幣相關訊息的新聞網站,現今網 站只剩下一張被關閉的聲明圖片。DeepDotWeb 於 2019 年 5 月 7 日關閉,同時間各 大新聞網站均報導本消息。關閉的官方理由是 DeepDotWeb 收取特定暗網購物網站 7.

(22) 2.5. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. DeepDotWeb. 的資金,受其委託於 DeepDotWeb 張貼該購物網站的連結以達到宣傳的效果。在調 查期間,DeepDotWeb 將無限期關閉。聲明中有多個執法單位聯名,包含美國聯邦調 查局 (FBI)、歐盟歐洲刑警組織 (Europol)、英國國家刑事局 (British National Crime Agency)、德國聯邦形式調查局 (Bundeskriminalamt) 等 [14]。 暗網與 clearnet 最大的不同,就是所有的伺服器都有可能在下一秒從地球上消失, 並且再也不出現,DeepDotWeb 就是個例子。這是位於 clearnet 的暗網介紹入口網站, 卻也難逃被執法單位勒令關閉的可能性。事實上,過去許多研究者,都有把當時所爬 取到的資料開放給現在的研究者使用,但深入去找尋之後,不難發現當時幾個最大型 的購物網站都已經不復存在,因此若要了解現在的 DNM 現狀,勢必要開發出適用於 每個新生的 DNM 的爬蟲架構。 另外,直接了當關閉 DNM 平台,在某種程度上並不是一件好事情。關閉的只是 交易平台,而且關閉的理由只是因為管理不當,許多曾經關閉了的 DNM 都能夠捲土 重來,以第二代、第三代的角色重新出現,例如︰ empire market、silk road 2 等,只 要足夠低調,忠實買家都會回流。另外,對於藥物供應商而言,手頭的貨物還在,僅 僅是在特定幾個 DNM 的信譽等級歸零而已,只要重新註冊賣家資訊、張貼商品貼文, 又是一條好漢。如此,直接了當關閉 DNM onion service domain 固然有效,卻成果有 限。 根據 [6],當大型 DNM(Alphabay, Silk Road 等) 被關閉以後,幾個較小的 DNM 的新貼文會出現明顯高於過去的突峰 (spike),表示這些賣家都從大 DNM 轉戰到多個 中型 DNM(dream market 等,事實上 dream market 後來也被關閉了),並且繼續對社 會造成衝擊,而且更為分散而難以控管。因此本研究主張應該找尋 DNM 中影響力最 大的賣家本身,而非平台。 8.

(23) 2.6. 2.6. IRS-CI. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. IRS-CI. . 美 國 國 稅 局 刑 事 調 查 處 (Internal Revenue Service Criminal Investigation, IRSCI) 透 過 分 析 全 世 界 區 塊 鏈 以 及 比 特 幣 交 易 去 匿 名 化 (de-anonymizing bitcoin transaction) 來找到散佈在世界各地的犯罪者。2018 年 3 月 5 日 Welcome To Video 被 IRS-CI 與多個跨國調查單位聯合起訴,因為 Welcome To Video 不只在暗網經營購 物網站販賣未成年孩童的色情影片,同時,在逮捕過程中於嫌犯住所發現合計 23 名 正遭受監禁的孩童。嫌犯分散於美國的 23 個州、華府、英國、南韓、德國等超過 10 個國家,一共起訴 337 名嫌犯,主嫌為南韓國⺠,現正關押於南韓本土。全案破獲 約 7.5TB 未成年孩童的影片,其中含有超過 25 萬部影片 (已去除重複的影片),經 過美國國家兒童失蹤與受虐兒童援助中心 (National Center for Missing and Exploited Children, NCMEC) 分析,有 45% 的畫面過去不曾存在過,換句話說,這些影片是由 本案的嫌犯所獨佔 [15]。 暗網的犯罪不僅侷限於藥物濫用,還有更多實體的危害。例如︰性侵害並透過暗 網讓高級用戶下達虐待指令 [16]、販賣人口、木馬程式、勒索軟體、被破解的信用卡 等,不只金額巨大,更嚴重危害社會秩序以及人身安全。部份國家限制人⺠使用暗網, 並將此軟體列為違法軟體,凡使用者,一律視為罪犯。然此舉在人⺠擁有匿名舉報、 集會隱私、拒絕政府監控等人權意識的保護傘之下,無疑是助⻑潛在犯罪的茁壯。. 9.

(24) 2.6. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. .. 10. IRS-CI.

(25) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 3. 資料集. . 本研究使用的作業系統是 Debian GNU/Linux 9 (stretch) 64 bits。 torbrowser 會定期更新所使用的 Circuit,瀏覽時不會出現問題。但是為了建構 onion services 的爬蟲,必須從 HTTP 協定的普通函式庫發出請求。先利用代理伺 服器 Privoxy 把一般的 HTTP 請求轉給http://localhost:9150處理才能真正用到 torbrowser 所建立的 Circuit,否則封包無法傳給 onion service。在爬蟲中呼叫 HTTP 函式的時候,需要設定使用 privoxy 的 Proxy 伺服器http://localhost:8118。 現有許多爬蟲程式支援爬取 onion service,大部份是一般用途的全文檢索爬蟲, 用在建立暗網的搜尋引擎。本研究的研究目標是毒品相關商品,在購物網站內部已經 完成分類,因此網頁分佈明確,類別架構完整。可以利用 Tor Browser 內建的 Firefox Developer Tools (F12) 查詢,直接對 HTTP 回傳的 response 內容進行標籤搜尋即可取 回對應的商品連結、需要的資料欄位,透過程式將抽取出的商品資訊一筆一筆轉成 Elasticsearch 支援的 JSON 格式。 ES 支援 REST 語法,可以透過 HTTP 網址串接 Index 頁的名稱、想要查詢的字 串以及其他 ES 控制命令,在程式中以 JSON 格式取回所儲存的資料,ES 也支援資料 的 aggregation 功能。Gradient Boosting Machine 是 Decision Tree 機器學習的一種變 形,XGBoost 實作了 GBM 以及 [11] 所描述的許多功能,在許多不同領域的研究中得 到相當優異的成績。 本研究資料來源包含下列五個網站 Darkbay、Empire market、Elite、Cannazon market、Canna Home 等五個 DNM,透過自製的爬蟲程式抓取資料。這五個 DNM 分 別有不同規模、防堵機制、經營策略,有部份是一般性購物網站,另一部份是專門領 域購物網站,是現存用戶較多的幾個網站,嘗試找出對現有 DNM 通用爬取架構。 11.

(26) 3.1 IPv6 disable. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 表 3: 各 DNM DNM Darkbay Empire market Elite Cannazon Canna Home. 所蒐集到的商品項目數量與蒐集日期 商品項目數量 蒐集期間 35082 2020-04-06~2020-05-26 41457 2020-04-18~2020-05-26 752 2020-05-22~2020-05-22 912 2020-05-22~2020-05-22 748 2020-05-22~2020-05-22. 有鑑於 DNM 的先天特性,其服務並不穩定,時常關閉、更改網址、修改站名、 甚至強制被 FBI 等執法單位勒令停站,因此,爬取方法無法比照 clearnet。爬取資料 是分析 DNM 的第一步,過去研究者們累積的研究資料,因為停站的原因,現已無法 考證,而且因為年代久遠,資料代表性較弱,因此本研究主張收集最新的 DNM 資料。 選擇蒐集屬性不相同的 onion service 購物網站經營模式,是為了找尋爬蟲遷移典範的 高彈性架構,期望未來建構毒品實時分析系統,同時監控多個購物網站。 本研究嘗試過 D-miner[6] 提供的架構,奈何並沒有全部成功,且筆者更願意嘗試 適合 JAVA 語言的替代方案,因此在 D-miner 的基礎上進行部份修改。 表3是蒐集到的資料數目,每個 DNM 分開訓練模型,各自以 90% 訓練、10% 測試 的比例訓練 XGBoosting Machine。蒐集資料的範圍是 DNM 中的 “Drugs/Chemicals” 分類的全部貼文。這個分類底下有眾多子分類,大部分的 DNM 都會有這個分類,貼 文數也幾乎都是最多的。以下各節詳細說明重要設定與程式功能。. 3.1. IPv6 disable. . 後續將重複嘗試存取 Google Search Engine,必定觸發 CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) 驗證,經過本研 究測試,如果放任 IPv6 開啟,可能讀取不到驗證所需要的圖片,導致無法通過驗證。 一勞永逸的方法就是關閉 IPv6 的通道,以 sudo 身份修改設定檔/etc/sysctl.conf,在 12.

(27) 3.2. Privoxy. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 其中增加一行指令, net.ipv6.conf.all.disable_ipv6 = 1 儲存設定檔並離開文字編輯器,回到終端機 terminal,執行以下指令重新讀取設定 sudo sysctl -p. 3.2. Privoxy. . 本機運行的 proxy 伺服器,其命名是由 private 與 proxy 所結合。主要用途是過濾 廣告以及強化暫存功能,同時也支援 tor 的 port forwarding。安裝指令為 sudo apt install privoxy. 3.2.1 .. listen address. 安裝完成以後,可以發現啟用 privoxy service 失敗,因為之前關閉 IPv6 的緣故, 導致設定檔預設值錯誤,必須先修正才能啟用 privoxy。 以 sudo 身份進入/etc/privoxy/config 修改設定檔,在 Privoxy 的設定檔中的 4.1. 的部份 (或是搜尋 listen-address),把 listen-address [::1]:8118 這行刪除,[::1] 代表的意義是 IPv6,如果保留這行,就會嘗試找尋現存網路的 IPv6 address,並且因為已關閉了 IPv6 而發生錯誤,只刪除這行就可以了。. 3.2.2 .. socks 5 port forwarding. 再到 Privoxy 的設定檔中的 5.2. 的部份 (或是搜尋 forward-socks5t),把 13.

(28) 3.3 torbrowser. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. # forward-socks5t. /. 127.0.0.1:9050 .. 改成. forward-socks5t. *.onion. 127.0.0.1:9150 .. 本來最左邊有個 # 號,表示註解,現在需要使用這個 port forwarding 功能,所以取消 註解。sockes5t 表示使用 SOCKS 5 的協定轉移封包,t 表示 tor。/表示所有網站,也 就是把所有網站都經由 privoxy 傳到 127.0.0.1:9050,如此會造成一般網站也被丟進暗 網裡頭,變成瀏覽一般網頁速度會變得很慢很慢,所以改成 *.onion,表示只處理暗網 網址。127.0.0.1 是本機,因為 privoxy 是安裝在本機。port 9050 是 tor service,port 9150 是 torbrowser,如果 port 沒改,許多 torbrowser 看得到的網頁會抓不下來。最後 的那個點代表轉給 127.0.0.1:9150 以後,下一步就直接轉給使用者想要存取的網站本 身,當本機是處於公司行號或是在 gateway 本來就有架設代理伺服器的話,這裡就必 須換成該 ISP 的 proxy。由於研究者所處的實驗環境原先並沒有 proxy server,故此處 填上一個點,表示不另外做 port forwarding。. 3.2.3 .. restart privoxy. 都完成以後,儲存/etc/privoxy/config 設定檔,並且執行以下指令︰. sudo systemctl restart privoxy. 3.3. torbrowser. . 參考 [3] 安裝 torbrowser,執行爬蟲以前,要先開啟 torbrowser,如此 torbrowser 的背景服務才會正確執行。 14.

(29) 3.4. Elasticsearch, ES. 3.4. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. Elasticsearch, ES. . 在資料庫的實作方面,本研究參考 [17] 安裝軟體,並執行下列指令確認是否服務 是否正常執行 curl -X GET “http://localhost:9200/_cat/health?v&pretty” 使用的是 cURL 指令,如果在 curl 之後只接上一般 HTTP 網址,就會回傳整筆 HTML 檔,這是 Linux 內建的工具。-X 表示指定傳出的請求型態,可以接 GET、POST、 PUT、DELETE 等,根據不同的型態,可能需要給額外的參數。localhost 表示本機, 9200 是 ES 預設的 port,指令的意義是取得本機的 cluster 健康狀態。 在實作 JAVA 爬蟲的時候,使用 JAVA Standard Edition 內建的 Http.net.* 函式, 就是直接取得各個網址的 HTML,所以,JAVA 也可以取得 ES 回傳的資料。換句話 說,JAVA 的 Http.net.* 除了可以取得網際網路的 HTML 檔以外,也用來與本機的 ES 做溝通,無論是在爬取、剖析、訓練資料準備,都需要用到 ES,主要是因為 ES 支援 REST API,所以可以用這樣的指令直接取得資料,也是選用 ES 的最大原因。 ES 內建與許多個程式語言溝通用的 API,可以選擇適合的語言,或者是終端機使 用的 cURL。本研究使用 JAVA 送出包含 REST API 的 HTTP 請求,而不使用內建的 JAVA API,原因是彈性較大。 以下列出幾個較常運用的 API 說明。. 3.4.1. index API. . index 在 ES 代表的意義如下︰. 1. 如果存在就更新。 15.

(30) 3.4. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. Elasticsearch, ES. 2. 如果不存在就創造。 因此,index 相當於一般 SQL 語言的 Create 或 Add,可用在下列用途︰ 1. 建立索引頁 (_index) 相當於 Relational DataBase Management System (以下簡稱 RDBMS) 的 create table,但比較建議針對需要使用到的欄位,建立正確的資料格式 mappings,然 後把 mappings 設定在建立新 _index 時一併匯入,才可以進行資料型態檢測。 2. 建立文件頁 (_doc) 相當於 RDBMS 的 insert values。 3. 更新 _doc 相當於 RDBMS 的 update values。. 3.4.2 .. delete API. 可以用來刪除 _index 或 _doc。. 3.4.3 .. search API. 類似於 RDBMS 的 select,但更接近搜尋,因為 ES 當初建構最大的用途就是補齊 database 欠缺的搜尋功能,所以 search API 是一大重要功能。傳送搜尋索引頁以及相 關參數,就會回傳當前的 read-only snapshot,以字串形式存在,等於資料庫的副本。. 3.4.4 .. bulk API. ES 有內建備份當前 _index 的 snapshot,相當於資料備份,但因為要維護資料完 16.

(31) 3.5. Jsoup.jar. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 整性,不可以直接在檔案總管的界面複製貼上檔案,必須先準備額外的 repository,然 後設定與 repository 的連動。實行上有困難,因此尋求替代作法,就是結合 search 與 delete API,把當前 ES 中的資料全部讀取出來,以純文字檔儲存在硬碟。 而 bulk API 的用途就是把備份的資料,寫回資料庫。因為 search API 抽取的限 制是最上層 10000 筆資料,如果索引頁超過這個數量,就無法被讀取,必須要指定 _id 或者先把上層資料刪除才可以。因此,備份完成後,整個索引頁是空的,這之後 就必須用 bulk API 把大量資料批次以 index 的方式匯入索引頁。. 3.4.5. max result window. . ES 為了確保搜索效能,將每次可以匯入 (bulk)、搜索 (search) 的資料數量設定 為 10000,此數值可以修改,指令如下︰. curl -H ‘Content-Type:application/json’ -XPUT “localhost:9200/<_index 的名稱 >/ _settings” -d‘{“index”:{“max_result_window”:< 每次取得資料之最大數量 >}}’. 其中 <_index 的名稱 > 代表要調整的 _index,每個 _index 的設定是獨立的。< 每次取得資料之最大數量 > 代表資料數量的數值,預設為 10000,可填入正整數,例 如︰ 60000。. 3.5. Jsoup.jar. . 由於一般的爬蟲受制於禮貌條例,必須遵守伺服器端的 robot.txt 規範,如果這個 DNM 把研究者目前使用的爬蟲程式列為黑名單,就會完全沒辦法存取資料,即便從 17.

(32) 3.5 Jsoup.jar. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. torbrowser 可以正常瀏覽,在 JAVA 爬蟲也只能看到被拒絕訪問的頁面。因此必須繞 過 robot.txt,直接以 cURL 抓取 HTML。另一方面,整筆 HTML 檔內容眾多,如果 是全部下載完才開始做刪減,不但耗時又不符合經濟效益。因此研究者主張,在爬取 的過程中,無須儲存整個 HTML 檔,直接利用 Jsoup 函式庫,取得相關欄位,轉成 Json 格式,然後透過 ES 內建的 index API 指令,直接把取得的欄位存入 ES 中。 Jsoup.jar 是效法 Python 的 beautiful soup 所建立的屬於 JAVA 語言的 HTML 檔 剖析函式,可在 [18] 下載,直接儲存在/usr/share/java/。接著切換到家目錄 (cd ~), 編輯.bashrc 設定檔,在最後增加一行指令︰ export CLASSPATH=$CLASSPATH:/usr/share/java/jsoup-1.13.1.jar 其中 export 表示執行後續指令。CLASSPATH 是一個環境變數,JAVA 程式會自動 查詢此變數,確認是否有使用者指定的函式庫路徑。$CLASSPATH 表示先取得目前 CLASSPATH 變數的設定,然後用: 把這行的設定附加 append 到原先的設定,避免完 全覆蓋原始的路徑。.jar 是 java archive 的意思,表示把大量.class 包裝成一個.jar,方 便使用者管理,但因為.jar 不是 JAVA 認得的.class,所以必須把.jar 作為 CLASS 的路 徑,JAVA 才能順利找到.jar 檔案中的大量.class。. 3.5.1 主要使用的 package . org.jsoup 內建有 HTTP 連線使用到的功能,並直接從連線取得的 HTML 轉成 Jsoup.parser 物件。org.jsoup.nodes 把每個 HTML 的元素視為 nodes,這個 package 實 作不同 tag 的 node 與 primitive variable 之間的轉換。org.jsoup.parser 把 Reader 轉為 Parser,作為 Jsoup 與串流文字之間的媒介。org.jsoup.select 主要使用到 Elements 物 件,因為剖析 HTML 檔案時常會回傳 Element 形成的 Array 或 List,Jsoup 將其以 18.

(33) 3.6. JAVA EE json. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. Elements 儲存,方便擴充相關 method 對 Elements 做處理。. 3.6 .. JAVA EE json 本 研 究 使 用 的 環 境 為 Debian 以 及 openjdk-11-jdk, 實 作 了 JAVA 的 Standard. Edition (SE) 內容,但 JSON 格式的剖析會用到 Enterprise Edition(EE) 的 package, 可以到 [19] 下載 javax.json-(version).jar。編輯家目錄的.bashrc 設定檔,在最後增加一 行指令如下︰. export CLASSPATH=$CLASSPATH:/usr/share/java/java.json-(version).jar. 3.6.1 主要使用的 package . javax.json 包含 ObjectBuilder 與相關 Factory method,可以將現有 JsonObject 複 製,並且增加、刪除或修改 Json 的值,或轉換成字串輸出。javax.stream.Parser,用 來把字串轉為 JsonObject 資料。. 3.7. Python packages. . 根據 [11] 研究的整理,XGBoost 的訓練模型在各大競賽都能比其他實作取得更 好的效果,在 XGBoost 的專案中,更針對實際訓練的效能做了許多優化。參考網頁 [20],使用 Pre-built binary wheel 方法,因為需要用到較新的功能,如果直接從 pip 取 得,部份功能無法支援。參考 nightly builds 的安裝方法說明,下載適合作業系統與 CPU 架構的.whl 檔,並且執行下列指令. pip install <所安裝的檔案>.whl 19.

(34) 3.7 Python packages. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 嘗試安裝 XGBoost 的過程中,會連帶將具有相依性的 python 套件一併安裝,包含 numpy、scipy。 XGBoost 的輸入資料必須是純數字,因此需要從文字轉為數字,這其中就必須考 慮抽取的特徵。而在應用在 DNM 的案例中,時常會遇到 categorical variable,也就是 nominal data,例如︰賣家帳號、藥物名稱等。訓練的時候,如果僅是單純轉為整數, 容易誤判成帳號與帳號之間有距離的關聯性差異,可能會影響訓練結果。根據 [21] 的 說明,可以配合 pandas、sklearn 對 categorical variable 做 one-hot encoding,依據每 個 variable 的 domain 大小,決定將變數轉成的行向量之⻑度。. 20.

(35) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 4. 爬蟲架構. . 以下將以本研究所撰寫的 JAVA 程式碼中所使用到的 Class 進行說明。. 4.1 取得連線到 DNM 需要的 header . 先建立 ConnectionMap Class,分別建立三個 Map 作為 member variable,cookieMap、headerMap、fieldMap。 再 分 別 建 立 三 個 methods,setCookie、setHeader、 setField 作為存放實做的 method。其中 cookieMap 與 headerMap 是用來連上 DNM, fieldMap 是用來幫助 Jsoup 定錨 (byId, byClass, byTag 等)。每次要爬取新的 DNM 時,就撰寫新的 JAVA Class,並繼承 ConnectionMap。具體作法如下︰. 1. 啟動 torbrowser 瀏覽器,進入 onion.live[12] 取得目標 DNM 的 public key,順利 進入網頁。. 2. 通過帳號密碼認證 (若有必要,必須先註冊)、手動通過認證碼驗證 CAPTCHA。. 3. 順利登入以後,在 torbrowser 按下 F12,選擇網路 (network),然後按下由上往 下數,第一個遇到的狀態為 200(OK) 的請求,選擇檔頭 (headers)。. 4. 查看請求檔頭 (request headers),因為 JAVA 程式的目的是模擬出瀏覽器所產生 出來的封包⻑相,所以要查看的是請求而非回應。. 5. 把請求檔頭中,cookie 的那一行,全部內容複製,並儲存成 config<DNM>,並 在 setCookie 指定 cookie 檔案的名稱,例如︰ configElite。然後把檔案中的字 串,轉為 Map 儲存在 cookieMap 中。 21.

(36) 4.1 取得連線到 DNM 需要的 header. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 6. 把請求檔頭中,除了 cookie 以外的所有 key value pair 全部在 headerMap 中一一 新增。 範例︰圖 1是實際取得的 headers。把請求標頭中的 Cookie 冒號右邊的全部內 容,儲存在 configElite。. PHPSESSID=jj5vfmqvf8n0jp67qcc6qjv6r. 並在 ConnectionMapElite.java 中的 setHeader 實做 public void setHeader() { headerMap.put("Host", "elitemk4vggs2zlx7rjdc7hrkvrm6bslyetxwfyo5kt2yykgz5yg4wyd.onion"); headerMap.put("Referer", "http://elitemk4vggs2zlx7rjdc7hrkvrm6bslye txwfyo5kt2yykgz5yg4wyd.onion/"); }. 圖 1: 使用 torbrowser 瀏覽 elite DNM 實際取得的 headers 22.

(37) 4.2 使用 org.jsoup.Connection 取得 HTML 檔. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 其他 Accept、Accept-Encoding 等,大部分 DNM 都是相同的,可以撰寫在第一 個實做的 DNM Connection 中,然後往後的每個 Connection 都直接繼承這些共 同欄位。 7. fieldMap 則是依照瀏覽器看到的畫面,把需要的欄位相關的錨點一一新增,而由 於每個 DNM 所呈現的欄位不同,需要的 key 也不盡相同,所以各個 DNM 的 Connection 中的 fieldMap 其實差異很大,因此可以選擇直接反應在程式碼中。 fieldMap 的範列在下一節說明。. 4.2 使用 org.jsoup.Connection 取得 HTML 檔 . 使 用 org.jsoup.Jsoup.connect 把 cookieMap 和 headerMap 作 為 參 數 傳 入, 以 Element 方 式 取 得 HTML 檔 元 素。 從 DNM 都 會 有 的 商 品 列 表 名 單 取 得 超 連 結, 並一一進入商品列表取得需要的欄位。DNM 的商品都會有標題 (title)、商品描述 (description)、價格 (price) 等共同欄位,以及其他每個 DNM 獨有的欄位。 範例︰圖 2是實際取得的商品列表欄位。 在 torbrowser 按 下 Ctrl+Shift+c 進 入 取 得 HTML 元 素 模 式, 用 滑 鼠 左 鍵 點 擊 需 要 的 欄 位。 查 看 HTML 內 文 的 class、id、 或 是 利 用 HTML Document Object Model(DOM) tree 取得需要的資訊。以這個範例而言,fieldMap 的完整實做如下︰ public void setField() { fieldMap.put("productLinkClass", "offer-vertical-title-td"); fieldMap.put("numOfPageClass", "pagination"); fieldMap.put("picSrcClass", "overflow"); fieldMap.put("vendorFeedbackRatingClass", "vendordb-offers-..."); fieldMap.put("titleClass", "offer-vertical-title-td"); fieldMap.put("priceClass", "offer-vertical-td-right"); fieldMap.put("descriptionClass", "scroll"); }. 23.

(38) 4.3 從 Jsoup 透過 bulk API 匯入 ES. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 其中 keys 只是提供給程式撰寫者本身回頭查看時可以快速看懂的 meta-data,實際定 錨的字串為 values。. 4.3 從 Jsoup 透過 bulk API 匯入 ES . 取得特定欄位的資料以後,依據資料型態 (string, int, double, boolean 等),使用 不同變數儲存。轉成 ES bulk API 支援的格式,以透過 cURL 指令匯入 ES,本研究是 將 cURL 做成 Class 並建立相關 method,只要把要存入的資料匯入參數即可。 範例︰以圖 2為例,取得的資料以 Json 格式儲存, { "961":{ "purchase" : 42, "description" : "shakeTIME � ====================================...", "offerSince" : "Nov 22, 2019", "title" : "Crack Cocaine [85%] � 0.5GR � Bolivian [HQ]", "vendorName" : "shakeTIME", "vendorFeedbackRating" : 3, "picSrc" : "/public/offers/shakeTIME/f_5dea283ebe0a5_1575626814/o...", "price" : 59.0, "modifiedDateTime" : "2020-05-22T18:10:01.061225", "views" : 28040 } } 其中標題或商品描述有些特殊字元,會在程式中過濾並忽略。匯入 ES 的同時,紀錄 當前的日期與時間 (modifiedDateTime)。. 把上述 Json 格式,轉為 ES bulk API 可允許的 index 格式如下︰ {"index":{"_index":"elite","_id":"961"}} {"purchase" : 42,"description" : "shakeTIME � ========================= =================...","offerSince" : "Nov 22, 2019","title" : "Crack Cocaine [85%] � 0.5GR � Bolivian [HQ]","vendorName" : "shakeTIME", "vendorFeedbackRating" : 3, "picSrc" : "/public/offers/shakeTIME/f_5d ea283ebe0a5_1575626814/o_thumb.jpg", "price" : 59.0,"modifiedDateTime" : "2020-05-22T18:10:01.061225","views" : 28040}. 24.

(39) 4.4. DNM 防堵爬蟲要素及其對應的對策. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 其中 elite 是索引頁 (_index) 的名稱,可以由使用者自行決定。bulk 的規定很嚴 格,每一筆資料必須恰好兩行。第一行,指令的種類與索引頁或資料辨認符等資訊, 上述範例指定了 index (新增或更新) 的索引頁是 elite,其資料辨認符是字串 961。第 二行,完整的 Json 資料格式,必須全部放在一行裡頭。每次 bulk,最多可以匯入 10000 筆資料,或者修改 _index 的 settings,如3.4.5之設定。. 4.4. DNM 防堵爬蟲要素及其對應的對策. . 在爬取並剖析資料欄位的過程中,通常會遇到一些困難,詳述如下︰. 4.4.1 資料頁面遺失 . 部份 DNM 新增的貼文數量龐大,DNM 伺服器端為了維護效能,時常會將重複、 惡意張貼、過期、違反規範的貼文刪除。所以在爬取的過程可能會取得空 HTML 或連 線失敗的例外情況。需要在 JAVA 程式中訂定 exception,適時停下爬蟲,回報錯誤訊 息,並將已丟失的商品貼文刪除。此步驟依照各個 DNM 的狀況不同,可以使用手動 或是另外寫程式自動判斷。例如︰ empire market DNM 頁面遺失的狀況特別嚴重,可. 圖 2: 使用 torbrowser 瀏覽 elite DNM 實際取得的 fields 25.

(40) 4.4 DNM 防堵爬蟲要素及其對應的對策. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 能過兩天就有好幾百個商品貼文失靈,必須讓程式自動判斷。. 4.4.2 帳號密碼登入與圖形驗證碼 (CAPTCHA) . 在爬 蟲 開始 運 行 以前,必須在 torbrowser 手動登入網頁,並提取請求標頭的 cookie 字串,手動更新到 config<DNM> 檔案中,交由 JAJVA 剖析其 cookie key value pairs。例如︰ empire market 手動登入帳密並通過驗證碼測試以後,必須把 cookie 字 串複製並貼到 configEmpire 檔案中。 本防堵機制只在第一次啟動爬蟲時需要通過,持續時間⻑達一天,影響較小。若 是以 torbrowser 的圖形化界面訪問 DNM 的 “首頁” 都會被要求通過驗證,但若直接訪 問 “商品頁面”,部份 DNM 甚至會直接省略驗證,例如︰ Darkbay。 實 做 這 個 防 堵 爬 蟲 的 機 制 的 DNM 有 Darkbay, Empire market, Canna Home, Cannazon market。. 4.4.3 定期 DDOS CAPTCHA 檢測 . Empire market DNM 因遭受⻑期 DDOS 攻擊,時常隨機進行 CAPTCHA 檢測。 本防堵機制會強迫爬蟲停下來,必須撰寫 exception 處理,待研究者手動通過帳密登入 並更新 config<DNM> 檔案以後,重新啟動爬蟲。爬蟲遇到 CAPTCHA 會停下,如圖 3所示。. 26.

(41) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. .5. 生物半衰期與商品衝擊 透過 JAVA 程式,自動拜訪 Google Search Engine,取得特定欄位,判斷各藥物之. 生物半衰期,作為訂定高衝擊與否之標準。在 [10] 研究中所訂定的量化衝擊,是各麻 醉類藥物相對於嗎啡之等效劑量 (potency) 作為其效性的數值,有相關研究可以佐證。 本研究希望將範圍擴大到 DNM 常見的藥物,除了麻醉類藥物以外,還包含了大麻類 (Tetrahydrocannabinol)、卡西酮類 (Cathinone)、迷幻類 (Psychedelics)、中樞神經刺 激劑類 (central nervous system stimulant) 以及新興影響精神物質 (狡猾家藥物,New Psychocactive Substances,以下簡稱 NPS)。因此嘗試選擇一適用於此範疇的標準,即 生物半衰期。. 5.1 生物半衰期 (Biological half-life) . 任何化學物質在生物體內代謝為當前質量的一半所需消耗的時間。因為藥物在體. 圖 3: 爬蟲遭遇 DDOS 檢測導致停下來的實際截圖 27.

(42) 5.2 取得半衰期的方法. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 內的作用,與藥物代謝動力學 (Pharmacokinetics) 有關,不同攝取方式、性別、身體 狀態、pH 值、年齡、新陳代謝率等因素,在臨床與研究領域,即使是同種藥物,其半 衰期也具有很大的差異,有些有同分異構物 (isomer)、有些有對映異構 (enantiomer) 等,其 half life 不盡相同。 本 研 究 嘗 試 找 尋 具 公 信 力 之 資 料 來 源, 例 如 ︰ 維 基 百 科、leafly.com、drugsdata.com、drugs.com 等,透過自製爬蟲,針對 HTML 檔剖析其各欄位。部份藥物在 上述網站無法順利找到半衰期,由本研究手動搜尋相關資料,加入 ES 資料庫中,盡 可能附上相關文獻的 Document Object Identifier(DOI) 作為參考。. 5.2 取得半衰期的方法 1. getHalfLifeSpecialCases 若標題含有大麻的特殊文字時,直接回傳 Tetrahydrocannabinol 的半衰期。包含 cartridge, dank, vapes, wax, nug, kushy punch, golani, bazooka blunt, stiiizy, bhostco, pirate candy, budder, resin, crumble, cannabis, thc , edible, cigar, shatter, preroll, pre-roll, crisp, krispie, bubblehash, cake, moon, choice, stoney poppers, box, peach rings 等共 30 個詞。. 2. ES.getHalfLife 若 ES 中已經有過此標題的半衰期紀錄,直接回傳。. 3. getSpecificDrugNameByEcstasy 若 標 題 中 含 有 符 合 “\p{Alpha}+\-?\d{2,}” 的 正 則 表 示 式 的 內 容, 就 分 別 到 drugsdata.com 與 drugs.com 查詢。 28.

(43) 5.2 取得半衰期的方法. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 上述 regular expression (以下簡稱 regex) 的意義是︰ (a) 以英文字⺟開頭,數量至少一個,\p{Alpha} 是 JAVA 的一個巨集,位於 java.util.regex.Pattern,表示所有的英文字⺟,包含大寫與小寫,[a-zA-Z]。 (b) 接著有 hyphen 符號,數量一個或零個。 (c) 接著數字,數量至少兩個。 要查詢這樣的 regex 是因為部份藥丸或錠片會以其標示的符號作為其代稱。 例如︰圖 4,實際販售的藥物是 Clonazolam,但在商品貼文的標題可能只有寫 s903。 drugsdata.com 與 drugs.com 是專門登錄藥丸標示符號的資料庫,在查到藥物的 真實名稱後,嘗試到 en.wikipedia.org 查詢。 (a) 如果 en.wikipedia.org 不存在這個藥品,則此方法回傳失敗。 (b) 如果 en.wikipedia.org 存在這個藥物,嘗試 ES.getHalfLife,從 ES 中尋找是 否已經紀錄過。 i. 如果 ES 有紀錄,則回傳已存在的資料。 ii. 如果 ES 沒有紀錄,則判斷找到的頁面是否含有生物半衰期的欄位。如 果有,則取得此欄位,剖析並登錄到 ES;如果沒有此欄位,則回傳失 敗。. 4. getWeighFromScanDescription 嘗試從商品描述中找尋是否存在 “thc” 這個關鍵字。 (a) 如果沒有 “thc”,則回傳失敗。 29.

(44) 5.2 取得半衰期的方法. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. (b) 如果有 “thc”,則往左往右找是否含有數字或是百分比。 i. 如果完全沒有數字,則回傳失敗。 ii. 如果含有數字,則判斷與 “thc” 的距離以及是否位於同一個句子,以篩 選出真正可以代表此商品是大麻類的文字。 A. 如果不位在同一個句子,則回傳失敗。 B. 如果距離太遠,則回傳失敗。 C. 如果數字太多,則保留距離最接近的兩個數字。 D. 最後只回傳一個平均數,代表這個藥物的生物半衰期,登錄 ES 中, 回傳失敗。. 5. getComponentOfIngredient 嘗試從商品描述中找尋是否含有兩種藥物成份的句子。某些錠片本身自帶兩種藥 物以固定比例存在於同一錠片中,取其加權生物半衰期作為混合物之半衰期。 例如︰ id=869 的商品貼文的商品描述為 …Product - Tadalafil 40mg + Dapoxetine 60mg Tadapox… 分別找尋這兩種成份的半衰期,先從 ES 找尋,再嘗試到 en.wikipedia.org 找尋。. 圖 4: 藥丸表面的標記為 S 90 3 的 Clonazolam,圖片來自 https://www.drugsdata. org/images/display/8000/8752_lg.jpg 30.

(45) 5.2 取得半衰期的方法. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 6. exhaustedList 把標題中屬於重量、單位、推銷等,不影響判斷商品類別的字 (ignoreWords) 全 部移除。大量運用 rule base 的 regex 判斷式,找出關鍵字。 ignoreWords 共包含 189 個字,如下所示︰ with, from, to, the, and, no, out, on, or, for, per, in, of, to, only, not, within, than, this, now, very, still, daily, fra, at, also, more, outside, buy, express, post, shipping, pills, pill, ships, back, tested, ir, xr, pay, get, years, promo, smell, offer, comes, supply, do, mix, match, flashback, check, test, import, super, best, good, fast, free, extra, high, uncut, pure, hq, light, dep, medium, black, online, green, nice, gold, grey, orange, top, better, full, cheap, minimum, new, aaa, absolute, sale, special, strong, limited, unlimited, controlled, perfect, old, fresh, white, yellow, guaranteed, sticky, affordable, quick, press, pressed, available, perfectly, strongest, great, beautiful, blister, quality, outdoor, indoor, powder, store, listing, bar, bars, bonus, discount, spongebob, purity, donald, trump, b.o.g.o, bottle, bottles, tab, stock, owl, lab, pesticide, ip, hours, pieces, opening, bulk, monkey, color, rolex, sample, deps, fire, vials, form, pellets, track, we, one, discount, price, prices, level, deals, deal, result, capsules, web, vial, givenchy, charge, ndd, stuff, alexander, shulgin, pack, packs, colombian, kolumbien, columbian, ww, our, canada, afghan, iranian, dutch, bolivian, europe, netherlands, worldwide, norway, turkish, cali, peruvian, peru, us, usa, amsterdam, mexican, romania, uk, germany, eu, euro。. 將 剩 餘 下 來 的 字 集 合 稱 為 keytokens, 將 keytokens 串 連 起 來, 列 入 Google 31.

(46) 5.2 取得半衰期的方法. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. Search 作為關鍵字。. (a) 到 ES 找尋是否曾經登錄。 (b) 到 en.wikipedia.org 嘗試是否存在有生物半衰期的欄位。 (c) 到 leafly.com 嘗試是否存在這種大麻配方。 leafly.com 介紹許多經典的大麻配方,大部分都使用實際存在的一般商品的 名稱,一方面拉近距離,一方面掩人耳目。 例如︰ wedding cake,直接搜尋 en.wikipedia.org 會找到結婚蛋糕。但在 leafly,可以找到配成 wedding cake 需要的內容以及完成品的口感、副作 用、以及幻想過程的大致感受。 嘗試找尋是否存在說明含有的 THC 含量的欄位︰ i. 如果存在,則登錄此商品。 ii. 如果不存在,則回傳失敗。. 進行 Google Search 時,將每個 keytoken 以窮舉的方式一一測試,過程中保持 keytoken 之間的順序。例如︰ keytokens 為 crystal, meth, originalspeedy, heroine, speed, mdma,則窮舉如下︰ crystal, meth, originalspeedy, heroine, speed, mdma crystal, meth, originalspeedy, heroine, speed meth, originalspeedy, heroine, speed, mdma crystal, meth, originalspeedy, heroine meth, originalspeedy, heroine, speed originalspeedy, heroine, speed, mdma crystal, meth, originalspeedy meth, originalspeedy, heroine originalspeedy, heroine, speed 32.

(47) 5.3 衝擊的定義. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. heroine, speed, mdma crystal, meth meth, originalspeedy originalspeedy, heroine heroine, speed speed, mdma crystal meth originalspeedy heroine speed mdma. 對於每個窮舉的選項,都需要嘗試 ES、wiki、leafly。如果全部都失敗,則加上 “halflife” 的關鍵字重新跑一遍窮舉。如果還是全部都失敗,則回傳失敗。. 7. 透過研究者手動添加半衰期資料。 不符合上述方法的資料必須手動增加,列舉如下︰. Cannabidiol, Tetrahydrocannabinol, Amphetamine_aspartate_monohydrate, Amphetamine_sulfate, Dextroamphetamine_saccharate, Dextroamphetamine_sulfate, Dapoxetine, Tadalafil, Mitragyna_speciosa, Meow, Psilocybe_cubensis, 2C-B, 3-MeO-PCP, Crack_cocaine。. 5.3 衝擊的定義 . 衝擊有三層,第一層為商品的衝擊,第二層為此商品貼文的衝擊,第三層為賣家 33.

(48) 5.3 衝擊的定義. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 造成的衝擊。相關衝擊公式如 (1a)、(1b)、(1c) 所示. Ip (i) =.      f (θ − HF(i)) if θ − HF(i) > 0     0. if θ − HF(i) ≤ 0. Io (i) = Ip (i) × i.sold ∑. Is (j) =. (1a). Io (i). (1b) (1c). ∀seller(i)=j. 符號定義如下︰ 1. i,instance,代表一筆資料,於本研究中,每筆資料都是 DNM 中的一則商品貼 文。. 2. HF(i),half life of instance,此商品貼文之生物半衰期。 3. Ip (i),product impact of instance,此商品貼文實際販賣之商品的衝擊。 4. θ,threshold,門檻值,θ = 48 (hours)。 此門檻值的訂定其實只是憑筆者的直覺以及生活經驗,因此在不同研究之間存在 差異。事實上對人體的傷害所需要的 half life 應該小於 48 小時許多,唯本研究 希望放寬考量範圍,故擴大到 48 小時。 若不使用門檻值,真正造成高衝擊的藥物之間 (半衰期短) 的距離會被壓縮,無 法真實呈現其衝擊差異。 例如︰本研究蒐集到的所有藥物中,擁有最低與最高生物半衰期的藥物分別為 Heroin(2.5 分鐘,約 0.041667 小時) 與 Boldenone undecylenate(14 天,約 336 小 時)。半衰期越短則成癮性越強,因此量化衝擊越大,考慮將每個藥物的半衰期 34.

(49) 5.3 衝擊的定義. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 對最大半衰期做線性反轉求出 Ip (i)。以古柯鹼 (half life = 1 小時) 與大麻 (half life = 30.3 小時) 為例,在不使用門檻值的情況下,以 336 分別減去 1 與 30.3 可 得 335 與 305.7。但事實上古柯鹼造成的成癮性遠大於大麻,且兩者之間的關聯 並不是 335 與 305.7 的關聯,古柯鹼到大麻的距離應該要再更大一些。筆者認 為,半衰期只要超過一定限度,身體就有辦法自然代謝,而不造成後遺症,故主 張設定 θ 以符合實際情況。 以這個例子展示,如果套用了門檻值的設定,則古柯鹼與大麻的 Ip (i) 分別為 48-1=47 與 48-30.3=17.3,比較能夠反應真實藥物效性。. 5. f ,正規化的線性函數,f (x) =. 100 x。 47.958333. 在套用門檻值算出商品衝擊以後,將最大值正規化至 100、最小值正規化至 0。 參數推導如下︰ 本 研 究 蒐 集 到 的 所 有 藥 物 中, 擁 有 最 低 與 最 高 生 物 半 衰 期 的 藥 物 分 別 為 Heroin(2.5 分鐘,約 0.041667 小時) 與 Boldenone undecylenate(14 天,約 336 小 時)。 對 應 的 商 品 衝 擊 分 別 為 48-0.041667=47.958333 與 0(因 為 已 超 過 θ)。 令 f (x) = ax + b,欲使得 f (47.958333) = 100, f (0) = 0,可求得 a, b 分別為 與 0,得證。. 6. i.sold,number of sold of instance。 此商品貼文成功交易的次數。. 7. Io (i),offer impact of instance。 商品貼文衝擊 = 商品衝擊 × 此商品貼文成功交易的次數。 35. 100 47.958333.

(50) 5.4 高衝擊的門檻. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 8. j,賣家。 9. Is (j),seller impact of instance。 此賣家造成的衝擊 = 屬於此賣家的所有商品貼文衝擊之總和。. 5.4 高衝擊的門檻 . 後 90% 的商品對整體社會所造成的衝擊小於 1%,而前 10% 的商品對整體社會所 造成的衝擊高於 99%[10],因此訂定 90% 為高衝擊的門檻。例如︰此 DNM 共有 1000 筆商品貼文,個別計算每個貼文的衝擊並由大到小排序,則真正高衝擊的商品貼文即 為擁有最高衝擊的前 100 筆商品貼文,其餘均為非高衝擊商品貼文。. 36.

(51) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 訓練模型. 6 .. [10] 提出了一個可解釋的文字分析方式,辨認 DNM 中的高衝擊鴉片類商品與關 鍵賣家。考慮到研究目的設定為,替執法機關過濾出影響社會安定最巨之貨物源頭, 辨認賣家的過程,必須透明、可解釋、符合直覺。故不考慮類神經網路作為訓練模型, 而選擇了決策樹。 再考慮到 DNM 生態的現況,大部分的成功交易,集中在少數的商品貼文以及賣 家,也就是八二法則或是九一法則。因此本研究的二元分類器 (binary classifier) 標注 固定有 90% 的非高衝擊以及 10% 的高衝擊,在已知此限制的前提之下,可知道訓練 出的模型屬於 weak learner,也就是相較於隨機猜測提昇較少。要獲得更好的效果,需 要配合 decision tree 的 aggregation,將多個弱分類器 (weak classifier) 結合形成一個較 強的分類器,此過程稱為提昇 (Boosting)。分類與回歸樹 (classification and regression tree) 透過樹狀結構在每個節點放置分堆條件,讓每筆資料最後被歸到唯一一個葉節 點,這過程即可完成分類。透過 XGBoost 軟件訓練整顆樹的結構以及對應的葉節點分 數。. 6.1. XGBoost 的理論基礎. . XGBoost 嘗試最小化目標函數的值 Obj(Θ) = L(Θ) + Ω(Θ)[22] 1. Θ 代表的是這個模型中需要訓練的所有變數之集合。 2. L(Θ) 代表這個模型符合訓練資料的程度,trianing loss。 3. Ω(Θ) 代表這個模型的複雜程度,越複雜,懲罰越高,regularization。 37. (2).

(52) 6.1. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. XGBoost 的理論基礎. 4. Obj(Θ) 代表這個模型最終是否被接受的目標函數,越低則越好。. Boosting 是將多棵簡單的樹組合成一棵較複雜的樹,每個葉節點指向一個常數,代表 每筆資料最終得到的分數,把每筆資料在每顆簡單的樹得到的分數相加,這個過程就 稱為 tree ensemble。 假設最終的模型由 K 棵樹所組成,每棵樹視為一個 function,作用是把資料映射 到一個常數,可以被簡化為 yˆi = ΣK k=1 fk (xi ), fk ∈ F [22]. (3). 1. yˆi 代表第 i 筆資料經過這個模型以後得到的值。. 2. K 代表最終模型由幾棵樹所組成。. 3. k,iterator。. 4. xi 代表第 i 筆資料。. 5. fk (xi ) 代表第 i 筆資料通過第 k 棵樹以後得到的值。 6. F 代表所有迴歸樹所對應的函數形成的集合。 由 (3) 的假設,(2) 可改寫成 Obj(Θ) = L(Θ) + Ω(Θ) (4) = Σni=1 l(yi , yˆi ) + ΣK k=1 Ω(fk ) 1. i 表示 instance,訓練資料。. 2. n 表示整個訓練集的資料總數。. 3. l 代表實際的 loss function,依照訓練目的不同可以改變,常見的 loss function 有 38.

(53) 6.1. XGBoost 的理論基礎. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. (a) Square loss,本實驗以下 l 的定義。 l(yi , yˆi ) = (yi − yˆi )2 [22]. (5). l(yi , yˆi ) = yi ln(1 + e−ˆyi ) + (1 − yi )ln(1 + eyˆi )[22]. (6). (b) Logistic loss. 回頭考慮 (3),使用 additive training,每一個 iteration 選擇當前最優的選擇 (greedy), 下一個 iteration 直接沿用過去的 function。. (0). =0. (1). = f1 (xi ) = yˆi + f1 (xi ). (2). = f1 (xi ) + f2 (xi ) = yˆi + f2 (xi ). yˆi yˆi yˆi. (3). yˆi. (0). (1). (7). (2). = f1 (xi ) + f2 (xi ) + f3 (xi ) = yˆi + f3 (xi ). ... (t). (t−1). yˆi = Σtk=1 fk (xi ) = yˆi. + ft (xi ). 將 (7) 的概念代入 (4) 可得 (t) Obj (t) = Σni=1 l(yi , yˆi ) + Σti=1 Ω(fi ) [22]. (8). 注意其中原本參數為 Θ 的函式都改以第 t iteration 表示。且原本是 K 棵樹,現在改 為 t 棵樹,與 iteration 數量相同,暗示著模型訓練的回合數就是最後模型的樹高。 此處 t 個 round,即為 boosting 的結果。每個弱分類器其實只有一層,一共兩個 葉節點。將多個一層子樹組裝 (ensemble),最終可得到單一棵高度大於 1 的樹,即為 實際的決策樹,此處高度為 t。 39.

(54) 6.1. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. XGBoost 的理論基礎. (t). 將 yˆi 代入可得 (t−1). Obj (t) = Σni=1 l(yi , yˆi. + ft (xi )) + Ω(ft ) + constant [22]. (9). 注意其中 regularization 的部份把前 t − 1 個 round 所建立的樹視為常數分離出來,只 考慮第 t round 的樹的複雜度。 再考慮 Taylor expansion 1 f (x + ∆x) ≃ f (x) + f ′ (x)∆x + f ′′ (x)∆x2 [22] 2. (10). 推得 (t−1). l(yi , yˆi. + ft (xi )) ≃ (11). (t−1) (t−1) )ft (xi ) )+∂yˆ(t−1) l(yi , yˆi l(yi , yˆi. 注意在 l 中 yi 為常數,所以 l′ (yi , yˆi. (t−1). 1 (t−1) + ∂yˆ2(t−1) l(yi , yˆi )ft2 (xi ) 2 (t−1). ) 相當於對 yˆi. 微分 (或偏微分)。因此 (11). 可以進一步改寫成 (t−1). l(yi , yˆi. (t−1). 其中 gi = ∂yˆ(t−1) l(yi , yˆi. (t−1). + ft (xi )) ≃ l(yi , yˆi. 1 ) + gi ft (xi ) + hi ft2 (xi ) 2. (t−1). ),hi = ∂yˆ2(t−1) l(yi , yˆi. (12). ),在決定 loss function 的時候就已經. 決定。 將 (12) 代入 (9) 可得 (t−1). Obj (t) ≃ Σni=1 [l(yi , yˆi. 1 ) + gi ft (xi ) + hi ft2 (xi )] + Ω(ft ) + constant 2. (13). 如前所述,在考慮第 t round 時,前 t − 1 round 的結果全部都是為固定且常數,因此 (13) 可以再簡化為 1 (t) Objnew ≃ Σni=1 [gi ft (xi ) + hi ft2 (xi )] + Ω(ft ) [22] 2. (14). 從 (13) 至 (14) 省略了許多對於第 t round 而言的部份常數,所求取的目標函數與最初 40.

(55) 6.1. XGBoost 的理論基礎. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. (t). 的目標函數有所不同,因此以下標 new 表示。但是,可以保證 Objnew 有最小值時, Obj (t) 也會有最小值 回頭考慮 ft (xi ),其意義為將第 i 筆資料經過第 t round 的樹所得到的值。每顆樹 的參數有 1. T 葉節點的總個數。. 2. wj 第 j 個葉節點的數值 (weight)。 3. q(xi ) 第 i 筆資料會被對應到第幾個葉節點,一個 mapping function。 令透過 q 映射到第 j 個葉節點的訓練資料集合為 Ij ,例如︰ I3 表示被 q 映射到 3 號 葉節點的所有訓練資料之集合。因此. 1 Σni=1 [gi ft (xi ) + hi ft2 (xi )] 2 1 2 =Σni=1 [gi wq(xi ) + hi wq(x ] i) 2 1 =ΣTj=1 [(Σi∈Ij gi )wj + (Σi∈Ij hi )wj2 ] 2. (15). 1 =ΣTj=1 [Gj wj + Hj wj2 ] 2. 這個步驟主要是把 f 分離成 q 與 w,讓落到同一個葉節點的訓練資料可以合併起來, 只以一個 w 表示其數值。在第一行公式中的 xi 是 ft 的參數,但在第二行公式中的 xi 是 q 的參數 (並不是 wq ),已經挪到下標中。第三行公式透過葉節點合併,所以 41.

(56) 6.1. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. XGBoost 的理論基礎. summation 的 iteration 從 1 到 T ,是葉節點的個數,不再是訓練資料的個數,這個特 色讓訓練得以簡化。第四行公式做符號簡化,令 Gj = (Σi∈Ij gi )、Hj = (Σi∈Ij hi )。 將 (15) 代入 (14) 可得. 1 (t) ≃ ΣTj=1 [Gj wj + Hj wj2 ] + Ω(ft ) [22] Objnew 2. (16). Ω(ft ) 的意義是第 t 棵樹的複雜度或稱為 regularization,葉節點越少越好、葉節點數值 (weight) 絕對值越小越好。因此定義. 1 Ω(ft ) = γT + λΣTj=1 wj2 [22] 2. (17). 其中 γ 與 λ 都可以在 XGBoost 的實做中找到參數調整。Ω(ft ) 與 wj 的絕對值有關, 所以取二次方,而且恰好可以與括弧內的項合併,因此才多了一個 12 。 將 (17) 與 (16) 合併之後可得. 1 1 (t) Objnew ≃ ΣTj=1 [Gi wj + Hj wj2 ] + γT + λΣTj=1 wj2 2 2 =. ΣTj=1 [Gj wj. (18). 1 + (Hj + λ)wj2 ] + γT 2 (t). 這是一個 wj 的二次多項式,希望 Objnew 越小越好,因此在 Hj > 0 與 q 固定的前提 G2. j j 下,當 wj = wj∗ = − Hj +λ 時,Objnew(t) 有最小值 min = − 12 ΣTj=1 Hj +λ + γT 。. G. 這個 wj∗ 就是最終模型要在每個葉節點填入的值。 但是,在 q(也就是樹的結構) 尚未確定之前,沒辦法取最小值。正規的作法,是 (t). 要窮舉出所有可能的 q,然後各別計算各自的 Objnew ,取產生最小值的那個 q。該如何 42.

(57) 6.2 資料清洗. 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 表 4: 字串轉為數字的實際範例 原始資料. 轉換後資料. { “vendorRule” : “KING OF …”,. { “vendorRuleWordCount” : 800, “vendorRuleEmphasizeProportion” : 0.02125, “availability” : “Concentrates”, “titleWordCount” : 14, “titleEmphasizeProportion” : 0.35714285714285715, “vendorName” : “KINGOFCARTSUK”,. “availability” : “Concentrates”, “title” : “1x KING OF C…”, “vendorName” : “KINGOFCARTSUK”,. 肯定下一個 round 多一個葉節點可獲得更小的值呢?其實有可能本層多個葉節點造成 更大的值 (較差),但再下一層以後扳回來,反而得到更小的值。實做卻有困難,於是 XGBoost 選擇的作法是捨棄此階段表現較差的可能,也就是 greedy。 只考慮本 round,取最佳者,也就是能夠最大化 Gain 者,定義如下. 1 G2L G2R (GL + GR )2 Gain = [ + − ]−λ 2 HL + λ HR + λ HL + HR + λ. (19). 6.2 資料清洗 . XGBoost 只接受數字型資料,包含欄位與資料都必須轉成數字,由研究者自行保 存轉換的對應,以便在訓練完成以後解釋與分析。本研究對於商品貼文標題、商品貼 文描述、賣家寄送規則、賣家介紹等欄位,轉為字數以及強調字數比例,這個轉換方 法參考自 [10]。其中,強調字數比例是指全大寫的字詞,佔整篇欄位的比例。例如︰ 表4的左欄是原始資料,第一列將賣家的寄送規則字串,轉換成賣家寄送規則字數與賣 家寄送規則強調字數比例兩個欄位。第二列將可用性字串保留,原因是可用性屬於 categorical variable,必須做額外處理,詳見第6.3節。同理,第三列顯示標題轉為字數 與強調字數比例。而第四列的賣家名稱保留下一階段處理。 43.

(58) 使用梯度提昇機辨認暗網市場之毒品高衝擊賣家. 6.3 對 categorical variable 的 one-hot encoding 處理. 6.3 對 categorical variable 的 one-hot encoding 處理 . 為確保資料之間的距離不受順序之影響,對於 categorical variable 必須做轉換。 在本研究的 DNM 案例中,賣家帳號與商品的類別需要特別注意。 例如︰ (biohealing, 30) (shakeTIME, 6) (HightGlass, 33) (GreatShop1, 45) (0ctopus, 27) (MissUSA, 15) …是賣家帳號對應流水編號,如果直接把賣家 biohealing 轉成 30,會很容易讓 HightGlass 的 33 和 30 牽扯出相似特徵,但事實上,這只是流水號, 並不存在這層意義,必須轉成向量。. 假設賣家帳號總共有 N 個,則. 1. biohealing 會轉成 v = (v1 , v2 , v3 , . . . , vN ),其中 v30 = 1,vj = 0, ∀j ̸= 30。. 2. HightGlass 會轉成 v = (v1 , v2 , v3 , . . . , vN ),其中 v33 = 1,vj = 0, ∀j ̸= 33。. 如此一來,biohealing 與 HightGlass 的距離,會與 biohealing 與其他任何賣家帳號距 離一致。 具體轉換可以參考 [21],需要用到 pandas、sklearn、numpy 等套件的工具。. 6.4. XGBoost 輸出之決策樹的解讀. . 在 XGBoost 這個訓練軟體中,可以設定所需要的訓練回合數、最大葉節點數、損 失函數等,還有更多可調整的設定與參數。最後輸出的模型是一棵二元樹,每個中間 節點包含判斷的欄位以及數值,每個葉節點含有 ∈ (−1, 1) 區間的小數 (weight)。決 策樹的結構、中間節點選擇的欄位、中間節點選擇的門檻值、葉節點的值,全部都由 44.

參考文獻

相關文件

 不過以上所提的內容幾乎都會被現在的智慧型手機取 代,因此我們覺得這些功能能夠運用在一個沒有網路

 Request.Cookies[ &#34;Cookie 名稱&#34; ].Value –取得使用者所傳送的 Cookie 內容. 

/ 22K

2月28日至3月31日 學校透過SEMIS提交報名申請 學校透過SEMIS提交學生報讀課程的報名表 4月11日至 29日 機構安排學生進行甄選面試

• 倘申請時尚不具本資格,得於課程通過 認證後一年內取得;若未能於課程通過

3 月29日至 4月27日 學校透過SEMIS提交報名申請 學校透過SEMIS提交學生報讀課程的報名表 5月12日至 6月2日

三年級 園藝種植 校內各種植區、溫室水耕 四年級 有機堆肥 有機堆肥機、堆肥筒. 五年級 有機耕種 有機耕種田園、天台園圃、智能溫室

服務提供者透過 SOAP 訊息將網路服務註冊在 UDDI 中,服務需求者也可以透 過 SOAP 向服務仲介者查詢所需的 Web Service 並取得 Web Service 的 WSDL 文件,2.