【5分钟看懂SVG反爬虫原理与绕过实战】SVG反爬虫不同于字体反爬虫,它巧妙的利用css 与 svg的关系,将字符映射到网页中,看起来虽然正常,但是却抓取不到有效内容 。本文带你深入浅出,破了SVG反爬虫的套路,学会之后,可应用于某点评网 。

文章插图
一、初识SVG反爬:为了防止面对监狱编程,我在本地自己做了一个网页用于爬虫测试 。任务是爬取票据中的产品价格信息,按照往常一样审查元素定位目标节点,但是发现事情并不简单 。
看图:¥符号后面并没有我们想要的价格信息,而是四个d标签取而代之 。随便选中一个7,发现对应的是属性class=lhtqsc的d标签 。
看css样式:有两段描述这个标签的语句,第一段比较常规,但是其中的

文章插图
就有点奇怪,而第二段,描述的是background,它的值是两个 大小值,单位px 。

文章插图
打开svg文件查看:貌似是没什么规律的数字

文章插图
查看该页面网页源代码,发现是张这样的:

文章插图
二、什么是SVG?想要搞定SVG反爬虫就得先搞清楚SVG:SVG是一种基于xml用于描述矢量图的图形格式,由于矢量图放大或缩写都不会影响图形的质量,所以被较多的应用在web站点与App中,常见的存在形式是图标 。
编写一个SVG文件:为了方便,我们可以把要写的svg,写到html文件中,新建一个svg.html键入如下内容:

文章插图
浏览器打开如下:

文章插图
其中:

文章插图
很关键,这一行用text标签定义了一段文本,fill是文本颜色属性,为红色,并且指定了文本的坐标 。该坐标的规则是:
- 以左上角为坐标系的原点(0,0)
- X 轴的正方向向右,从 0,0 点开始向右,x 逐渐增大 。Y 轴的正方向向下,从 0,0 点开始向下,y 逐渐增大 。
- 坐标以像素为单位
- n 个字符可以有 n 个位置参数 。

文章插图
增加一行:

文章插图
这行代码指定了前九个字符的位置,且指定了文本的颜色,y的值也增大到100,浏览器打开如下:

文章插图
再次增加一行:

文章插图

文章插图
上图可以看到,在不改变文本顺序的情况下通过改变x中的值,让第一个字符I和第四个字符o交换了位置 。
三、SVG与CSS的联系:现在我们尝试把css和svg联系起来,更加深入的理解,方便我们做下一步抓取工作:在svg中,X轴正方向为从左到右,y轴的正方向是从上到下;在css中,X轴负数向右,Y轴是负数向下 。一图胜千言:

文章插图
所以,CSS与SVG刚好相反 。新建一个zhiliao.svg并键入:

文章插图
我们在style中 定义了字符的风格,大小(14px),以及颜色(#666) 。定义了每个字符所在的位置 。

文章插图
现在我们对第一个字符h进行定位,
X轴计算法则:字符大小 / 2 + 字符的x轴起点位置参数
Y轴计算法则:(y 轴高度 - 字符 y 轴起点 - 字符大小)/ 2 + 字符 y 轴起点位置参数 + 字符大小数值的一半
也就是:
X = 14/2 + 0 = 7
Y = (30 - 0 - 14) / 2 + 0 + 14 / 2 = 15
svg中对应的定位就是 x = 7,y = 15
css与svg相反,所以是 -7,-15现在
新建一个zhiliao.css文件,键入如下内容:

推荐阅读
- CPU该选Intel还是AMD?5分钟给你讲明白
- 如何正确区分过敏性鼻炎和感冒?一图看懂
- 一文看懂开源许可证,能不能商用再也不抓瞎
- 还是只知道带T?汽车尾部的英文标识,你都看懂了吗?
- 生科医学|核酸检测时不建议把口罩往上推 中疾控发布居家隔离人员防控要求:一图看懂
- 9张图教你看懂“体检报告”!
- 零基础也能看懂!数据仓库与数据库的这几个问题,你能回答出来吗
- 舞蹈生私藏改善形体的秘诀曝光,5分钟就能学会
- 如何看懂护肤品的成分?
- iQOO|骁龙8跑分轻松破百万!一图看懂iQOO Neo6:2799元起
