91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GlidedSky字體加密的方法是什么

發布時間:2021-12-14 09:23:47 來源:億速云 閱讀:169 作者:iii 欄目:大數據

本篇內容介紹了“GlidedSky字體加密的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

字體加密: 字體文件的本質是,給定字符、字號等參數,輸出一組像素點信息,用于在設備上展示。

        特別簡單一點來說,就是網頁上顯示數據和你真實獲取到的數據,通過某一種關系表連接起來。這樣就可以達到 1 是 2, 3 是 7 的效果。我說的都是比較淺顯的理解,可以去百度或者 Google 一下。我截個圖理解一下。

GlidedSky字體加密的方法是什么

上面的圖應該可以幫助你理解一下。當然這是簡單的字體加密。

而現在我們需要拿真實的響應數據,根據對應關系,去匹配頁面上你所看到的數據。

其實這個對應關系也就是字體文件,需要找到這個字體文件。

第一步:打開網站,打開 network

GlidedSky字體加密的方法是什么

打開網頁你會看到,你看到的和你拿到的數據并不是一致,所以有時候眼睛看到的也不一定是真的。

而且當你刷新頁面的時候,你拿到的數據和上一次也不一樣,說明字體文件更新了。所以最好把這 1000 頁的 HTML 內容保存下來,方便理解。

GlidedSky字體加密的方法是什么

找到字體文件:

GlidedSky字體加密的方法是什么

第二步:就是處理這個字體加密

拿到的是 base64 加密的數據,上面的圖圈起來的 base64 后面的,不要把前面的內容也搞出來,解密后保存為 ttf 文件。

至于怎么獲取這 1000 頁的內容,看你自己

直接上代碼:

    1 、獲取頁面的 base64 加密的字體文件。使用的庫

import requestsfrom lxml import etree
import toolsimport base64from fontTools.ttLib import TTFont   # 字體解析庫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))# 轉為 xml 格式文件,并保存font.saveXML('dictxml/{}.xml'.format(i))

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

鏈接: https://pan.baidu.com/s/1xzdNQeOUX7JHACpG3CJb_A 提取碼: ebcq 復制這段內容后打開百度網盤手機App,操作更方便哦

打開就是這樣:

GlidedSky字體加密的方法是什么

而 xml 文件中是這樣:其實是沒有 10 的,name 向上對應就是你打開 ttf 看到的。GlyphOrder 中顯示的就是對應關系。

GlidedSky字體加密的方法是什么

而 name 的值代表的數字,就是自己個翻譯過來的數字。可以看看 cmap.

GlidedSky字體加密的方法是什么

也就是這樣:該字體加密恰巧數字對應它自己的英文名。每一個字體加密都需要去找 name 對應的 value .

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

到這里基本就理解完了,剩下的就是怎么獲取 xml 中的對應關系,就是寫代碼了。理解了寫代碼就容易多了。

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昭觉县| 阳高县| 梓潼县| 舒兰市| 淳安县| 卢湾区| 买车| 孟连| 宜城市| 崇仁县| 司法| 云梦县| 伊宁市| 弋阳县| 大丰市| 侯马市| 兰考县| 搜索| 九台市| 长沙市| 康马县| 凤山市| 建平县| 吉水县| 阳春市| 汝州市| 龙井市| 白水县| 钟山县| 桑日县| 怀化市| 乐山市| 吉安县| 射阳县| 富蕴县| 大新县| 兴隆县| 民丰县| 宁乡县| 阿拉善右旗| 怀仁县|