反爬虫与爬虫技术整理

反爬虫技术

目前各类网站出于对数据的保护,会使用各种反爬虫技术来保护自己网站的数据不被他人窃取。

1 登录时对用户名和密码进行加密

例如,对某电子税务局进行登录的过程中,当我们输入用户名、密码以及验证码点击登录后通过抓包工具可以看出发送登录的那一次post请求的用户名和密码是通过加密算法后得到的,因此我们可以自己编写复杂的算法,对用户名和密码进行加密,只要爬虫的那一方无法得知加密规则,就不能进行模拟登录了。
例如加密前用户名:Anna151898
加密后的用户名:
011613ee4904a45120f9b84663d890196438e833104305c0ae8e59d2f2cb9abcf7802d866f65996560a5da28b3958e57966b0ed31dd28f2c21cbf406ec424c624464f77a2bc046c15634412da292a66739dec38c4e4f6958587d4f1e18ac08b362698f4e5f1b6eb6a32587822a676b8465b569969cb6ee9e18d494e9637e761a

2 登录时不仅只是用户名和密码

例如在登录的过程还需要传递一个random_num,这个数字是怎么生成的你就要自己去分析网页去寻找了。

3 登录时采用复杂的验证码

现在各种数字字母组合的验证码采用ocr或者深度学习已经能够非常容易的破解了,但是类似于行为验证码例如点击验证码和滑动验证码。

在这里插入图片描述
上图为点击验证码,这种验证码一来去识别点击文字的位置比较难,二来服务器会检查你点击的动作,在爬虫请求里是无法模拟这个动作的。

4 对访问信息进行统计予以封锁

对访问信息进行统计予以封锁主要体现在以下几个方面:
如果单个IP访问超过阈值,予以封锁;
如果单个session访问超过阈值,予以封锁;
如果单个userAgent访问超过阈值,予以封锁;

5 User-Agent反爬和Referer反爬

User-Agent代表浏览器标志,如果一个请求直接从脚本发送过来,服务器判断不是通过浏览器的形式,对这种请求进行阻止,现在这种已经没什么技术含量了,因为爬虫可以携带自定义的User-Agent;
另外一种是referer反爬,比如用户通过爬虫模拟登录了一个网站,如果直接进行扣款请求操作,必须携带这个请求的上一个网页地址是什么,负责服务器会判定请求非法。

6 目前比较流行的反爬技术

通过对淘宝网的分析,得知淘宝在用户输入用户名和密码点击登录按钮时发送的登录post请求并不只是携带了用户名和密码信息,还有一条或者几条信息,例如淘宝携带了一个ua。
在这里插入图片描述
这个ua的数据是用户一输完用户名就会产生一个ua,而且这个ua应该是淘宝服务器后台生成的,而且ua在每次动作都都会变化,淘宝的反爬还是很强大的。
下面讲解一下为什么淘宝登录无法破解?
首先我们在输入用户名完成后,会向服务器发送一个post请求,服务器返回一个ua
这里有的人可能会想到采用selenium去模拟浏览器来输入这个用户名的操作不就行了,因为selenium会驱动我们电脑上真实存在的浏览器来代替我们进行输入、点击等操作。这里要介绍一下,在任何语言中使用selenium都需要安装相应的浏览器驱动,例如我们在Python里写上在淘宝登录页面用户名这个输入框输入11111时,是需要浏览器驱动来启动浏览器来完成这一动作,服务器后台其实很容易判断这一过程是真实的人在浏览器上输入还是采用selenium来输入的。

爬虫技术

介绍了反爬技术我们再来介绍一下爬虫技术

1 模拟登录的过程

在我们登录某一个网站时,登录的过程一般就一条post请求,只要携带正确的参数,包含用户名和密码以及其它参数进行发送就可以登录成功。当然,参数一定要正确。遇到用户名和密码是加密的要去分析网页代码,找到加密算法的原理,自己写一个对应的将用户名和密码进行加密。
当遇到登录过程发送的参数除了用户名和密码外,要从网页源码中进行分析,其它那些参数怎么来的。

2 验证码破解

对于数字字母验证码包括数字计算,都是先获取这张验证码图片,利用OCR技术及深度学习技术进行识别。那么对于滑动验证码和点击的验证码怎么弄就比较麻烦了,因为在爬虫里很难实现这个动作。之前接触的一个项目对于点击的验证码有一个插件,使用那个插件得到验证码成功验证时返回的信息,将这条信息带入登录请求中进行发送。这种问题再于插件得到的验证信息有时间限制,而且去操作插件进行点击验证时需要人手动去点击的。

3 伪装

爬虫是可以进行伪装成特定浏览器的,在user-agent里进行添加;遇到反Referer的,需要分析我们发送的请求在真实环境下的上一级网页目录是什么,将这个网址带进去。

4 使用ip代理

爬虫会长时间去模拟不同用户访问一个网站,在访问的过程中,由于一般都放在一个电脑上,因此IP地址不会变。服务器那边会检查不同用户的IP地址,长时间多个用户来自于同一个地址,会对这个IP地址进行封杀。针对这种去情况,使用IP代理,伪装成不同的IP地址对服务器进行访问。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章