Python字体反爬实战案例分享
作者:梦想橡皮擦 发布时间:2021-06-18 01:00:46
标签:Python,字体,反爬
实战场景
本篇博客学习字体反爬,涉及的站点是实习 x,目标站点地址直接百度搜索即可。
可以看到右侧源码中出现了很多“乱码”,这其中就包含了关键信息。
接下来按照常规的套路,在开发者工具中检索字体相关信息,但是筛选之后,并没有得到反爬的字体,只有一个 file?
有些许的可能性。
这里就是一种新鲜的场景了,如果判断不准,那只能用字体样式和字体标签名进行判断了。
在网页源码中检索 @font-face
和 myFont
,得到下图内容,这里发现 file
字体又出现了,看来解决问题的关键已经出现了。
下载文件名之后发现无后缀名,我们可以补上一个 .ttf
的后缀,接下来拖拽到 FontCreator 中,然后进行查阅。
二次刷新页面之后,再次获取一个 file
文件,查看二者是否有编码变化问题。
结论:每次请求字体文件,得到的响应无变化。
既然没有变化,后续的字体反爬实战编码就变的简单了。
实战编码
解析字体文件,获取编码与字符。
from fontTools.ttLib import TTFont
font1 = TTFont('./fonts/file.ttf')
keys,values = [],[]
for k, v in font1.getBestCmap().items():
print(k,v)
得到的结果如下所示:
2 extra bytes in post.stringData array
120 x
57345 uni4E00
57360 uni77
57403 uni56
……
然后我们查看一下实习僧站点返回的数据。
-
这其中又涉及到了编码的转换。
我们拿到一段带编码的文字,如下所示:
销售实习
接下来查看一下页面呈现的文字
SaaS软件销售实习生
其中 
对应的是 S
字符,再看一下该字符在字体文件中的编码,如下所示。
但是从刚才的结果中,并未得到 edb3
相关值,但是把十进制的编码进行转换之后,得到下述结果。
来源:https://blog.51cto.com/cnca/5349671
0
投稿
猜你喜欢
- slice(切片)是 go 里面非常常用的一种数据结构,它代表了一个变长的序列,序列中的每个元素都有相同的数据类型。 一个 slice 类型
- -crop参数是从一个图片截取一个指定区域的子图片.格式如下:convert -crop widthxheight{+-
- 导语:哈喽,哈喽~今天小编又来分享小游戏了——flappy bird(飞扬的小鸟),这个游戏非常的经
- <!-- -----------[test]表生成脚本---------------
- 尽管可能是个比较老的话题了,但是我还是从来没有整理过。今天在《精通HTML》一书中看到,这里整理一下。在XHTML中,<html>
- 为了能够使用ERWin能够进行基于MySQL数据库的物理设计,可以采用以下方法步骤(假设你已经有了一个设计好的LOGICAL MODEL):
- ASP开发中有用的函数(function)集合,挺有用的,请大家保留!'******************************
- 前言 一直用ASP+ACCESS来编写网页和公司的内部应用系统,内部应用系统也就是大家说的OA吧,这个我也不知道,公司又叫它ERP,反正不管
- OCR of Hand-written Data using kNNOCR of Hand-written Digits我们的目标是构建一个
- 最近,我有机会研究对视觉设计作用的常见误解,这些误解仍然盛行于行政主管、产品主管,工程经理和市场专家中。设计团队成员如何说明这些认识是错误的
- 根据微软论坛作者的英文解释,.NET framework 4.0 安装失败回滚貌似是因为“msvcr100_clr0400.d
- 一直想了解Web编程的技术。PHP是进行Web编程重要的一种语言,书上总是说,PHP是用于服务器端的编程语言。但是,实在不能理解它是怎么用于
- 本文实例分析了php中Ctype函数用法。分享给大家供大家参考。具体分析如下:Ctype函数是Php的Ctype扩展函数提供了一组函数用于校
- Oracle :NvlNVL函数:NVL函数是将NULL值的字段转换成默认字段输出。NVL(expr1,expr2)expr1,需要转换的字
- 很多开发者说自从有了 Python/Pandas,Excel 都不怎么用了,用它来处理与可视化表格非常快速。下面我来举几个例子。1. 删除重
- 一、可以使用以下步骤获取两个以逗号分割的字符串的并集:使用explode函数将两个字符串转换为数组,以便可以对其执行操作。使用array_m
- alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter t
- 什么是粘包问题最近在使用Golang编写Socket层,发现有时候接收端会一次读到多个数据包的问题。于是通过查阅资料,发现这个就是传说中的T
- 1、引言小丝:鱼哥,2023年了, 你有啥愿望啊?小鱼:这, 我可以选择不告诉你吗?小丝:可以选择不告诉我,但是,你自己憋着,不难受吗?小鱼
- 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用)