其他分享
首页 > 其他分享> > 你可能不知道的反爬虫知识

你可能不知道的反爬虫知识

作者:互联网

在这个人均python时代,产品运营同学也能分分钟写出一个爬虫来产出数据报表,我这段时间也是想要写一个爬虫来刷一刷我发的帖子的点击率,从而开始调查起了爬虫,又调查起了反爬,又看起了反反爬……现在已经被精神招安了!今天就和大家一起讨论一下螺旋上升,永无止尽的反爬道路。

首先,我们能用爬虫做到哪些事情呢?根据调查大头一定是抢火车票(12306是全国最难爬的网站),还有像是预定场地、操纵僵尸粉、比价、刷点击率、分析用户数据达到个人目的等。

其实一般的公司可能根本没有采用反爬措施,还有一些网站可能只对数字做了字体映射,并不会更换字体文件或算法,但我们这篇文章的前提是保护有价值的数据,所以要尽可能的增加黑客们爬数据的成本,另一方面也是降低服务器的压力。

我们把爬数据分为最主要的两种途径,爬接口和爬页面(SSR)

爬接口的话一般采用网络封包截取工具来拦截请求,代码模仿请求来进行大批量的数据获取。而爬页面则会使用Selenium或者puppeteer来模仿人类行为获得网页,从中摘取特定的信息。对于爬页面目前还会有元素匹配OCR识别两种主流的内容匹配方式。元素匹配是根据HTML或者页面上的元素信息通过元素选择器,如正则、xpath等进行选择并匹配;而OCR识别则是将网页当做图片进行文本识别,并根据文本的展示特征,如颜色、尺寸、位置等进行匹配。

这两种途径会有一些共通的防范措施:

接下来是一些详例:

接口反爬

让我们先看一个反爬的例子~

拦截了一个生活网站数据的请求,可以看到header中有一个x-sign
在这里插入图片描述
如果我们手动改变了参数,会提示不接受请求,因为服务端计算的sign值和前端提交的不同。
这种方式叫做验签,如果前端使用了验签进行参数加密,那黑客需要去代码中查看混淆后的加密逻辑,如果定期更换加密方式,也可以增加黑客的心智成本。

除了接口验签以外,加密也是一个非常常用的反爬手段,下面是一个知名旅行预订网站的例子:
在这里插入图片描述
对应的接口返回如下:
在这里插入图片描述
可以看到,接口中价格数据与实际在屏幕上看到的数据并不相同,这里就是接口上对数据进行了加密,并且每次接口请求采用的加密算法都会有所调整,通过t1000字段将解码的所需的信息提供给前端展示时使用。同时,界面在展示的时候还进行了混淆,通过定位的方式将真实的价格中每个数字调整了位置和顺序。然而,标签中的title信息反而成了反爬中的漏洞,将价格直接标注了出来,这也是我们在反爬的实践中需要注意的点——任何漏洞都会成为黑客利用的目标。
在这里插入图片描述

SSR反爬

老样子,先看一个

标签:映射,反爬,知识,爬虫,接口,黑客,字体,unicode,知道
来源: https://blog.csdn.net/s_saviour/article/details/122677032