C#爬蟲與反爬蟲--字體加密篇

       爬蟲和反爬蟲是一條很長的路,遇到過js加密,flash加密、重點信息生成圖片、css圖片定位、請求頭.....等手段;今天咱們來聊一聊字體;
那是一個偶然我遇到了這個網站,把價格信息全加密了;瀏覽器展現:css

查看源碼後是這樣:html

當時忽然恍然大悟,覺得不就是把價格換成 &#xxxxx: .. 字符實體了嘛 我轉下就好了;(注:你們可能對轉義字符(實體名稱)比較熟悉 好比雙引號對應" ,字符實體呢就 &#開頭 ; 結尾 中間那些是ASCII碼 ;我這個示例中又有點不同的是 以x開頭 代表是16進制的 ASCII碼;詳解:http://www.w3school.com.cn/html/html_entities.asp 和
http://www.w3school.com.cn/tags/html_ref_ascii.asp) ;因而開始了轉碼。。。。windows

 這是什麼鬼,難道個人判斷有誤。當我打開瀏覽器調試界面發現api

也是亂碼,我在界面上copy金額黏貼到記事本看看瀏覽器

也是亂碼說明上面的推斷是沒有錯的,他應該就是在顯示上作了什麼處理;
       在找找發現一段鬼鬼祟祟的代碼;給price設置了一個叫zhongshugui的字體,可是好好的字體爲啥要用base64 不用 http加載,http加載貌似能夠用瀏覽器緩存的不是更好,base64 的話我每次瀏覽一個網頁不都是要從新加載一下;莫非他不想緩存就是每次加載都不同,經各類刷新後發現確實每次都生成不一樣文件;緩存

既然感受字體有問題 那咱們就解析出來看看是啥,字體

這些0~9正好和界面上的html字符實體編碼一一對應;因此這個加密方式就是 html寫對應的HTML實體並與字體裏的ASCII對應,自定義字體文件 以base64的方式內嵌到html裏 ;每一個頁面隨機生成不一樣的字體(就是字體裏的ASCII);上面那個是爲了寫帖子本身仿造原網站作的例子;
C#解析字體的類在System.Windows.Media命名空間下Fonts類:
https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.media.fonts?view=netframework-4.8網站

   好睏。午休去了;ui

相關文章
相關標籤/搜索