爬虫和反爬虫机制

反爬虫机制:

一。基于数据加密的反爬
1.通过Css来反爬虫
原理:源代码数据不为真的数据,需要通过css位移
2.通过js动态生成数据进行反爬
思路:解析关键js,获取数据生成流程,模拟生成数据
3.数据图片化

二。基于爬虫行为进行反爬虫
1.请求ip/账号单位时间内总请求数量判断
原理:正常浏览区请求网站,速度不会太快,同一个ip账号大量请求了对方服务器,有更大的可能性会被识别为爬虫

思路:对应的通过购买高质量的ip的方式解决问题
2.每天请求次数设置阈值
原理:正常的浏览器行为,一天的请求次数有限的
思路:买高质量ip ,同时设置请求间随机休眠

3.同一ip/账号请求之间的间隔判断
原理:正常请求间隔是随机的。而爬虫两个请求之间间隔相对固定同时时间较短
思路:请求之间随机等待,尽量使用代理池

4.运维平台综合审计
运维平台综合管理,采用复合型反爬虫策略,多种手段同时使用

5.阻塞网络IO
原理: 发送请求获取响应的过程实际上就是下载的过程,在任务队列中混入一个大文件的url,当爬虫在进行该请求时会占用网络io

  1. 阻塞任务队列
    原理:通过生成大量垃圾url,从而阻塞任务队列,降低爬虫实际工作效率。
    思路:观察运行过程中请求响应状态/仔细分析源码获取垃圾url生成规则,对url过滤

7.通过假数据反爬
原理:向返回的响应中添加假数据污染数据库
思路:长期运行,核对数据库中数据同实际页面中数据对应情况

8.通过蜜罐获取爬虫ip(代理ip)
在爬虫获取链接进行请求过程中,爬虫根据正则xpath css 等方式进行后续链接提取,此时服务器端可以设置一个陷阱url,会被提取规则获取,但是正常用户无法获取就能区分爬虫和正常用户。

9.通过js 实现跳转来反爬虫
原理:js实现页面跳转,无法在源代码中获取下一页url

三。基于身份识别
1.通过headers 中的user-agent 字段反爬虫
原理:爬虫默认情况下没有user-agent,而是使用默认设置
思路: 请求前添加user-agent ,最好使用user-agent池活随机生成

2.通过cookie
原理:检查cookie来查看发起请求的用户是否具备相应权限
思路:进行模拟登陆,成功获取cookie后进行数据爬取

3.referer 字段
原理:爬虫通常不会待referer字段

4.通过验证码
原理:弹出验证码强制验证用户浏览行为
思路:机器学习识别 打码平台

5.通过js 生成请求参数
思路:分析js,观察加密过程的实现,使用selenium

6。通过从html静态文件中获取请求数据
原理:通过增加获取请求参数的难度进行反爬

你可能感兴趣的:(安全,python,爬虫,爬虫和反爬虫)