1. 程式人生 > >從HTML原始碼和頁面正文中提取特徵向量

從HTML原始碼和頁面正文中提取特徵向量

一、從樣本頁面的HTML原始碼中提取特徵向量

1、從HTML原始碼中提取預設標籤的數量

    頁面的HTML原始碼中存在不同的Tag標籤,伺服器可以對這些標籤的數量進行統計,獲得釣魚網站的特徵向量。以標籤“title”為例,通常釣魚網站為了防禦安全檢測網站的檢測行為,會對title標籤進行巢狀,即設定一個空的title標籤,然後在該標籤中再設一個真正的title標籤。而正規網站的頁面原始碼中則不會出現這種問題,正規頁面原始碼中只有一層title標籤。因此伺服器可以將title標籤的數量作為樣本頁面的特徵向量進行提取和使用。

    實際應用中,伺服器可以統計的標籤包括但不限於是下述幾種標籤:〈title>、〈body〉、<h>、、<a>、<img> 等。

2、從HTML原始碼中提取預設關鍵詞

    HTML原始碼中的一些關鍵詞也能夠體現釣魚頁面的特點,例如“window.location”、“document.net”等。伺服器可以對這些特定的關鍵詞進行統計,獲得樣本頁面的特徵向量。實際應用中,伺服器可以統計樣本頁面中有否出現過特定關鍵詞,也可以統計特定關鍵詞出現的數量。

3、從HTML原始碼中提取貢獻度排名靠前的預設數量的程式碼分片

    伺服器從HTML原始碼中提取貢獻度排名靠前的預設數量的程式碼分片,作為特徵向量。所謂程式碼分片是指按照預設長度擷取的程式碼字串,所謂貢獻度則用於表徵程式碼分片對樣本頁面區別於其他頁面的貢獻程度。


    過程如下:

    3.1 將HTML原始碼轉換為二進位制資料流

    3.2 通過預設位元組長度的時間視窗對二進位制資料流進行切片,獲得多個程式碼分片

        本實施例中時間視窗的預設位元組長度可以設定為10或者16,本實施例不對具體的位元組長度進行限制。在獲得資料流後,從資料流的第一個位元組開始向後(當然也可以是從最後一個位元組開始向前)使用時間視窗擷取一個長度為10位元組或16位元組的字串,然後時間視窗向後移動一個位元組,繼續擷取下一個字串,以此類推,直至時間視窗移動到資料流結尾處為止。

        示例性的,假設資料流長度為256位元組,時間視窗的位元組長度為10,伺服器通過時間視窗擷取的程式碼分片數量為247個。伺服器擷取的程式碼分片數量由資料流的長度和時間視窗的位元組長度共同決定,對於N個位元組的資料流而言,如果使用位元組長度為X的時間視窗擷取,則會獲得“N-(X-1) ”個程式碼分片。

    3.3 對獲得的程式碼分片按照貢獻度大小進行排序

        可以使用資訊增益演算法(information gain)對程式碼分片按照貢獻度排名,貢獻度大的程式碼分片排名靠前。

    3.4 從排序後的程式碼分片中提取貢獻度排名靠前的預設數量的程式碼分片

    進一步的,伺服器可以使用時間視窗對資料流從前致後做一次切片,並進行排序獲得預設數量個程式碼分片,然後再使用同一個時間視窗對資料流從後至前做一次切片,並進行排序獲得預設數量個程式碼分片。最終將兩次獲得的程式碼分片作為特徵向量使用。或者,伺服器還可以使用不同長度的時間視窗分別對資料流執行上述步驟SI至步驟S4,然後將多次獲得的程式碼分片一併作為特徵向量使用。

二、從樣本頁面的正文中提取特徵向量

    所謂正文是指頁面中使用者肉眼可見的資料內容,包括文字、圖片、連結等。本實施例中主要針對正文中的文字進行處理。與HTML原始碼不同,本方式中的文字為自然語言使用的文字,本實施例以中文為例,提取漢字形式的特徵向量。伺服器從頁面中提取出文字資訊,去掉標題、標籤等部分,獲得正文內容。然後對正文內容進行分詞,獲得多個符合自然語言習慣的分詞,最後提取貢獻度排名靠前的預設數量的分詞,作為特徵向量,該貢獻度用於表徵分詞對樣本頁面區別於其他頁面的貢獻程度。

    此部分內容與自然語言處理方面的文字分類相似,不做過多贅述。

(摘自https://www.google.com/patents/CN105338001A?cl=zh)