爬虫之字体反爬(一)起点网

今天为大家带来的是爬虫之反爬措施中字体反爬的一个案例,起点网。具体来看下面的分析与代码。

首先参考的网站:https://www.qidian.com/all?&page=1

从网站中可以观察到,它的反爬是这样的:

再从网页源码中观察,发现又是这样的:

 

 在观察网页后发现重复出现了一个较为特殊的标签 <style>,点开之后如下图所示:

 发现原来这就是传说中的字体反爬!!ttf结尾的就是相应的字体文件。

好了,那么接下来就是观察字体文件,查看具体的数字是怎样的对应关系。

查看字体文件可下载fontcreater(自行百度。。),字体文件中显示如下:

 哇。。so easy,这不就是英文字母对应其数字吗,所以先自定义一个字典(单词与数字的对应关系),用来映射该网站的其他字体库。

 接下来,通过python库fonttools工具包,找出字体文件中包含的映射关系,代码如下:

from fontTools.ttLib import TTFont
from io import BytesIO

url_ziti = '字体文件地址'.
ziti = requests.get(url_ziti)
# 下载ttf字体文件,然后通过BytesIO转化为内存文件,使用TTFont处理
font = TTFont(BytesIO(ziti.content))
cmap = font.getBestCmap()
cmap

映射关系如下图所示:

 可以发现,上图中字典的键值与网页源码中的值是一致的,于是就可以通过相互映射的关系,找出这些源码最终代表的是那几个数字,我把两张图放在一起,方便大家理解:

 

 可以看到100156对应数字1,100158对应数字6,依此类推,最后得到的数字是160.87,发现与网页中显示的一致。

这个案例到这就结束啦,总结一下:这里的反爬呢就是相互之间的映射关系,关键点在于寻找发现这种关系,主要通过两个工具,fontcreater和fonttools包,其次只需要映射出网页源码与真实数字即可。

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值