貓眼**資訊使用了woff字型,每次請求都會返回解析當前頁面字型使用的woff檔案,並且每次響應中woff檔案都不同。
@font-face
.stonefont
h5平台直接返回woff檔案內容,不過需要注意的是h5中woff內容是通過ajax載入的,在解析**前一定要等待font-face資訊載入完成:
@font-face
.stonefont
#用fonttolls解析woff檔案
base_font = ttlib.ttfont(os.path.expanduser('~') + '/base.woff')
base_unicode_list = base_font.getglyphorder()
base_unicode2num =
通過與base.woff中影象進行對比,為每次請求返回的woff建立影象編碼與數字對映關係。
class mtfontparser:
mt_unicode2num = dict()
def __init__(self, woff):
self.woff_file = self.get_woff_file(woff)
mt_font = ttlib.ttfont(self.woff_file)
#獲取woff檔案中影象編碼
mt_unicode_list = mt_font.getglyphorder()
for mt_unicode in mt_unicode_list:
mt_glyph = mt_font['glyf'][mt_unicode]
for base_unicode in base_unicode_list:
#將woff檔案中影象與base中影象進行對比,查詢影象編碼對應的數字
return woff_file
頁面中**資訊由多個字元組成,通過parse_price解密:
def parse_price(self, price_code):
price_str = ''
for c in price_code:
if c != '.':
i = hex(ord(c))
key = 'uni' + str(i).lstrip('0x').upper()
price_str += self.mt_unicode2num.get(key) #從影象編碼與數字的對映關係中查詢
else:
price_str += '.'
return price_str
這樣動態變化的woff字型**資訊也就可以動態解密了。
mtfontparser原始碼:
hyspider之智慧型運維監控
借助scrapyd,可以通過http請求遠端排程爬蟲。scrapy.cfg中加入deploy配置 scrapyd安裝 pip install scrapyd 啟動scrapyd,scrapyd deploy上傳的檔案存放到 安裝scrapyd client pip install scrapyd c...
Python之爬蟲 貓眼電影
usr bin env python coding utf 8 import json import requests import re import time 貓眼多了反爬蟲,速度過快,則會無響應,所以這裡多了乙個延時等待 from requests.exceptions import requ...
shell樂趣之猜價格
shell下猜 遊戲 案例要求 由指令碼預先生成乙個隨機的 數目 0 999 作為實際 判斷使用者猜測的 是否高出或低於實際 給出相應提示後再次要求使用者猜測 一直到使用者猜中實際 為止,輸出使用者共猜測的次數 實際 數。實驗步驟 1 編寫指令碼,指令碼名隨意,shell.sh 截圖如下 內容如下 ...