字型反爬 第一步弄清楚字元編碼

2022-08-24 08:12:10 字數 2204 閱讀 5416

字型反爬,顧名思義就是利用自定義的字元編碼與字型檔案的對映呈現文字的一種反爬措施。

在許多**採用字型反爬策略,即替換一些字元的unicode編碼並且將生成的字型檔案加密後傳輸到前端,由前端解析並顯示正常的字元。

部分參考崔老師的一篇部落格 這篇部落格講述了處理字型反爬最初思路。但該部落格只提供了大致的處理思路,受部落格的啟發,我整理了另一直做法來克服多個頁面的不同漢字的變化。

首先,我們要大致理解字型反爬是怎麼實現的。在崔老師的部落格中提及到ttf檔案以及對應的xml檔案。觀察內容,xml檔案中包含了一些對映以及字型內容。這裡所謂的字型內容就是這個字的字形資料,通過這些字形資料,能勾畫出字元。我們找到這個字形資料是通過unicode編碼以及對映在檔案裡找到對應的ttglyph標籤。所以當我們使用的是服務端傳來的字型檔案時,能根據傳來的「錯誤的」unicode編碼去找到正確的字形資料並展示到頁面上。個人猜測,服務端根據要返回的敏感資訊的字生成臨時的字型檔案,並設新的unicode編碼,返回時將字型檔案內容加密傳給前端,前端一律使用生成的字型檔案,所以能解析傳來的unicode編碼。同時因為字型檔案是會重新整理生成的,所以崔老師部落格裡的**偶爾會失效。在理清了字型反爬後,我們就可以開始做出相應的處理。

字型爬蟲就是使用類似自定義的字元編碼的形式來呈現文字,字元編碼的詳細資訊見如下

html裡可以用 &#字元編碼; 表示乙個字元,x表示編碼值用十六進製制表示未 表示字元編碼為十六進製制672a的字元 ,就是中文「未」字。

特殊符號

命名實體

十進位制編碼

特殊符號

命名實體

十進位制編碼

特殊符號

命名實體

十進位制編碼αα

αβββ

γγγδ

δδεε

εζζζ

ηηηθ

θθιι

ικκλ

λλμμ

μννν

ξξξο

οοππ

πρρρ

σσστ

ττυυ

υφφφ

χχχψ

ψψωω

ωααα

βββγ

γγδδ

δεεε

ζζζη

ηηθθ

θιιι

κκλλ

λμμμ

νννξ

ξξοο

οπππ

ρρρς

ςςσσ

στττ

υυυφ

φφχχ

χψψψ

ωωωϑ

ϑϑϒϒ

ϒϖϖϖ

•••…

……′′

′″″″

‾‾‾⁄

⁄⁄℘℘

℘ℑℑℑ

ℜℜℜ™

™™ℵℵ

ℵ←←←

↑↑↑→

→→↓↓

↓↔↔↔

↵↵↵⇐

⇐⇐⇑⇑

⇑⇒⇒⇒

⇓⇓⇓⇔

⇔⇔∀∀

∀∂∂∂

∃∃∃∅

∅∅∇∇

∇∈∈∈

∉∉∉∋

∋∋∏∏

∏∑∑−

−−−∗

∗∗√√

√∝∝∝

∞∞∞∠

∠∠∧∧

⊥∨∨⊦

∩∩∩∪

∪∪∫∫

∫∴∴∴

∼∼∼≅

≅≅≈≈

≅≠≠≠

≡≡≡≤

≤≤≥≥

≥⊂⊂⊂

⊃⊃⊃⊄

⊄⊄⊆⊆

⊆⊇⊇⊇

⊕⊕⊕⊗

⊗⊗⊥⊥

⊥⋅⋅⋅

⌈⌈⌈⌉

⌉⌉⌊⌊

⌊⌋⌋⌋

◊◊◊♠

♠♠♣♣

♣♥♥♥

♦♦♦ 

¡¡¡¢¢¢£

££¤¤

¤¥¥¥

¦¦¦§

§§¨¨

¨©ªª

ª«««

¬¬¬­

­­®®

®¯¯¯

°°°±

±±²²

²³³³

´´´µ

µµ""

"<

<

<

>

>

>''

這裡只是曾獻部分的,詳細編碼鏈結如下:

Python爬蟲 反爬蟲第一步

request urllib2.request headers headers response urllib2.urlopen request html response.read decode utf 8 print html print response.getcode response 是伺...

踏出第一步

我是乙個比較內向的人,或許應該說有一點自卑的傾向。因為生活中的一些事情,總是不斷的打擊我的自信心,讓我產生一種感覺 我缺乏能力,是乙個無用的人。我想有過這種經歷的,肯定不只我乙個人。人的信心有時候是很脆弱的,兩三次的失敗就可能讓其消失殆盡,然後你就覺得,反正我也做不出什麼事情來,乾脆就這樣混著吧,於...

邁出第一步

我,乙個程式小白,不是為了熱愛而走上程式設計之路。就這樣稀里糊塗的度過了兩年,期間,自己有為找不出那乙個個errors煩躁,也有為成功編譯後而獲得正確結果的那種喜悅。如今是真的想去改變現狀,想去提公升自己,想不負剩餘的兩年時光,不負你,不負我!對於今後的學習之路的想法,首先基礎的語言學習,其次資料結...