成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Python爬蟲實例之2021貓眼票房字體加密反爬策略(粗略版)

Python爬蟲實例之2021貓眼票房字體加密反爬策略(粗略版)

熱門標簽:千呼ai電話機器人免費 外呼系統(tǒng)前面有錄音播放嗎 鎮(zhèn)江人工外呼系統(tǒng)供應(yīng)商 深圳網(wǎng)絡(luò)外呼系統(tǒng)代理商 騰訊地圖標注有什么版本 柳州正規(guī)電銷機器人收費 400電話辦理費用收費 申請辦個400電話號碼 高德地圖標注字母

前言:

貓眼票房頁面的字體加密是動態(tài)的,每次或者每天加載頁面的字體文件都會有所變化,本篇內(nèi)容針對這種加密方式進行分析

字體加密原理:簡單來說就是程序員在設(shè)計網(wǎng)站的時候使用了自己設(shè)計的字體代碼對關(guān)鍵字進行編碼,在瀏覽器加載的時會根據(jù)這個字體文件對這些字體進行編碼,從而顯示出正確的字體。

已知的使用了字體加密的一些網(wǎng)站:
58同城,起點,貓眼,大眾點評,啟信寶,天眼查,實習(xí)僧,汽車之家
本篇內(nèi)容不過多解釋字體文件的映射關(guān)系,不了解的請自行查找其他資料。
如若還未入門爬蟲,請往這走 簡單粗暴入門法——Python爬蟲入門篇

import requests
import urllib.request as down
import json
from fontTools.ttLib import TTFont
import re
#分析用
import matplotlib.pyplot as plt #繪圖
import numpy as np # 科學(xué)計算庫

安裝:
pip install matplotlib
pip install requests
pip install numpy
pip install fonttools

首先我們對貓眼票房頁面進行簡單分析

可以看到票房數(shù)字在審查中顯示的是亂碼,類似與這種情況的就可能是使用了字體加密,因此我們需要找到字體文件(字體文件會以鏈接方式存放在頁面中)

找到了字體文件,下載并對映射關(guān)系進行分析,可以得到我們需要的一組基礎(chǔ)字形映射表;并且可以通過映射關(guān)系得到每個字形的所有坐標

baseFont=TTFont('maoyan.woff')
# 獲取相應(yīng)數(shù)字的namecode和形狀坐標的關(guān)系,可用來獲取坐標
glyf=baseFont['glyf']
#通過對一份字體樣本分析得出的字體映射
baseNumberMaps={
 0:glyf['uniF632'],
 1:glyf['uniF2F1'],
 2:glyf['uniF0A4'],
 3:glyf['uniF7B7'],
 4:glyf['uniE82D'],
 5:glyf['uniF653'],
 6:glyf['uniE756'],
 7:glyf['uniF41A'],
 8:glyf['uniE79B'],
 9:glyf['uniE81E']
}
for num,name in baseNumberMaps.items():
 print(name.coordinates)

我們將坐標繪圖成圖形,在進行不同組字形圖形對比可以發(fā)現(xiàn)每套字形的坐標不同,大小比例不同,而字形是不變的,也就是相似

對比坐標發(fā)現(xiàn)每套字形坐標都會有所改變,但是整體圖形還是同一個,所以我想到了斜率對比,我們計算每個字形部分線段的斜率,如果斜率之差小于一個數(shù)值,就說明這兩個是相同的數(shù)字。

因此就得到了一個思路 獲得基礎(chǔ)字體映射關(guān)系表爬取頁面下載所加載的字體獲得需要對比的字體映射關(guān)系表計算每套字體每個字形的線段斜率,并進行差值計算循環(huán)匹配,從基礎(chǔ)字形的0-9開始去匹配新字形的斜率,如果斜率之差小于0.5并且樣本數(shù)>=9我們則認為兩個圖形為同一個數(shù)字,獲得正確的字體映射關(guān)系對加密字體進行替換得到正確內(nèi)容

程序?qū)崿F(xiàn)

import requests
import urllib.request as down
import json
from fontTools.ttLib import TTFont
import re
import MyPyClass

