modelandview 可以返回html么_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...
你已經知道了對方是
如何自定義字體加密的了
你要想去反反爬
你就要先站在對方的角度去思考問題
有句話這么說來著
“知己知彼,才能那啥”
那么對于像貓眼電影、大眾點評等等
那樣的 css 自定義字體加密
應該怎么破呢?
接下來就是
學習 python 的正確姿勢
有人說了
不就是把字體通過 unicode 編碼嗎?
那就簡單了啊
把每個字的編碼找到
然后使用字典把編碼和對應的字對應起來
抓取分析的時候
直接替換不就得了
有道理是有道理
但是
如果我每次返回給你的編碼都不一樣呢?
你說死不死
好了好了,先別哭得那么舒服
我們來看看天貓電影票房榜單的頁面
https://maoyan.com/board/1
正如你所看到的那樣
這里也使用了字體加密
通過源代碼我們可以看到
font-face這里制定了字體文件路徑
還是熟悉的配方
熟悉的味道~
不過小老弟
還是不要開心太早
刷新幾次你就會發現
(盯著下圖 2 秒鐘)
看到沒有
字體文件一直在變
woc!
玩呢?
我們先把字體文件下載下來
# 把整個頁面搞下來url = 'https://maoyan.com/board/1'html = download_html(url).decode('utf-8')用正則把字體文件名拿一下
font_file_name = re.findall(r'//vfile.meituan.net/colorstone/(w+.woff)', html)[0]拿到了文件名之后就構建一下url
然后把字體文件下載下來
url = 'http://vfile.meituan.net/colorstone/' + font_file_namefont_file = download_html(url)接著把字體文件寫到本地文件中
with open('fonts/' + font_file, 'wb') as f: f.write(new_file)使用 fontTools 來獲取字體
如果你之前沒安裝的話要安裝才能用
接著我們把字體文件保存為 xml
font = TTFont('fonts/' + font_file)font.saveXML('./'+font_file+'.xml')快打開打開看看
哇,這些玩意
有點眼熟啊
這不就是加密的 unicode 碼么
左邊的 id 難道就是對應的數字?
恩沒那么簡單
就能找到聊得來的伴
尤其是在看過了那么多背叛
總是....
不好意思
走錯片場了
回到我們剛剛的 xml 文件
往下拉一下
可以看到這個
這里每一個編碼都對應一個 TTGlyph 對象
從各種 x y 坐標可以猜測
它應該是用來繪制一個字的
我們把任意一個對象復制一下
然后用 matplotlib 根據坐標畫個圖試試看
import matplotlib.pyplot as pltimport restr = """" .....此處省略一點代碼 """x = [int(i) for i in re.findall(r'總結
以上是生活随笔為你收集整理的modelandview 可以返回html么_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Exam化的软件项目管理
- 下一篇: 兼容IE与firefox的css 线性渐