在写爬虫时,有时会遇到字体反爬,爬取的网站在看源码时会出现乱码,或者位置错乱等现象,这就是字体反爬了
首先需要了解下dataurl:
Data URLs 由四个部分组成:前缀(data:
)、指示数据类型的MIME类型、如果非文本则为可选的base64
标记、数据本身:
data:[<mediatype>][;base64],<data>
dataurl可以给数据做编码,编码格式为base64
第二你要知道
CSS有一种标记叫做@font-face
,在@font-face
声明里,可以声明一种字体,指定这种字体库文件从网络中的某个地方下载
这两种相结合就出现了下面这种情况
@font-face {
font-family: 'xxxxx字体';
src: url(data:application/font-woff;charset=utf-8;base64, ... ) format('woff'), /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
对这种情况的破解,需要把base64编码转换成ttf文件,再用python模块解析,待续。。。
参考网址:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/data_URIs#Encoding_data_into_base64_format
http://www.webhek.com/post/font-face.html
https://www.cnblogs.com/fxair/p/3867141.html
文件的操作格式:https://www.cnblogs.com/xiaoming279/p/6372860.html
https://zhuanlan.zhihu.com/p/33112359
https://blog.csdn.net/qq_42336573/article/details/80698580
https://blog.csdn.net/qq_31032181/article/details/79153578