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

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

查看源碼后是這樣:

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

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

也是亂碼,我在界面上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

   好困。午休去了;

posted @ 2019-06-26 13:20 ~小菜鳥 閱讀(...) 評論(...) 編輯 收藏
内部期期公开一波中特