字型反爬之快手

2021-09-23 14:31:57 字數 1596 閱讀 3947

快手的直播列表頁面的粉絲數用了字型反爬,之前在字型反爬之貓眼電影中提過這類問題的解決方案。

字型反爬的核心是找出字型之間不變的對映關係。

閱讀步驟

效果展示

專案位址

快手字型反爬專案

快手字型反爬機制圖示

不變的關係

每個請求字型檔案不同,每個字型檔案字型的筆畫不同。

通過對比n個字型檔案找到乙個關係

def parser_contour(self, font_xml):

for k, v in self.font_map.items():

try:

element = font_xml.xpath('//ttglyph[@name="{}"]'.format(k))[0]

_pts = element.xpath('./contour/pt')

pts=[''.join(pt.xpath('./@x'))for pt in _pts if ''.join(pt.xpath('./@on'))=='1' ]

if not pts: continue

contours = [str(e) for e in pts]

self.contour_to_font[md5(json.dumps(contours))]=v

except exception:

raise exception('{}字型改版,請重新更新settings中的配置,key:{},val:{}'.format(self.path,k,v))

def parser_map(self, font_xml):

for element in font_xml.xpath('//ttglyph'):

try:

name = ''.join(element.xpath('@name')[0])

_pts = element.xpath('./contour/pt')

pts = [''.join(pt.xpath('./@x')) for pt in _pts if ''.join(pt.xpath('./@on')) == '1']

if not pts: continue

contours = [str(e) for e in pts ]

self.uni_to_contour[name.upper()] = md5(json.dumps(contours))

except exception as e:

raise exception('{}字型改版,請重新更新settings中的配置,error:{}'.format(self.path, e))

總結

快手最新字型反爬

快手最近更新了字型反爬,經過三天奮戰初步解決了快手的字型反爬。下面截圖是一套字型庫 這是一套字型庫這麼多連線可能是為了適應不同瀏覽器,我看到我司資料庫有400多快手主頁鏈結,於是就將這400多主頁鏈結請求了一遍用正則提取了這400多主頁中的字型庫,去重後發現只有5套不同的,也就可以初步認為快手使用5...

反爬機制之字型反爬詳解

字型反爬,顧名思義就是利用自定義的字元編碼與字型檔案的對映呈現文字的一種反爬措施。下面我們通過例子來詳細介紹字型反爬是怎麼實現的以及解決方案。目錄字元編碼 css3 font face 規則 html檔案 example.html woff字型檔案 example.woff html顯示效果 解決方...

Python爬蟲 字型反爬

網頁開發者自己創造一種字型,因為在字型中每個文字都有其代號,那麼以後在網頁中不會直接顯示這個文字的最終的效果,而是顯示他的代號,因此即使獲取到了網頁中的文字內容,也只是獲取到文字的代號,而不是文字本身。因為創造字型費時費力,並且如果把中國3000多常用漢字都實現,那麼這個字型將達到幾十兆,也會影響網...