起点字体加密学习(小白日常学习 欢迎交流 学习使我快乐)
import requests,refromfontTools.ttLibimportTTFont #导入字体 处理的库
"""
字体解密最好爬下来解密,因为网页上的是动态的随时变换,会给自己解密带来干扰、 推荐使用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") asf:
# 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)
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',
}
forkeyin font_map:
font_map = mima] #通过字典的赋值将最后呈现的值通过中间不变的中间商(呵呵) 传递给网页加密的值让其的cmap键值对直接呈现解密后的数字
print(font_map)
for key,velue infont_map.items():#用for循环遍历把源码中的加密字符串全部替换 取出字典的键和值 是dict.item()一定不要忘记括号
html = html.replace("&#"+str(key)+';',str(velue)) #字符串拼接
print(html)#解密完成
"""
看完视频练习的 自学看完视频 自己写一篇 还是挺不错的有很多自己的找的方法流程老师教的是老师的 自己学到的就是自己的了
""" 感谢分享 麻烦死了网站一换字体又得重新更新代码不如直接截屏指定区域然后去调用各个服务商(譬如百度OCR)的OCR识别
只要用点心,自己找方法就可以了,不需要老师。我都做完猿人学的题目了。 麦子1995 发表于 2021-6-26 14:15
这种视频在哪找的的呀,求链接
B站 ----------------------------------------
页:
[1]