Python字体反爬实战案例分享

 更新时间:2022年06月01日 10:32:17   作者:梦想橡皮擦  
这篇文章主要介绍了Python字体反爬实战案例分享,文章基于python的相关资料利用实习 x站点实战案例,具有一定的的参考价值,需要的小伙伴可以参考一下

实战场景 

本篇博客学习字体反爬,涉及的站点是实习 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
……

然后我们查看一下实习僧站点返回的数据。

&#xf626&#xf395&#xf395-&#xf043&#xf395&#xf395

这其中又涉及到了编码的转换。

我们拿到一段带编码的文字,如下所示:

&#xedb3&#xe4d0&#xe4d0&#xedb3&#xe12a&#xeb3d销售实习&#xe595

接下来查看一下页面呈现的文字

SaaS软件销售实习生

其中 &#xedb3 对应的是 S 字符,再看一下该字符在字体文件中的编码,如下所示。

但是从刚才的结果中,并未得到 edb3 相关值,但是把十进制的编码进行转换之后,得到下述结果。

到此这篇关于Python字体反爬实战案例分享的文章就介绍到这了,更多相关Python字体反爬 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中时间类型的JSON数据转换

    Python中时间类型的JSON数据转换

    在Python中,处理时间和日期数据以及与JSON数据的相互转换是常见的任务,本文主要为大家详细如何在Python中处理时间类型的JSON数据转换,需要的小伙伴可以参考下
    2024-02-02
  • Python基于DB-API操作MySQL数据库过程解析

    Python基于DB-API操作MySQL数据库过程解析

    这篇文章主要介绍了Python基于DB-API操作MySQL数据库过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python下调用Linux的Shell命令的方法

    Python下调用Linux的Shell命令的方法

    有时候难免需要直接调用Shell命令来完成一些比较简单的操作,这篇文章主要介绍了Python下调用Linux的Shell命令的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Python中urllib2模块的8个使用细节分享

    Python中urllib2模块的8个使用细节分享

    这篇文章主要介绍了Python中urllib2模块的8个使用细节分享,本文讲解了Proxy设置、Timeout设置、加入特定Header、Redirect、Cookie、PUT和DELETE方法等内容,需要的朋友可以参考下
    2015-01-01
  • 利用Python自制一个批量图片水印添加器

    利用Python自制一个批量图片水印添加器

    这篇文章主要为大家详细介绍了如何利用Python语言自制一个批量图片水印添加器,文中的示例代码讲解详细,具有一定的参考价值,需要的可以了解一下
    2022-10-10
  • Python利用多线程枚举实现获取wifi信息

    Python利用多线程枚举实现获取wifi信息

    这篇文章主要为大家详细介绍了Python如何利用枚举字典的方式来实现获取wifi信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-12-12
  • uwsgi启动django项目的实现步骤

    uwsgi启动django项目的实现步骤

    本文主要介绍了uwsgi启动django项目的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 基于plt.title无法显示中文的快速解决

    基于plt.title无法显示中文的快速解决

    这篇文章主要介绍了基于plt.title无法显示中文的快速解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python文件系统模块pathlib库

    Python文件系统模块pathlib库

    这篇文章介绍了Python中的文件系统模块pathlib库,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 使用Python脚本来控制Windows Azure的简单教程

    使用Python脚本来控制Windows Azure的简单教程

    这篇文章主要介绍了使用Python脚本来控制Windows Azure的简单教程,由于微软官方提供了Python SDK,使得用户自己用Python控制Azure成为了可能,需要的朋友可以参考下
    2015-04-04

最新评论