跳转到主内容
极星编程网:以代码为星,赴技术山海!

Python爬虫遇到字体加密怎么办?用FontMap轻松破解!

文章导读

大家好,我是苏承栈。今天要和大家分享的是,如何用Python破解那些用字体加密的网站。相信很多朋友都遇到过这种情况,今天我们就来实操一下,用FontMap库轻松破解字体加密,获取我们想要的数据。

正文部分

首先,我们要爬取的网站是 https://fanqienovel.com/rank/1_2_124,通过开发者工具观察,发现文字使用了字体加密。接下来,我们要做的是找到并下载字体文件。通过抓包,我们找到了字体文件,然后下载保存到本地。 pip install FontMap 安装好FontMap库后,我们就可以开始使用它了。首先,我们要导入FontMap库,并设置保存路径和字体文件路径。 import FontMap #savepath为生成的字形图片保存地址 #fontpath为下载的字形文件 fontmap = FontMap.HuiFontMap(savepath=r"C:\Users\21761\Desktop\新建文件夹",fontpath=r"C:\Users\21761\Desktop\dc027189e0ba4cd.woff2") 执行后,会生成字体字形图片,并按照savepath路径保存。接下来,我们使用FontMap库的ocr识别方法,生成字体映射。 fontmap = FontMap.HuiFontMap(savepath=r"C:\Users\21761\Desktop\新建文件夹",fontpath=r"C:\Users\21761\Desktop\dc027189e0ba4cd.woff2",issaveimg=False) #这个方法会返回一个识别结果 #jsonpath设置结果保存,默认是不保存的 ocrContent = fontmap.ocrFontImg(jsonpath='fontmap.json') print(ocrContent) 有了这个识别结果,我们就可以来替换请求页面原文本了。 import httpx from lxml import etree import json #请求链接 url = 'https://fanqienovel.com/rank/1_2_124' res = httpx.get(url).text html = etree.HTML(res) #获取标题 title = html.xpath('//[@href="/page/7112656623956397088"]//text()')[0] #读取之前ocr保存的结果 with open('fontmap.json','r',encoding='utf-8')as f: fontmap = json.load(fp=f) print(title) 接下来,我们循环标题,获取每一个文本,去匹配ocr识别的结果,然后拼接。如果匹配不上,就说明不是加密文本。 t = '' a = [] for i in title: n = 'gid'+str(ord(i)) try: t+=fontmap[n] a.append(f'{n}:{fontmap[n]}') except: t+=i print(t) print(a) 运行之后,我们就可以看到我们想要的结果了。 最后,如果FontMap这个库有啥问题请告诉我,我没有经过很多测试,可能偶尔会报错。

小结与拓展

好了,今天的分享就到这里。希望这篇文章能帮助到大家解决字体加密的难题。如果大家还有其他问题,欢迎在评论区留言。我是苏承栈,我们下期再见!

关注极星编程网

想要了解更多编程技术,欢迎关注极星编程网(www.jxgpc.com),这里有更多精彩内容等你来发现!

相关文章