溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

GlidedSky字體加密的方法是什么

發(fā)布時(shí)間:2021-12-14 09:23:47 來(lái)源:億速云 閱讀:161 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“GlidedSky字體加密的方法是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

字體加密: 字體文件的本質(zhì)是,給定字符、字號(hào)等參數(shù),輸出一組像素點(diǎn)信息,用于在設(shè)備上展示。

        特別簡(jiǎn)單一點(diǎn)來(lái)說(shuō),就是網(wǎng)頁(yè)上顯示數(shù)據(jù)和你真實(shí)獲取到的數(shù)據(jù),通過(guò)某一種關(guān)系表連接起來(lái)。這樣就可以達(dá)到 1 是 2, 3 是 7 的效果。我說(shuō)的都是比較淺顯的理解,可以去百度或者 Google 一下。我截個(gè)圖理解一下。

GlidedSky字體加密的方法是什么

上面的圖應(yīng)該可以幫助你理解一下。當(dāng)然這是簡(jiǎn)單的字體加密。

而現(xiàn)在我們需要拿真實(shí)的響應(yīng)數(shù)據(jù),根據(jù)對(duì)應(yīng)關(guān)系,去匹配頁(yè)面上你所看到的數(shù)據(jù)。

其實(shí)這個(gè)對(duì)應(yīng)關(guān)系也就是字體文件,需要找到這個(gè)字體文件。

第一步:打開網(wǎng)站,打開 network

GlidedSky字體加密的方法是什么

打開網(wǎng)頁(yè)你會(huì)看到,你看到的和你拿到的數(shù)據(jù)并不是一致,所以有時(shí)候眼睛看到的也不一定是真的。

而且當(dāng)你刷新頁(yè)面的時(shí)候,你拿到的數(shù)據(jù)和上一次也不一樣,說(shuō)明字體文件更新了。所以最好把這 1000 頁(yè)的 HTML 內(nèi)容保存下來(lái),方便理解。

GlidedSky字體加密的方法是什么

找到字體文件:

GlidedSky字體加密的方法是什么

第二步:就是處理這個(gè)字體加密

拿到的是 base64 加密的數(shù)據(jù),上面的圖圈起來(lái)的 base64 后面的,不要把前面的內(nèi)容也搞出來(lái),解密后保存為 ttf 文件。

至于怎么獲取這 1000 頁(yè)的內(nèi)容,看你自己

直接上代碼:

    1 、獲取頁(yè)面的 base64 加密的字體文件。使用的庫(kù)

import requestsfrom lxml import etree
import toolsimport base64from fontTools.ttLib import TTFont   # 字體解析庫(kù)import xml.dom.minidomfrom bs4 import BeautifulSoup
f = open(f'page/font-puzzle-{i}.html').read()soup = BeautifulSoup(f, "html.parser")html = str(soup.select('style'))str_base64 = html.split('base64,', 1)[1]font_face_base64 = str_base64.split(') format', 1)[0]# base64 解密b = base64.b64decode(font_face_base64)# 保存為 ttf 格式的文件with open('ttfji/{}.ttf'.format(i), 'wb') as f:    f.write(b)
font = TTFont('ttfji/{}.ttf'.format(i))# 轉(zhuǎn)為 xml 格式文件,并保存font.saveXML('dictxml/{}.xml'.format(i))

可以使用工具  FontCreator 打開,給大家百度網(wǎng)盤的鏈接:

鏈接: https://pan.baidu.com/s/1xzdNQeOUX7JHACpG3CJb_A 提取碼: ebcq 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦

打開就是這樣:

GlidedSky字體加密的方法是什么

而 xml 文件中是這樣:其實(shí)是沒有 10 的,name 向上對(duì)應(yīng)就是你打開 ttf 看到的。GlyphOrder 中顯示的就是對(duì)應(yīng)關(guān)系。

GlidedSky字體加密的方法是什么

而 name 的值代表的數(shù)字,就是自己個(gè)翻譯過(guò)來(lái)的數(shù)字??梢钥纯?cmap.

GlidedSky字體加密的方法是什么

也就是這樣:該字體加密恰巧數(shù)字對(duì)應(yīng)它自己的英文名。每一個(gè)字體加密都需要去找 name 對(duì)應(yīng)的 value .

dict = {            'zero': '0',            'one': '1',            'two': '2',            'three': '3',            'four': '4',            'five': '5',            'six': '6',            'seven': '7',            'eight': '8',            'nine': '9',        }

到這里基本就理解完了,剩下的就是怎么獲取 xml 中的對(duì)應(yīng)關(guān)系,就是寫代碼了。理解了寫代碼就容易多了。

newdict = {}dom = xml.dom.minidom.parse('dictxml/{}.xml'.format(i))root = dom.documentElementbb = root.getElementsByTagName('GlyphID')for j in range(1, 11):    # 下標(biāo)從 1 開始,獲取的是zero,    k = bb[j].getAttribute("name")    # 在字體文件 xml 中對(duì)應(yīng)關(guān)系就是 j-1, 也就是0, zero對(duì)應(yīng)的就是0,注釋僅針對(duì)第一個(gè)字體文件    # 建立對(duì)應(yīng)關(guān)系,取出真實(shí)的 name 對(duì)應(yīng)的數(shù)字。    newdict[dict[k]] = str(j - 1)

“GlidedSky字體加密的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI