信息校验行反爬虫
User-Agent 反爬虫(初级)
-
服务器通过校验请求头中的User-Agent值来区分正常用户和爬虫程序的手段
-
服务器可以使用黑名单结合条件判断实现针对性较强的反爬虫,常见于User-Agent、Host、Referer.
Cookie反爬虫(广泛应用)
-
服务器端通过校验请求头中的Cookie值来区分正常用户和爬虫程序的手段
-
Cookie不仅可以用于Web服务器的用户信息存储或状态保持,还可以用于反爬虫。
Cookie 与JavaScript结合(常见)
-
通过JavaScript生成可变的Cookie,服务器储存生成规则,验证Cookie,
-
用
arr.join("")来生成Cookie值,通常加入时间戳,当服务器验证时间戳差值大于设置值时,认定Cookie是伪造的。
用户过滤
-
区分用户是否登录,是否为VIP,用户等级是否达到规定等级。
-
从网站运营的角度来看,有利于用户增长。
-
服务器根据Cookie值或者用户数据来判断用户身份,从而决定正常跳转还是重定向。
签名验证反爬虫
-
签名是根据数据源进行计算或加密的过程,签名的结果是一个具有唯一性和一致性的字符串。
-
是防止恶意连接和数据被篡改的有效方式之一,也是目前后端API最常用的防护方式之一。
-
原理:由客户端生成一些随机值和不可逆的MD5加密字符串,并在发起请求时将这些值发送给服务器,服务器使用相同的方式对随机值进行计算以及MD5加密,如果服务器端得到的MD5值与前端提交的MD5值相同则200否则就403.
WebSocket 握手验证反爬虫(暂未理解)
-
WebSocket 握手使用Http协议,上面的反爬虫方法均适用于WebSocket协议。
-
用于服务端主动给客户端推送消息的效果【p.s:伪实现使用轮询或长轮询,每隔一段去服务器请求数据;真实现:WebSocket】
-
AioWebSocket库
pip install aiowebsocket-
首先,aiowebsocket 根据 WebSocket 地址,向指定的服务端发送握手请求,并校验握手结果。
-
然后,在确认握手成功后,将数据发送给服务端。
-
整个过程中为了保持连接不断开,aiowebsocket 会自动与服务端响应 ping pong。
-
最后,aiowebsocket 读取服务端推送的消息。
-
动态渲染反爬虫(天然的反爬虫手段)
由JavaScript 改变HTML DOM导致页面内容变化的现象称为动态渲染。