# 得到字體斜率列表(部分)
def font_Kdict(mapstype,maps=None):
 '''
 得到字體斜率字典(部分)
 參數(shù):
 mapstype:str->maps類型,判斷是是base/new
 maps:映射字典

 return kdict
 kdict字典關(guān)系:
 num:Klist 數(shù)字對應(yīng)每條線段的斜率列表
 '''
 kdict={}
 # 遍歷maps字典,找到對應(yīng)的num和namecode
 for num, namecode in maps.items():
 # 跳過無用數(shù)據(jù)
 if namecode == 'x': continue
 # 判斷類型,并從.coordinates得到對應(yīng)num的所有坐標
 if mapstype=='base':coordinates = namecode.coordinates
 elif mapstype=='new':coordinates=glyf[namecode].coordinates
 # 得到坐標 X列表和坐標 Y列表
 x = [i[0] for i in coordinates]
 y = [i[1] for i in coordinates]
 Klist = []
 # 遍歷X列表并切片為前10個數(shù)據(jù)進行斜率計算,即代表繪圖的前10條線段的斜率
 for index, absx in enumerate(x[:10]):
  # 當斜率為0/1時,認為斜率為1計算
  if x[index + 1] == x[index] or y[index + 1] == y[index]:
  absxy = 1
  else:
  absxy = (y[index + 1] - y[index]) / (x[index + 1] - x[index])
  # 將斜率加入到列表
  Klist.append(-absxy if absxy  0 else absxy)
 kdict[num]=Klist
 #print('base:', code, Klist, name)
 return kdict
# 對比斜率字典
def contrast_K(kbase,knew):
 '''
 對比斜率映射差距
 參數(shù):
 kbase:基礎(chǔ)字體映射表的斜率字典
 knew:當前鏈接的字體映射表的斜率字典

 return:dict
 fontMaps:根據(jù)對比得出正確的字體映射關(guān)系字典

 '''
 fontMaps = {}
 # 遍歷kbase字典
 for base in kbase.items():
 n = 0 # 成功匹配的斜率個數(shù)
 # 遍歷knew字典
 for new in knew.items():
  # 遍歷kbase>knew>下的兩組斜率,進行大小匹配,
  # 如果斜率k的差值小于0.5,并且樣本數(shù)>=9時,認為兩個坐標圖形相識只是大小比例不同
  # 即k=0.5 n>=9
  for (k1,k2) in zip(base[1],new[1]):
  # k取正數(shù)
  k=k1-k2 if k1>k2 else k2-k1
  if k=0.5:
   n+=1
   continue
  else:
   break
  if n>=9:
  # 匹配正確則添加進字典中 此時的字典關(guān)系是:code:num 代碼對應(yīng)數(shù)字的關(guān)系
  fontMaps[str(hex(new[0]).replace('0x','#x'))]=str(base[0])
  break
  n=0
 #print(fontMaps)
 return fontMaps

# 建立基礎(chǔ)字體對象
baseFont=TTFont('maoyan.woff')
# 獲取相應(yīng)數(shù)字的namecode和形狀坐標的關(guān)系,可用來獲取坐標
glyf=baseFont['glyf']
#通過對一份字體樣本分析得出的字體映射
baseNumberMaps={
 0:glyf['uniF632'],
 1:glyf['uniF2F1'],
 2:glyf['uniF0A4'],
 3:glyf['uniF7B7'],
 4:glyf['uniE82D'],
 5:glyf['uniF653'],
 6:glyf['uniE756'],
 7:glyf['uniF41A'],
 8:glyf['uniE79B'],
 9:glyf['uniE81E']
}
url='https://piaofang.maoyan.com/dashboard-ajax?orderType=0uuid=1778ad877f8c8-0b23bf32a2bb26-c7d6957-1fa400-1778ad877f8c8riskLevel=71optimusCode=10'
ua=MyPyClass.GetUserAgent()#獲得ua
# 爬取內(nèi)容
with requests.get(url,headers={'user-agent':ua}) as response:
 # 獲取存放字典的json字段,并提取字體url
 fontStyle=json.loads(response.content)['fontStyle']
 fontStyle=re.findall('\"([\s\S]*?)\"',fontStyle[::-1])
 fonturl='http:'+fontStyle[0][::-1]# 字體url鏈接
 # 將加載的字體下載保存到本地,并對其進行分析
 down.urlretrieve(fonturl,'newfont.woff')
 # 爬取的電影數(shù)據(jù)內(nèi)容
 content = json.loads(response.content)['movieList']['data']['list']
# 信息字典
movieNum={}#綜合票房數(shù)字典
movieDayOne= {}#上映首日數(shù)量
movieRate={}#票房占比
movieshowCount={}#排片場次
movieViewerAvg={}#場均人數(shù)
movieInfos={}
# 頁面內(nèi)容
for i in content:
 moviename=i['movieInfo']['movieName']
 movieNum[moviename]=i['boxSplitUnit']['num']
 movieDayOne[moviename]=i['sumBoxDesc']
 movieRate[moviename]=i['splitBoxRate']
 movieshowCount[moviename]=i['showCount']
 movieViewerAvg[moviename]=i['avgShowView']

