[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,693 次)