日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 默认站点!

默认站点

當前位置: 首頁 >

[JS 分析] 天_眼_查 字体文件

發布時間:2023/11/30 34 豆豆
默认站点 收集整理的這篇文章主要介紹了 [JS 分析] 天_眼_查 字体文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0. 參考

js分析 貓_眼_電_影 字體文件 @font-face

1. 分析

1.1 定位目標元素

?

1.2 查看網頁源代碼

?

1.3 requests 請求提取得到大量錯誤信息

對比貓_眼_電_影抓取到unicode編碼,天_眼_查混合使用正常字體和自定義字體,難點在于如何從 '紅' 轉化為 '美'。

一開始認為一定有js進行了轉化,最后發現直接通過 FontCreator 搜索 '紅' 返回結果為 '美' 。。。

?

1.4 查看目標元素 CSS Computed 信息,使用了網絡請求字體

?

1.5 查看 字體文字 請求

?

1.6 使用 FontCreator 打開字體文件 {'eight': 0, 'four': 1} 能夠解密上文的數字映射

?

1.7 ctrl + f 搜索 ‘紅’ 出現對應的 '美',注意?hex(ord('紅')) 結果為?'0x7ea2' ,也可搜索十進制的unicode編碼 32418

?

?

1.8 全局搜索 tyc-num

?

1.9 全局搜索?tyc-num.woff

?

1.10 全局搜索?font.css 看起來是動態生成文件(每天一更,使用不同的中文字集合)

?

2. JS分析

線索:全局搜索 .tyc-num tyc-num?

根據下文 xml 文件信息考慮搜索 0x, 也可以考慮搜索 js 將中文轉為 unicode 的方法關鍵字, 以及?65535/65536

另外不經意看到 'code point' 相關代碼

最終還是找不到如何從 '紅' 轉 '美' 的相關 js 代碼?

考慮到上文?FontCreator 搜索 '紅' 返回結果為 '美',似乎可以直接繞開 js 解密。。。?

?

3. 字體文件分析

3.1 字體文件 woff 轉 xml

詳見參考文章

對比前后兩天下載的 woff 字體文件,應該是批量生成的歷史文件

?

3.2 根據步驟 1.7 搜索 '7ea2' 結果集中在 <cmap>

?

3.3 根據上圖繼續搜索 '_#228',?根據參考文章可知,下圖方框的 name="_#228" 對應于某個字形定義,用于渲染顯示

?

4. 使用 python 實現 '紅' >>> '美'

思路:提取 '紅',計算unicode編碼,根據?<cmap>?匹配到name='_#228', 再使用?'_#228' 根據?<glyf>?到某一字形定義'美'

4.1 fontTools 讀取 <cmap> 字典 {十進制的unicode編碼: '_#xxx', ...}

?

4.2 fontTools 讀取 <glyf> name 列表 ['_#xxx', ...]

?

4.3 手動建立真實字符列表

使用微信小程序識別效果令人驚嘆

成功對應

?

5. 完整代碼

import requests from scrapy import Selectorfrom fontTools.ttLib import TTFonturl = 'https://www.tianyancha.com/company/59837300?' ocr = """.01234689愿功近西真差全當表華 心八姐六防金步夫尚放很子變提便司依密林住 諸職建??熳笠喙澨貏萆扑龤鈬宄猩鹾险?選船三起況員些突覺拿共沒邊條劉奇先口約最 著立德留治根降且馬手大去細無増問物聯同害 找連父待加母禮受之張方價臣識考足看似始也 維九終業滿思帝及聲望干黃動房右到屬府絕跟 許云際收火二歷回營得設數苦目易體那切年查 字安研容資社品江為破羅把嗎笑土另聽片客本 代產走布已告喜雖若省算企置影書形未復東四 求任孩再高失極自現點比謂花級河師罪案黑直 爭革乎由程響英費反像紅應注將視決面別美達 示縣計宗清開春威克臺護天度飛路分京次學就 質五守做平何間輕重擊才隊即包敢會衛致裝這 兒關欲說消新系圍親參供寫亞改道城團地件敵 量必干答陳較精周相 """.replace('\n', '') print(len(ocr))font = TTFont('tyc-num_1.woff') cmap = font['cmap'] cmap_dict = cmap.getBestCmap() print(len(cmap_dict)) glyf_list = list(font['glyf'].keys()) print(len(glyf_list))mydict = dict((k, v.strip()) for k, v in zip(glyf_list, ocr)) print(mydict)r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}) print(r.status_code, len(r.content)) sel = Selector(text=r.text)# text = '45619.888888萬紅元 6887-82-60' # 15298.000000萬美元 2007-03-26 for text in sel.css('.tyc-num::text').extract():result = []for t in text:code = ord(t) #紅:32418name = cmap_dict.get(code, None) #_#228if name is not None:# index = glyf_list.index(name) #238# rst = ocr[index] #美rst = mydict.get(name, t)else:rst = tresult.append(rst)print(text, ' >>> ', ''.join(result))print('#'*10) View Code

?

6.運行結果?

?

轉載于:https://www.cnblogs.com/my8100/p/js_tianyancha.html

總結

以上是默认站点為你收集整理的[JS 分析] 天_眼_查 字体文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得默认站点網站內容還不錯,歡迎將默认站点推薦給好友。