# 新字體對象
fontnew=TTFont('newfont.woff')
# 得到當前字體的映射關(guān)系表
newNumberMaps=fontnew.getBestCmap()
# 獲取字形
glyf=fontnew['glyf']
# 基礎(chǔ)字體斜率字典
k_base_dict=font_Kdict(maps=baseNumberMaps,mapstype='base')
# 新字體斜率字典
k_new_dict=font_Kdict(maps=fontnew.getBestCmap(),mapstype='new')
# 得到字體映射字典
fontcodes=contrast_K(k_base_dict,k_new_dict)
# 對加密的字體遍歷分組,并去除無用字符
for name,numbercode in movieNum.items():
 movieNum[name]=re.findall('([\S]*?);', numbercode)
# 根據(jù)得到的fontcodes映射對加密字體進行替換,得到正確數(shù)值
for index,(name,numbercodelist) in enumerate(movieNum.items()):
 num=[]
 # 替換操作
 for code in numbercodelist:
 if '.' in code:
  code=code.replace('.','')
  num.append('.'+fontcodes[code])
 else:
  num.append(fontcodes[code])
 infos=['排行:'+str(index+1),
 '片名',name,
 '上映首日',movieDayOne[name],
 '票房',''.join(num)+'萬',
 '票房占比',movieRate[name],
 '場均人數(shù)',movieViewerAvg[name]+'人',
 '排片場次',movieshowCount[name]]
 print(infos)

實現(xiàn)效果如下

到此這篇關(guān)于Python爬蟲實例之2021貓眼票房字體加密反爬策略(粗略版)的文章就介紹到這了,更多相關(guān)Python爬蟲貓眼票房字體反爬內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python 逆向爬蟲正確調(diào)用 JAR 加密邏輯
  • Python3 使用cookiejar管理cookie的方法
  • python調(diào)用java的jar包方法
  • Java實現(xiàn)的執(zhí)行python腳本工具類示例【使用jython.jar】
  • Python創(chuàng)建自己的加密貨幣的示例
  • python通過cython加密代碼
  • python 實現(xiàn)aes256加密
  • Python 正確調(diào)用 jar 包加密得到加密值的操作方法

