大众点评文字加密反爬Python

13 篇文章 0 订阅
10 篇文章 1 订阅

本文将 大众点评字体反爬方法及完整程序进行注释讲解,亲测有效!!!

以下是将网页字体库使用forcontent字体软件制作

woff_list = ‘1234567890店中美家馆小车大市公酒行国品发电’
‘金心业商司超生装园场食有新限天面工服海华水房饰’
‘城乐汽香部利子老艺花专东肉菜学福饭人百餐茶务通味’
‘所山区门药银农龙停尚安广鑫一容动南具源鲜记时机烤’
‘文康信果头阳理锅宝达地儿衣特产西批坊州牛佳化五米’
‘修爱北养卖建材三会鸡室红站德王光名丽油院堂烧江社’
‘合星货型村自科快便日民营和活童明器器烟育宾精屋经’
‘居庄顺林尔县手厅销用好客火雅盛体旅之鞋辣作粉包楼’
‘校鱼平彩上吧保永万物教吃设医正造丰健点汤网庆技斯’
‘洗料配汇木缘加麻联卫川泰色世方寓风幼羊烫来高厂兰’
‘阿贝皮全女拉成云维贸道术运都口博河瑞宏京际路祥青’
‘镇厨培力惠连马鸿钢训影甲助窗布富牌头四多妆吉苑沙’
‘恒隆春干饼氏里管诚制售嘉长轩杂副清计黄讯太鸭号街’
‘交与叉附近层旁对巷栋环省桥湖段乡厦府铺内侧元购前’
‘幢滨处向座下県凤港开关景九迎第台玉锦底后七斜期武’
‘岭松角纪朝峰六振珠局岗洲横边济井办汉代临弄团外塔’
‘杨铁浦字年岛陵原梅进荣友虹央桂沿事津凯莲丁秀柳集’
‘紫旗张谷的是不了很还个也这我就在以可到错没去过感’
‘次要比觉看得说常真们但最喜哈么别位能较境非为欢然’
‘他挺着价那意种想出员两推做排实分间甜度起满给热完’
‘格荐喝等其再几只现朋候样直而买于般般豆量奶打每评’
‘少算又因情找些份置适什蛋师气你姐棒试总定啊足级整’
‘带虾如态且尝主话强当更板知己无酸让入啦式笑赞片酱’
‘差像提队走嫩才刚午接重串回晚微周值费性桌拍跟块调糕’

获取网页源码

def get_html(url, headers):
html = requests.get(url=url, headers=headers)
return html

获取css文件中woff字体库的链接并下载对应tag下的字体库

def get_css_woff(css_url):
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 HBPC/12.0.0.300’,
}

woff_html = requests.get(url=css_url, headers=headers).text
# print(woff_html)
# 分别获取tag及对应的woff地址
tags_list = re.findall('"PingFangSC-Regular-(.*?)";', woff_html)
# print(tags_list)
woff_url_list = re.findall(',url\("(.*?)"\);}', woff_html)
# print(woff_url_list)
# 解析字体文件

type_dict = {}
for tags_name, woff_urls in zip(tags_list, woff_url_list):
    woff_url = "https:" + woff_urls
    font_file = tags_name + '-' + woff_urls.split('/')[-1]
    # print(woff_url, font_file)
    # 保存字体库至本地
    woff_content = requests.get(url=woff_url,headers=headers)
    with open(font_file, mode='wb') as f:
        f.write(woff_content.content)
    # 读取woff文件
    font_content = TTFont(font_file)
    # print(font_content)
    # 获取文件内容
    woff_font_content = font_content.getGlyphOrder()
    # 截取前2个外的字符
    keys = woff_font_content[2::]
    data = {}
    for k, v in zip(keys, woff_list):
        data[k] = v
    # print(data)
    # return data
        type_dict[tags_name] = data
# print(type_dict)
return type_dict, tags_list

#进行网页字体解密并保存
def main():
url = ’ '链接
headers = {
‘Accept’:
‘Cookie’:
‘User-Agent’:
}
html = get_html(url, headers).text
with open(‘网页代码.html’, mode=‘w’, encoding=‘utf-8’) as f:
f.write(html)
css_url = “https:” + re.findall(‘type=“text/css” href="(.*?)">’, html)[1]
# print(css_url)
type_dicts, tags_lists = get_css_woff(css_url)

html_content = open('网页代码.html', mode='r').read()
# print(html)
tags_name_lists = re.findall('<svgmtsi class="(.*?)">', html_content)
# print(tags_name_lists)

for tags_list_name in tags_name_lists:
    # print(tags_list_name)
    for tags in tags_lists:
        # print(tags)
        if tags == tags_list_name:
            # print(type_dicts[tags_list_name])
            for key in type_dicts[tags_list_name]:
                key = key[3:]
                # print(key)
                html_content = html_content.replace('<svgmtsi class="'+ tags_list_name+ '">&#x' + str(key) + ';</svgmtsi>',
                                                type_dicts[tags_list_name]['uni' + key])
        else:
            continue
with open('after.html', mode='w', encoding='utf-8') as f:
    f.write(html_content)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值