貓眼爬蟲 之 字體加密

貓眼電影的字體加密還是很折磨人的(最后會附上源碼讶坯,中間講解部分就用截圖代替)

準(zhǔn)備部分

貓眼電影主要在于字體加密遣钳,如何破解像云?需要準(zhǔn)備點(diǎn)東西:FontCreator,這是一個軟件税迷,下載即可境肾。

開始分析了~剔难,我們以這個為例:https://maoyan.com/films/1209159

解析字體當(dāng)然需要當(dāng)前網(wǎng)頁的字體奥喻,查看網(wǎng)頁源碼偶宫,找到網(wǎng)頁字體 1-1

1-1

將字體下載下來,然后刷新頁面环鲤,會發(fā)現(xiàn)字體改變了 1-2


1-2

沒關(guān)系纯趋,再下載一次,現(xiàn)在有兩個本頁面的woff文件 1-3冷离,要進(jìn)入重點(diǎn)了


1-3

分析部分

首先要將下載好的woff文件換個格式 2-1吵冒、2-2

2-1


2-2

將兩個保存好的xml文件打開備用 2-3

2-3

然后用FontCreator打開我們的兩個woff文件 2-4

2-4

現(xiàn)在對應(yīng)關(guān)系已經(jīng)很明了了,我們以4為例:兩個woff文件的4分別對應(yīng)uniE88A西剥、uniE325痹栖,然后我們在對應(yīng)的xml文件中找到它們 2-5、2-6

2-5
2-6

pt里面的數(shù)據(jù)是一樣蔫耽,說明我們的字體映射關(guān)系找對了结耀,下面就需要設(shè)置對應(yīng)的映射關(guān)系了

測試部分


我們先把其中一個woff文件中的對應(yīng)映射打印出來看一下 3-1留夜、3-2

3-1
3-2

和我們的xml中的關(guān)系對應(yīng) 3-3

3-3

然后我們根據(jù)FontCreator中的數(shù)據(jù)設(shè)置對應(yīng)的映射關(guān)系 3-4

3-4

輸出一下匙铡,關(guān)系正確 3-5

3-5

對應(yīng)關(guān)系已經(jīng)找到图甜,現(xiàn)在看看網(wǎng)頁源碼,發(fā)現(xiàn)源碼中的加密字體都是由&#x開頭 3-6

3-6

這個不用擔(dān)心鳖眼,因?yàn)槲覀冎恍枰?amp;#x替換成uni就行了黑毅,關(guān)系就會一一對應(yīng),然后就可以返回正確的數(shù)據(jù)了钦讳。


結(jié)果

下面開始源碼和測試結(jié)果

import requests

import re

import os

from fontTools.ttLib import TTFont

class MaoYan():

????#初始化需要的數(shù)據(jù)

? ? def __init__(self):

????????self.url ='http://maoyan.com/films/1209159'

? ? ? ? self.headers = {

????????????"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, ????????????like Gecko) Chrome/70.0.3538.110 Safari/537.36",

????????}


????# 發(fā)送請求

? ? def get_html(self, url):

????????response = requests.get(url,headers=self.headers)

????????return response.content


????#下載woff字體文件

? ? def create_font(self, font_file):

????????# 列出已下載文件

? ? ? ? file_list = os.listdir('./fonts')

????????# 判斷是否已下載

? ? ? ? if font_file not in file_list:

????????????# 未下載則下載新woff字體文件

? ? ? ? ? ? url ='http://vfile.meituan.net/colorstone/' + font_file

????????????new_file =self.get_html(url)

????????????with open('./fonts/' + font_file,'wb')as f:

????????????????f.write(new_file)

????????# 打開字體文件

? ? ? ? self.font = TTFont('./fonts/' + font_file)


????# 把獲取到的數(shù)據(jù)用字體對應(yīng)起來矿瘦,得到真實(shí)數(shù)據(jù)

? ? def modify_data(self, data):

????????#打開自己保存的woff文件,設(shè)置映射關(guān)系

? ? ? ? font2 = TTFont("./95ebcb3e871c993e8014b6cf244c939b2088.woff")

????????keys = font2['glyf'].keys()

????????values =list(' .0714682953')

????????#對應(yīng)替換

? ? ? ? dict1 =dict((k, v)for k, v in zip(keys, values))

????????font1 =self.font

