[Python] 使用 HTMLParser.unescape() 將 HTML entity 字元轉換成 Unicode 字元

[Python] 使用 HTMLParser.unescape() 將 HTML entity 字元轉換成 Unicode 字元

最近在處理一個攻擊手法,

網頁的網址中,被摻入了不可見的 Unicode 空白字元 (ZWSP, Zero-Width SPaces)~

(參考 Hackers Using Zero-Width Spaces to Bypass MS Office 365 Protection)

 

在網頁中,Unicode 字元可以用 &#nnn; 的方式來代表,

像這次看到的 Unicode 不可見空白字元有:

  • ​
  • ‌
  • ‍
  • 

 

在 Python 裡,要怎麼把它們轉換成對應的 Unicode 呢?

查了一下,可以用 HTMLParser.unescape():

>>> from HTMLParser import HTMLParser
>>> HTMLParser().unescape("www.​​google.com")
u'www.\u200bgoogle.com'

 

可以看到 ​ 被轉換成 u’\u200b’ 這個 Unicode 字元。

至於像 < 和 > 這類 HTML entity 字元也都能轉換:

>>> HTMLParser().unescape("www.​​google.com/data=<123>")
u'www.\u200bgoogle.com/data=<123>'

 

參考資料:stackoverflow: Decode HTML entities in Python string?

(本頁面已被瀏覽過 1,642 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料