反爬
網上網頁的反爬手段千奇百怪,常見的有ip封鎖,動態加載數據,鏈接加密,驗證碼登錄等等,最近碰到一個之前沒見到過的反爬手段:字體反爬。情況如圖:
箭頭所示的標簽為同一個數據。可以清楚的看到頁面上的日期與源碼中的日期不一致。這就是字體反爬,下載頁面中的字體文件通過百度的字體編輯器可以看到數字的對應關系。
fonttools
fonttools為python的一個第三方庫,可以使用該庫打開並讀取字體文件。
通過pip安裝
pip install fonttools
下載字體文件
可以從網頁源碼中獲取字體文件的下載地址,將其下載到本地后使用代碼打開並讀取所需信息
from fontTools.ttLib import TTFont
Font = TTFont('tyc-num.woff') # 加載字體文件
code = {}
for i in range(10):
try:
uni_list = Font.getGlyphID(str(i))
code[str(i)] = str(uni_list - 2) #生成對應編碼表
except:
pass
str1 = '6451-55-47'
new_str = ''
for i in str1:
if i =="-":
new_str += '-'
try:
if i in code.keys():
new_str += code[i]
except:
pass
print(new_str)
運行代碼,即可得到對應的真正日期。
該代碼只作為筆者學習之用。