[Asm] 纯文本查看 复制代码 import requests,re
from fontTools.ttLib import TTFont #导入字体 处理的库
"""
字体解密最好爬下来解密,因为网页上的是动态的随时变换,会给自己解密带来干扰、 推荐使用FontCreator软件
"""
url = "https://book.qidian.com/info/1025224209"
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',
}
resp = requests.get(url=url,headers=headers)
resp.encoding = "utf-8"
html = resp.text
# with open('yuan_shi.html',"w",encoding="utf-8") as f:
# f.write(resp.text)
# with open('yuan_shi.html','r',encoding='utf-8') as f:
# ht = f.read()
font_url = re.findall("format\('eot'\); src: url\('(.*?)'\)", html)[0]
path = font_url.split("/")[-1]
font_response = requests.get(url=font_url,headers=headers).content
with open(path,'wb') as pf:
pf.write(font_response)
fo = TTFont(path)
fo.saveXML('fo')
#获取字体的映射关系
font_map = fo['cmap'].getBestCmap()
print(font_map)
"""
{100281: 'three', 100283: 'five', 100284: 'four', 100285: 'zero',
100286: 'seven', 100287: 'period', 100288: 'eight',
100289: 'nine', 100290: 'one', 100291: 'two', 100292: 'six'}
(𘟀𘞿𘟃 这个是在网页上源代码加密了的) 网页上显示的是8.2 从而得出得100288: 'eight'就为8
1.先把𘟀换成 'eight' 再换成 8 通过字典的赋值方法实现
"""
mima ={
'eight': '8','period': '.',
'two':'2','seven': '7',
'four':'4','three': '3',
'six':'6','five': '5',
'zero':'0','one':'8','nine':'9',
}
for key in font_map:
font_map[key] = mima[font_map[key]] #通过字典的赋值将最后呈现的值 通过中间不变的中间商(呵呵) 传递给网页加密的值 让其的cmap键值对直接呈现解密后的数字
print(font_map)
for key,velue in font_map.items(): #用for 循环遍历 把源码中的加密字符串全部替换 取出字典的键和值 是dict.item() 一定不要忘记括号
html = html.replace("&#"+str(key)+';',str(velue)) # 字符串拼接
print(html) #解密完成
"""
看完视频练习的 自学 看完视频 自己写一篇 还是挺不错的 有很多自己的找的方法流程 老师教的是老师的 自己学到的就是自己的了
""" |