破解大衆點評的字體加密,這一篇就夠了。

咕咕咕,我回來啦。html


放了很久的鴿子,說好的寫貓眼票房榜推了將近一個月,輕點打我~python


寫貓眼須要先解決字體動態加密,因此先寫一篇如何破解簡單一點的XX點評字體加密。
web


下面正文開始:
瀏覽器




你們爬取分析XX點評數據,最多見的無非兩種:微信


一、分析全部店鋪的各種評分和推薦菜等cookie

二、得到店鋪裏的評論數據
app


以前寫過一篇最火的文章,中國擼串指北:13萬家燒烤店的吃貨最愛,就屬於第一種。編輯器


而大衆點評最大的難題就是字體加密,也就是這樣字體

       


很明顯點評網寧肯錯殺一萬,也不願放過一個,乾脆使用了本身定義的字體。不過既然自定義了字體,那麼網頁確定須要加載字體文件。網站


谷歌瀏覽器,右鍵檢查,進入network 而後刷新頁面,點擊Font。



咱們來下載這個加載的字體:8f8cfde4.woff 


右鍵 copy like address 

粘貼到新頁面 便可下載


將下載的字體導入FontEditor中打開 

(百度家的在線字體編輯器

http://fontstore.baidu.com/static/editor/index.html

導入以後:



咱們再結合網頁源代碼,就獲得了相應亂碼與數字的對應關係:



咱們能夠發現網頁中的亂碼和FontEditor中的亂碼後四位是同樣的,好比說圖中某店鋪的點評數爲2481,在網頁源代碼用【1】來表示,這在FontEditor的字體編輯器中對應的是【unie801,unieb78,uniefe4】。


因此咱們要作的是:

一、下載網站font字體包

二、將font字體包中導入FontEditor 觀察獲得亂碼與數字的關係

三、前綴替換,並將字體名字和它們所對應的亂碼構成一個字典 


def get_font():
    font = TTFont('8f8cfde4.woff')
    font_names = font.getGlyphOrder()

    # 這些文字就是在FontEditor軟件打開字體文件後看到的文字名字
    texts = ['','','1','2','3','4','5','6','7','8','9','0']

    font_name = {}
    # 將字體名字和它們所對應的亂碼構成一個字典 

    for index,value in enumerate(texts):
        a = font_names[index].replace('uni''&#x').lower() + ";"
        font_name[a] = value

    return font_name


運行看一下:



沒錯,跟剛纔觀察的結果一致。


那麼下面咱們獲取網頁源代碼,並根據剛纔 get_font()構成的字典進行替換。


import requests

headers = {'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}
cookies = {'cookie':'你的cookies'}
url = 'http://www.dianping.com/beijing/ch10/g110p1'

html = requests.get(url, headers=headers,cookies = cookies).text
#requests得到html

num = get_font()
#得到加密映射關係

for key in num:
    if key in html:
        html = html.replace(key, str(num[key]))
#替換html中加密文字


再看一下結果:



這樣就破解了點評網的字體加密。


剩下各位就能夠自行用喜歡的解析方式來解析html啦。


下篇寫貓眼的字體動態加密




轉載請儘可能帶上二維碼或者結尾註明來源,謝謝了。







原創不易,點個好看吧



本文分享自微信公衆號 - 一直學Python(python77777)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索