5分钟看懂SVG反爬虫原理与绕过实战( 二 )


文章插图
新建一个demo.html,键入:

5分钟看懂SVG反爬虫原理与绕过实战

文章插图
html中会引入css文件,css又会引入svg文件 。通过d标签的class属性值读取css对应的svg标签,完成对svg的映射 。然后把demo.html拖到浏览器,可以看到:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
字符h完完整整的被我们成功的映射出来了 。
搞懂了这些,反爬就不是难事了,我们要做的是让程序搞定这些 。
 
四、Python抓取数据:回到刚才的目标网站,开始实战抓取 。
1.获取css样式文件与svg文件内容:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
2.获取匹配出class属性值对应css参数,与字符大小:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
测试寻找class=lhtqsc的css对应参数和字符大小,输出如下:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
打开对应css与svg文件验证:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图

5分钟看懂SVG反爬虫原理与绕过实战

文章插图
一致,成功!
3.观察svg文件:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
这里有四个text标签,对应四个文本,每个文本X轴都是从0开始,并且以14递增Y轴不相同的,分别是 38,83,120,164文本顺序也有所不同 。现在我们get这些数据:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
输出:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
到这一步,我们成功的分别取出了y的和text标签的四个值,并组成了列表 。但是,这些元素 几乎没有和 [‘38’, ‘83’, ‘120’, ‘164’] 中有相等的,
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
这对于我们寻找text标签包含的文本值并不影响,我们找到最近接近的即可 。我们仍然以 class=lhtqsc为例子,寻找它最近的y值,从而找出是哪个text标签包含的值 。完善我们的代码:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
输出:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
然后就可以利用切片的特性寻找到对应的数值啦!
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
输出 7,有图为证:
5分钟看懂SVG反爬虫原理与绕过实战

文章插图
验证:我们打开网站,看看对应的是不是数字7

5分钟看懂SVG反爬虫原理与绕过实战

文章插图

到这里,就算成功了,是不是很简单呢?跟我一起做一遍吧 。




推荐阅读