文中案例参考 GitHub项目
4 文本混淆反爬虫
4.1 图片伪装为文字反爬虫
- 有些文字内容实际是图片伪装的
- 提取图片的内容(图片请求响应结果res.content就是图片的字节数据,可以直接write为图片对象,也可以打开为图片对象,看案例)
- 图片对象使用光学字符识别技术(pytesseract库)从图片中提取文字
- PyTesseract缺点:只能识别出一些清晰工整的图像中的文字,扭曲的文字或者有其它颜色图片干扰信息时候识别不准确
- 参考案例001(02文件夹中)
4.2 CSS偏移反爬虫
- 一般用于数字显示,源码中有很多数字,用于混淆
- 网页中显示的出来的内容的位置是固定的,源码中的数字进行偏移覆盖才是最终显示出来的数字
- 去哪儿网的航班票价就是进行CSS偏移处理过的
- 前面有数字120 下面有数字002
- 002通过不同的左右偏移位置覆盖在120的数字上才是最终显示结果
- 参考图片002
4.3 SVG图形映射反爬虫
- SVG是一种二维矢量图形格式,放大缩小清晰度保持不变
- SVG映射反爬虫:前端或者后端里面将文字或者数字映射为对应SVG图形文件
网页源码中显示的是SVG图形文件,并没有实际的文字或者数字内容 - 最常用于团购网站商家电话的替换
- 映射替换有两种方式:
- 方式1:一个SVG图片代表一个数字或者文字。要显示内容的地方使用SVG图片替代,一般是设置class样式,然后设置背景图片,用SVG图片插到盒子中
- 方式2:将所有的数字或者文字都放在一张SVG图片上,然后设置为背景图片,然后通过偏移图片的位置显示内容
- 方式3:将所有的数字或者文字都放在一张SVG图片上,然后设置为背景图片,图片位置不同,SVG图片里面的的数字是可以通过改变xy轴坐标显示的位置的
- 具体参考图书的P181页,关键是找到映射的规律
4.4 自定义网页字体(常用woff格式字体)反爬虫
-
自定义的字体格式:woff ttf eot otf
-
文中的数字使用自定义字体样式进行替代,查看元素数字都是显示的方框或者其它特殊符号
-
查看元素里面可以数字都有一个class样式,查看该class样式具体内容,只用一个font-family,对应的值就是自定义的字体样式
-
查看源码,数字是一些特殊编码,特殊编码就是字体文件里面定义的数字对应的编码
-
woff等字体文件请求的网址,可以下载字体文件到本地,然后使用
-
百度在线字体编辑打开查看:http://fon