標簽:合肥 大慶 烏蘭察布 平頂山 烏蘭察布 海南 哈爾濱 郴州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Python爬蟲實例之2021貓眼票房字體加密反爬策略(粗略版)》,本文關(guān)鍵詞  Python,爬蟲,實例,之,2021,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python爬蟲實例之2021貓眼票房字體加密反爬策略(粗略版)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python爬蟲實例之2021貓眼票房字體加密反爬策略(粗略版)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    www.日韩.com| 国产精品污网站| 国产精品视频第一区二区三区| 国产精品久久999| 日韩一级特黄毛片| 久久99蜜桃| 青草视频在线播放| 有色激情视频免费在线| aaaa黄色片| 91精品国产综合久久久蜜臀粉嫩| 国产亚洲精品成人a| 成人在线国产视频| 免费激情小视频| 91在线观看高清| 一区二区美女| av电影免费| 国产精品一卡| 神马影院一区二区| 欧美变态xxxx| 免费观看毛片网站| 日韩亚洲国产中文字幕| 国产亚洲欧美视频| 中文字幕欧美日韩一区| 国产精品欧美亚洲| 77777_亚洲午夜久久多人| 极品美女销魂一区二区三区免费| 亚洲精品动漫久久久久| 国产精品婷婷午夜在线观看| 成人高潮免费视频| 91gao视频| 高清av资源| 狠狠鲁男人天堂| 久久精品女同亚洲女同13| 欧美亚洲国产日本| 日本成人在线网站| 新天堂中文资源官网在线观看| 欧美大片免费看| 91福利在线观看| 中文字幕日韩久久| a视频免费看| 9.1成人看片| 欧美日韩国产色站一区二区三区| 国产精品传媒毛片三区| 日韩黄色大片网站| 色姑娘资源站| 欧美人与禽猛交乱配视频| 4438x成人网全国最大| 国产剧情在线观看一区二区| 国产麻豆电影在线观看| 午夜影院免费播放| 亚洲人线精品午夜| 在线中文字幕网站| 中文字幕久久久久久久| 国产高清一区视频| 久久精品福利视频| 日韩国产专区| 国产成人黄色网址| 色欧美乱欧美15图片| 亚洲日韩欧美视频| 亚洲最新av在线网站| 国产亚洲精品中文字幕| 欧美精品一区二区久久| 亚洲国产综合自拍| 影音先锋日韩资源| 福利小视频网站| av官网在线| 成人美女视频在线观看18| 色橹橹欧美在线观看视频高清| 久久精品最新免费国产成人| 综合干狼人综合首页| 国产三级自拍视频| 欧美日韩激情一区二区| 免费中国女人69xxxxx视频| 午夜久久久久久电影| 欧美高清xxxxxkkkkk| 国产日本欧美视频| 91美女片黄在线观| 人妻丰满熟妇av无码区hd| 蜜桃国内精品久久久久软件9| 999久久久精品视频| 亚洲人成毛片在线播放| 在线看的毛片| 久久艹这里只有精品| 国产日韩精品一区二区三区在线| 亚洲一区日韩精品中文字幕| 成人直播在线观看| 少妇一晚三次一区二区三区| www.久色| 91精品国产高清91久久久久久| 亚洲国产www| 日本理论中文字幕| 超碰97在线免费| 黑人性生活视频| 中文幕av一区二区三区佐山爱| ww久久中文字幕| 亚洲精品乱码久久久久久金桔影视| 最近中文字幕2019免费| 波多野吉衣在线视频| 老司机午夜免费福利| 日韩欧美在线视频观看| 国产精品美女高潮无套| 午夜成人免费影院| av网站大全在线| 亚洲国产精品视频在线观看| 色999五月色| 日韩精品免费| 四虎海外影库www4hu| 国产无遮挡又黄又爽免费软件| 久久久综合香蕉尹人综合网| 亚洲欧美一区二区三区情侣bbw| 中文字幕在线免费播放| 91精品国产美女浴室洗澡无遮挡| 不卡av电影在线播放| 免费精品视频最新在线| 国产www视频| 美女激情网站| 日韩欧美中文字幕一区| 亚洲无线看天堂av| 久久久精品电影| 亚洲天堂av影院| 亚洲乱码国产乱码精品| 蜜桃精品噜噜噜成人av| 欧美日韩精品中文字幕| 91久久青草| 国产一区二区三区久久久| 小早川怜子影音先锋在线观看| 日韩欧美视频一区二区三区四区| 国产乱人伦精品一区二区| 无码人妻一区二区三区免费| 羞羞视频在线观看不卡| 国产日韩一区二区三区| 黄色手机在线视频| 自拍自偷一区二区三区| 久久99精品久久久久久琪琪| 色国产精品一区在线观看| 亚洲婷婷在线观看| 十八禁视频网站在线观看| 国产成人av在线影院| 欧美高清videos性极品| 中文字幕v亚洲ⅴv天堂| 国产麻豆免费观看| 日韩免费黄色av| 婷婷六月国产精品久久不卡| 国产极品jizzhd欧美| 国产成人精品www牛牛影视| 日韩精品在线视频美女| gogogo影视剧免费观看在线观看| 日本视频中文字幕一区二区三区| 亚洲国产另类精品专区| 亚洲特级毛片| 日韩av网站免费在线| 欧美黑人欧美精品刺激| 欧美亚洲黄色片| 亚洲精品www久久久| 亚洲激情第一页| 中文乱码字幕午夜无线观看| 超级砰砰砰97免费观看最新一期| 成人亚洲精品久久久久软件| 一道精品视频一区二区三区图片| 国产精品视频一区麻豆| av一级黄色片| 色老板在线观看| 欧美黑人猛猛猛| 亚洲欧美日本国产专区一区| 东方aⅴ免费观看久久av| 亚洲天堂1区| 午夜日韩电影| 91久久综合亚洲鲁鲁五月天| 亚洲人成精品久久久| 久久av喷吹av高潮av| 亚洲色图国产精品| 三区精品视频观看| 亚洲自偷自拍熟女另类| 狠狠色狠狠色综合日日小说| 国产欧美一区二区| 日本免费色视频| 欧美伊久线香蕉线新在线| 亚洲av片一区二区三区| 精品国产第一区二区三区观看体验| 亚洲动漫精品| 欧美成人精品一区二区免费看片| 青青九九免费视频在线| 91在线在线观看| 一本色道久久综合亚洲精品小说| 国产精品热久久久久夜色精品三区| 中文字幕免费高清电视剧网站在线观看| 久久久国产精华液999999| 欧美精品久久一区二区三区| 欧美激情第一页xxx| 亚洲一区 在线播放| 少妇荡乳情欲办公室456视频| 妖精视频成人观看www| 日韩一区二区三区三四区视频在线观看| 国产精品久久看| 午夜成人在线视频| 日韩在线免费观看视频| 男人天堂新地址| 色多多视频在线观看| 亚洲精品电影院| 中文字幕 国产精品| 岛国片在线观看| 亚洲天堂中文在线| 大胆人体色综合| 在线三级av| 欧美视频在线视频精品| 成人18视频免费69| 一区二区三区中文字幕在线观看| 久香视频在线观看| 亚洲第一天堂无码专区| 日韩av中文字幕在线免费观看| 视频三区在线| 91在线视频九色| 毛片毛片毛片毛| 亚洲在线观看网站| 影音欧美亚洲| 中文字幕av在线播放| 欧美在线91| 成人在线免费在线观看| 国产精品一区牛牛影视| 亚洲成人资源网| 婷婷亚洲精品| x88av蜜桃臀一区二区| 亚洲青色在线| 成人精品视频99在线观看免费| 日韩精品视频久久| 欧美主播一区二区三区| 伊人久久大香线蕉av超碰演员| 在线视频不卡国产| 人与动性xxxxx免费视频| 污网站在线观看视频| 九七伦理97伦理手机| 欧洲金发美女大战黑人| 亚欧黄色av| 亚洲美女视频在线| 日韩精品视频在线观看一区二区三区| 不卡一区二区在线| 欧美中文在线| 日韩精品无码一区二区三区免费| 伊人成人网在线看| 伊人久久久久久久久久久久久久| 国产毛片久久久久| 亚洲成人影院少妇| 国产伦理一区二区| 狠狠色综合网站久久久久久久| 天天综合网天天综合色| 欧美美女网站色| 国产精品视频免费一区二区三区| 米奇精品关键词| 精品在线免费视频| 欧美精品99久久久**| 水野朝阳av一区二区三区| 亚洲成av人片乱码色午夜| 蜜桃一区二区三区在线| av电影在线观看完整版一区二区| 日本精品另类| 欧美日韩看片| 欧美第一页在线| 国产亚洲一区二区三区在线播放| 成人午夜精品视频| 一区二区欧美在线观看| 91在线精品一区二区三区| 亚洲第一av网站| 1区2区3区欧美| 亚洲欧洲一区二区在线播放| 色中色综合影院手机版在线观看| 国产免费一区二区三区在线观看| 久久精品99久久久久久久久| 国产天堂在线播放视频| 国产va亚洲va在线va| 国产69久久精品成人看| 91玉足脚交嫩脚丫在线播放| 欧美一级高清片在线观看| 性猛交富婆╳xxx乱大交一| 午夜福利123| 99se婷婷在线视频观看| 中文字幕日韩在线观看| 国产传媒国产传媒| 最近2019中文字幕第三页视频| 最近中文字幕大全中文字幕免费| 这里只有精品999| 欧美午夜寂寞| 日韩影院在线观看| 最新国产精品久久| 91精品国产吴梦梦| 亚洲爱爱天堂| 国产在线自天天| 日日躁夜夜躁aaaabbbb| 在线日韩国产网站| 国产激情久久久久久熟女老人av| 国内视频精品| 国产高潮流白浆| 狠狠躁狠狠躁视频专区| 91九色国产ts另类人妖| 五月婷婷六月丁香激情| 久久久久久无码精品人妻一区二区| 中文字幕一区二区三区四区五区六区| 久久精品成人| 福利电影导航| 国内免费精品永久在线视频| 在线中文视频| 欧洲一级在线观看| 一区二区三区电影| 成人午夜激情视频| 中文天堂在线视频| 国产精品久久久久久久久久辛辛| 亚洲免费视频中文字幕| 成人性生生活性生交12| 美女一区二区三区在线观看| av毛片在线看| 国产成人综合精品在线| 日本福利视频导航| 在线一区免费| 国产91久久婷婷一区二区| 国产综合在线观看视频| 欧美精品www在线观看| 中文在线网在线中文| 在线免费色视频| 亚洲欧美综合久久久| 大地资源高清播放在线观看| 在线视频日韩欧美| 亚洲精品日韩成人| 国产99在线| 特级西西人体wwwww| 一级黄色在线| 久久精品在这里| 在线综合视频播放| 亚洲美女主播视频免费观看| 9191久久久久久久久久久|