zoukankan      html  css  js  c++  java
  • 我去!爬虫遇到字体反爬,哭了

    今天准备爬取某某点评店铺信息时,遇到了『字体』反爬。比如这样的:

    还有这样的:

    可以看到这些字体已经被加密反爬

    竟然遇到这种情况,那辰哥就带大家如何去解决这类反爬(字体反爬类

    01 网页分析

    在开始分析反爬之前,先简单的介绍一下背景(爬取的网页)

    辰哥爬取的某某点评的店铺信息。一开始查看网页源码是这样的

    这种什么也看不到,咱们换另一种方式:通过程序直接把整个网页源代码保存下来

    获取到的网页源码如下:

    比如这里看到评论数(4位数)都有对应着一个编号(相同的数字编号相同),应该是对应着网站的字体库

    下一步,我们需要找到这个网站的字体库。

    02 获取字体库

    这里的字体库建议在目标网站里面去获取,因为不同的网站的字体库是不一样,导致解码还原的字体也会不一样。

    1、抓包获取字体库

    在浏览器network里面可以看到一共有三种字体库。(三种字体库各有不同的妙用,后面会有解释

    把字体库链接复制在浏览器里面打开,就可以把字体库下载到本地。

    2、查看字体库

    这里使用FontCreator的工具查看字体库。

    下载地址:

    https://www.high-logic.com/font-editor/fontcreator/download
    
    

    这里需要注册,邮箱验证才能下载,不过辰哥已经下载了,可以在公众号回复:FC,获取安装包。

    安装之后,把刚刚下载的字体库在FontCreator中打开

    可以看到字体的内容以及对应的编号

    比如数字7对应F399数字8对应F572 ,咱们在原网页和源码对比,是否如此???

    可以看到,真是一模一样对应着解码就可以还原字体。

    3、为什么会有三个字体库

    在查看加密字体的CSS样式时,方式有css内容是这样的

    字体库1:d35c3812.woff 对应解码class为 shopNum

    字体库2:084c9fff.woff 对应解码class为 reviewTag和address

    字体库3:73f5e6f3.woff  对应解码class为 tagName

    也就是说,字体所属的不同class标签,对应的解密字体库是不一样的,辰哥这里不得不说一句:太鸡贼了

    咱们这里获取的评论数,clas为shopNum,需要用到字体库d35c3812.woff

    03 代码实现解密

    1、加载字体库

    既然我们已经知道了字体反爬的原理,那么我们就可以开始编程实现解密还原。

    加载字体库的Python库包是:fontTools ,安装命令如下:

    pip install fontTools
    
    

    将字体库的内容对应关系保存为xml格式

    code和name是一一对应关系

    可以看到网页源码中的编号后四位对应着字体库的编号。

    因此我们可以建立应该字体对应集合

    建立好映射关系好,到网页源码中去进行替换

    这样我们就成功的将字体反爬处理完毕。后面提取内容大家基本都没问题。

    2、完整代码

    输出结果:

    可以看到加密的数字全部都还原了。

    04 小结

    辰哥在本文中主要讲解了如此处理字体反爬问题,并以某某点评为例去实战演示分析。辰哥在文中处理的数字类型,大家可以尝试去试试中文如何解决。

    为了大家方便学习,辰哥已经把本文的完整源码上传,需要的在公众后台回复:字体反爬

    不明白的地方可以在下方留言,一起交流。

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    sabaki and leelazero
    apply current folder view to all folders
    string operation in powershell
    wirte function in powershell
    add environment path to powershell
    Module in powershell
    sql prompt
    vmware中鼠标在部分区域不能使用
    调整多个控件的dock的顺序
    行为型模型 策略模式
  • 原文地址:https://www.cnblogs.com/chenlove/p/14858742.html
Copyright © 2011-2022 走看看