爬蟲 動態字型 破解

2022-06-17 02:58:48 字數 2181 閱讀 4076

爬取的woff字型動態變化,且字型座標會隨機偏移一點點(如下圖1.woff和2.woff),無法形成統一的'unicode——字型座標矩陣'對映,只能求兩矩陣的相識度,這裡使用距離相識度(參考機器學習knn分類演算法概念)。

放大後兩者是有區別的:

解決辦法:

以2.woff為標準,人為設定基礎矩陣字型對映,然後讀取1.woff,按字型座標資訊與2.woff的最大相識度求出1.woff的字型對映表。

from fonttools.ttlib import ttfont

import numpy as np```

```# 比較兩個陣列的歐式距離

def compare_axis(axis1, axis2):

# 以座標(0,0)補填空缺

if len(axis1) < len(axis2):

axis1.extend([0, 0] for _ in range(len(axis2) - len(axis1)))

elif len(axis2) < len(axis1):

axis2.extend([0, 0] for _ in range(len(axis1) - len(axis2)))

# 將列表轉換為 numpy 中的陣列

axis1 = np.array(axis1)

axis2 = np.array(axis2)

# 計算並返回歐式距離

return np.sqrt(np.sum(np.square(axis1 - axis2)))```

```# 讀取font資訊

def read_font(path):

''':param path: 檔案路徑

:return: 讀取後的unicode;字型矩陣對映字典

'''font = ttfont(path)

series = font.getglyphnames()

arr_dict = {}

for i in series:

arr_dict[i] = list(font['glyf'][i].coordinates)

del arr_dict['.notdef']

return arr_dict```

# 解析woff檔案,返回解析後對映字典

```def parse_font_code(woff_path):

''':param woff_name: 傳入待解碼woff檔案路徑

:return: 解碼後的

'''# 生成基礎矩陣字型對映

base_dict =

base_code_dict = read_font('2.woff')

new_code_dict = read_font(woff_path)

# print(new_code_dict)

res_dict = {}

for new_k, new_v in new_code_dict.items():

res = float('inf')

for base_k, base_v in base_code_dict.items():

dis = compare_axis(new_v, base_v)

if dis < res:

res = dis

res_dict[new_k] = base_k

for i, v in res_dict.items():

res_dict[i] = base_dict[v]

return res_dict```

```if __name__ == '__main__':

print(parse_font_code('1.woff'))```

Python爬蟲 字型反爬

網頁開發者自己創造一種字型,因為在字型中每個文字都有其代號,那麼以後在網頁中不會直接顯示這個文字的最終的效果,而是顯示他的代號,因此即使獲取到了網頁中的文字內容,也只是獲取到文字的代號,而不是文字本身。因為創造字型費時費力,並且如果把中國3000多常用漢字都實現,那麼這個字型將達到幾十兆,也會影響網...

Flash 動態載入字型

1 在上面這個 demo 壓縮包中的 font 目錄下,大家可以找到 alphafitness.ttf 字型檔案,首先安裝該字型。2 重新啟動 flash,新建乙個 flash 檔案 在 demo 中位於 assets game font.fla 右鍵單擊庫面板,選擇新建字型 new font 如果...

NGUI動態字型教程

注 此教程僅是用於unity 4 第1步 匯入ngui 第2步 匯入ngui 277c dynamicfonts.unitypackage 如果使用的是ngui2.3.1 或更高的話替換uifont.cs 和uifontinspector.cs 第3步 新增ttf 字型,在這裡我用微軟雅黑做例子 經...