使用爬虫时发现有两个网站均使用的字体库加密,但是各自都在此基础上进行了反爬虫优化,浅浅记录一下。
1、字体库加密(字体加密对应不固定
网站对字体通过调整“font-face”的base64编码实现随机字体加密,有效针对爬虫
解决思路:获取某一元素的font-family对应到相应的font-face,处理后保存为ttf文件,再使用TTFont提取后进行一系列处理,在对文本内容进行纠正,实现内容爬取。
由于字体随机加密,对应不固定,个人认为有以下两种解决思路:
①多次爬取进行人工筛检,若发现实际字体库中存有总字体较少,则提取各个字体外形某特征进行存储,再次爬取新内容时通过该特征确定实际显示文字,将unicode与实际显示进行关联,后以此对文本内容进行纠正。
②若字体数量较多,可引入ocr进行识别,以此将unicode与实际显示进行关联
2、字体库加密+伪元素content
网站对字体加密通过ttf文件进行存储,加密前后对应相对固定,与上一个不同的是通过伪元素存储了部分文字
解决思路:个人认为,通过正则匹配可有效提取出为元素中的文字再通过适当的方式调整至准确位置,总体思路与代码应该都不会太难(未实践。
小结
字体库加密是很常见的反爬虫方法,感觉若是将上述两种方法再进行结合效果会更好,也很期待在ai的不断发展与落地下反爬虫又将会有怎么样的新颖更有效的方法。