????????#空字典愿卒,保存新的替換映射關(guān)系

? ? ? ? dict2 = {}

????????for key in font1["glyf"].keys():

????????????for k, v in dict1.items():

????????????????# 通過比較 字形定義 填充新的name和num映射關(guān)系

? ? ? ? ? ? ? ? if font2["glyf"][k] == font1["glyf"][key]:

????????????????????dict2[key] = v.strip()

????????????????????break

? ? ? ? #將獲取到的網(wǎng)頁數(shù)據(jù)中的&#x替換成uni

? ? ? ? for i in dict2:

????????????gly = i.replace('uni','&#x').lower() +';'

? ? ? ? ? ? if gly in data:

????????????????data = data.replace(gly, dict2[i])

????????return data

????#獲取數(shù)據(jù)

? ? def start_crawl(self):

????????html =self.get_html(self.url).decode('utf-8')

????????# 正則匹配字體文件

? ? ? ? font_file = re.findall(r'vfile\.meituan\.net\/colorstone\/(\w+\.woff)', html)[0]

????????self.create_font(font_file)

????????# 正則匹配評分

? ? ? ? star = re.findall(r'<span class="index-left info-num ">\s+<span class="stonefont">(.*?)</span>\s+</span>', html)[0]

????????star =self.modify_data(star)

????????# 正則匹配想看的人數(shù)

? ? ? ? people = re.findall(r'<span class=".*?score-num.*?">(.*?)</span>', html,re.S)[0]

????????people =self.modify_data(people)

????????# 正則匹配累計票房

? ? ? ? ticket_number = re.findall(r'<div class="movie-index-content box">\s+<span class="stonefont">(.*?)</span><span class="unit">(.*?)</span>\s+</div>', html)[0]

????????ticket_number1 =self.modify_data(ticket_number[0])

????????print('用戶評分: %s' % star)

????????print('評分人數(shù): %s' % people)

????????print('累計票房: %s' % ticket_number1,ticket_number[1])


if __name__ =='__main__':

????maoyan = MaoYan()

????maoyan.start_crawl()

成功結(jié)束


4-1


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缚去,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子琼开,更是在濱河造成了極大的恐慌易结,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柜候,死亡現(xiàn)場離奇詭異搞动,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渣刷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門鹦肿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辅柴,你說我怎么就攤上這事箩溃。” “怎么了碌嘀?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵碾篡,是天一觀的道長。 經(jīng)常有香客問我筏餐,道長开泽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任魁瞪,我火速辦了婚禮穆律,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘导俘。我一直安慰自己峦耘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布旅薄。 她就那樣靜靜地躺著辅髓,像睡著了一般泣崩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洛口,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天矫付,我揣著相機(jī)與錄音,去河邊找鬼第焰。 笑死买优,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挺举。 我是一名探鬼主播杀赢,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼湘纵!你這毒婦竟也來了脂崔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤梧喷,失蹤者是張志新(化名)和其女友劉穎砌左,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伤柄,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绊困,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了适刀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秤朗。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖笔喉,靈堂內(nèi)的尸體忽然破棺而出取视,到底是詐尸還是另有隱情,我是刑警寧澤常挚,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布作谭,位于F島的核電站,受9級特大地震影響奄毡,放射性物質(zhì)發(fā)生泄漏折欠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一吼过、第九天 我趴在偏房一處隱蔽的房頂上張望锐秦。 院中可真熱鬧,春花似錦盗忱、人聲如沸酱床。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扇谣。三九已至昧捷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罐寨,已是汗流浹背靡挥。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衩茸,地道東北人芹血。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓贮泞,卻偏偏與公主長得像楞慈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啃擦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一囊蓝、Python簡介和環(huán)境搭建以及pip的安裝 4課時實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,725評論 0 10
  • 小木屋圖書早讀社CG靜,加入早讀社可以免費(fèi)暢讀紙質(zhì)書令蛉。 一次性從小木屋借了兩本大冰的書聚霜,只求過癮,小壞蛋這本...
    小木屋CG靜閱讀 797評論 0 0
  • 我一直以為我只是喜歡一個人吃飯姥芥,遇到了你,我才知道汇鞭,原來是沒有人愿意陪我吃飯凉唐。——《喜歡你》 有兩種題材的電影霍骄,會...
    婗秋閱讀 785評論 0 4