Python起点字体加密破解
import requests
import re
from lxml import etree
from fontTools.ttLib import TTFont
from io import BytesIO
url = ‘https://book.qidian.com/info/1012932890’
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36’,
}
r = requests.get(url=url, headers=headers)
tree = etree.HTML(r.text)
#先拿到span的class名字,它和字体的URL路径中的字体文件名字是对应的,每次刷新两个都会一起改变,所以每次请求都先把classname取出来在下边拼接字体URL使用
classname = tree.xpath(’//div[contains(@class,“book-info”)]/p/em/span/@class’)[0]
#拼接得到字体的url,因为起点网页中的加密字体的几个URL中只有最后 {名字}.ttf 在变化,所以每次请求时把classname抓出来进行拼接使用
font_url = ‘https://qidian.gtimg.com/qd_anti_spider/{}.ttf’.format(classname)
#得到span中你要爬取的内容
pattern = re.compile(r’(.*?)’)
ret = pattern.search(r.text)
string = ret.group(1)
print(string)
#得到如下字符串
𘟍𘟎𘟉𘟇𘟐
#将字体文件下载下来
r_font = requests.get(url=font_url, headers=headers)
filename = font_url.split(’/’)[-1]
with open(filename, ‘wb’) as fp:
fp.write(r_font.content)
#打开这个字体,想要不下载到本地直接在内存中读取字体的话必须得用BytesIO打开字体内容
font = TTFont(BytesIO(r_font.content))
#找到字体文件内的映射关系(字典)
dic = font.getBestCmap()
#关闭这个字体
font.close()
print(dic)
#{100317: ‘three’, 100319: ‘seven’, 100320: ‘four’, 100321: ‘five’, 100322: ‘zero’, 100323: ‘nine’, 100324: ‘eight’,100325: ‘two’, 100326: ‘six’, 100327: ‘period’, 100328: ‘one’}
#因为字体文件中的映射关系对应的是英文,如上;所以自己再设计一个字典,找出html中对应的数字
font_dic = {‘one’: ‘1’, ‘two’: ‘2’, ‘three’: ‘3’, ‘four’: ‘4’, ‘five’: ‘5’, ‘six’: ‘6’, ‘seven’: ‘7’, ‘eight’: ‘8’,‘nine’: ‘9’, ‘zero’: ‘0’, ‘period’: ‘.’}
#将string按照分号进行切割
𘟍𘟎𘟉𘟇𘟐
#因为最后有一个封号所以最后会有一个空的元素,所以切一下片
lt = string.split(’;’)[:-1]
#取出对应数字进行拼接
number = ‘’
for code in lt:
code = code.lstrip(’&#’)
char_code = dic[int(code)]
number_code = font_dic[char_code]
number += number_code
print(number)
- python—如何使用post进行登录操作与非对称加密的破解
- Python爬虫—破解JS加密的Cookie
- 如何用Python写一个暴力破解加密压缩包的程序
- Python爬虫—破解JS加密的Cookie
- python脚本暴力破解 加密的zip压缩文件
- python 反反爬虫策略之js动态加密url破解
- Python爬虫实例:爬取猫眼电影——破解字体反爬
- python破解zip加密文件的方法
- Zip加密文件字典破解Python实现
- Python---项目3-破解使用crypt方法加密(已加salt参数)的登录密码
- Python爬虫—破解JS加密的Cookie
- 5分钟破解WEB加密的无线密码
- 破解栅栏密码python脚本
- python修改编辑器字体大小(Mac)
- PyCharm_汉化包_编译器字体和背景怎么设置?_怎么添加多个python解释器?
- 《Diss验证码》——Python验证码破解:图像字符验证码识别(1-入门)
- Python3 django2.0 字段加密 解密 AES
- ASP商业程序DLL加密,如何防破解
- kindle3 破解字体