一、常见的反爬手段和解决思路

1、服务器反爬的原因

a、爬虫占总PV(PV是指页面的访问次数,每打开或刷新一次页面,就算做一个PV)比例较高,这样浪费钱(尤其是三月份爬虫【爬虫高峰期】)。

b、公司可免费查询的资源被批量抓走,丧失竞争力。

c、状告爬虫成功的机率小(法律的灰色地带)。

2、服务器常反什么样的爬虫

a、十分低级的应届毕业生

b、十分低级的创业小公司

c、不小心写错了没人去停止的失控小爬虫

d、成型的商业对手

e、抽风的搜索引擎

3、反爬虫领域常见的一些概念

a、爬虫:使用任何技术手段,批量获取网站信息的一种方式,关键在于批量。

b、反爬虫:使用任何技术手段,阻止别人批量获取自己网站信息的一种方式,关键也在于批量。

c、误伤:在反爬虫过程中,错误的将普通用户识别为爬虫。

d、拦截:成功地阻止爬虫访问。【拦截率】

e、资源:机器成本与人力成本的总和。

4、反爬的三个方向

a、基于身份识别进行反爬

b、基于爬虫行为进行反爬

c、基于数据加密进行反爬

5、常见基于身份识别进行身份识别

5.1 通过headers字段来反爬

5.1.1 通过headers中的User-Agent字段来反爬

反爬原理:爬虫默认情况下没有User-Agent,而是使用模块默认设置。

解决方法:添加User-Agent。

5.1.2 通过referer字段或者是其他字段来反爬

反爬原理:爬虫默认情况下不会带上referer字段,服务器通过判断请求发送的源头,以此判断请求是否合法。

解决方法:添加referer字段。

5.1.3 通过cookie来反爬

反爬原理:通过检查cookies来查看发起请求的用户是否具备相应权限,以此来进行反爬。

解决方案:进行模拟登录,成功获取cookies之后在进行数据提取。

5.2 通过请求参数来反爬

5.2.1 通过从html静态文件中获取请求数据(github登陆数据)

反爬原因:通过增加获取请求参数的难度进行反爬。

解决方案:分析抓包,请求之间的联系。

5.2.2 通过发送请求获取请求数据

反爬原因:通过增加获取请求参数的难度进行反爬。

解决方案:分析抓包,请求之间的联系,请求参数之间的联系

5.2.3 通过js生成请求参数

反爬原理:js生成了请求参数。

解决方案:分析js,观察加密实现过程,通过js2py获取js的执行结果,或者使用selenium来实现。

5.2.3 通过验证码来反爬

反爬原理:弹出验证码。

解决方案:打码平台或机器学习的方法识别验证码

6、常见基于爬虫行为进行反爬

6.1 基于请求频率或总请求数量

6.1.1 通过请求ip/账号单位时间内总请求数量进行反爬

反爬原理:同一个ip/账号大量请求对方服务器。

解决方法:购买高质量ip/账号。

6.1.2 通过同一ip/账号之间的间隔进行反爬

反爬原理:时间固定,间隔较短。

解决方法:进行随机等待,模拟真实用户操作,尽量使用代理池,设置随即休眠(账号)。

6.1.3 通过对请求ip/账户每天请求次数设置阈值进行反爬

反爬原理:超过某一个值,服务器拒绝响应。

解决方案:购买ip/账号,随机休眠。

6.2 根据爬取行为进行反爬,通常在爬取步骤上做分析

6.2.1 通过js实现跳转来反爬

反爬原理:无法获取下一页url(携程)

解决方案:多次抓包获取条状url,分析规律。

6.2.2 通过陷阱获取爬虫ip,进行反爬

反爬原理:陷阱:正常页面不显示,爬虫爬取陷阱url。

解决方案:完成爬虫编写后,使用代理批量爬取测试、分析响应内容,找出陷阱。

6.2.3 通过假数据反爬

反爬原理:返回响应中添加假数据污染数据库,通常假数据不会被正常用户看到。

解决方案:数据核实,分析相应内容。

6.2.4 阻塞任务队列

反爬原理:生成大量垃圾url,阻塞任务队列。

解决方案:对url进行过滤。

6.2.5 阻塞网络IO

反爬原理:在下载的任务队列潜入大文件url。

解决方案:观察爬虫运行状态,多线程对线程计时。

6.2.6 运维平台综合审计

反爬原理:复合型反爬虫策略,多手段同时使用。

解决方案:检查数据采集速度,多方面处理。

7、常见基于数据加密进行反爬

对响应中含有的数据进行特殊化处理

7.1 通过自定义字体来反爬

评分的字体为自有字体

反爬原理:使用自有字体文件。

解决方案:切换到手机版/解析字体文件进行翻译。

7.2 通过css反爬

反爬原理:源码数据不为真正的数据,通过css位移得到真正的数据。

解决方案:计算css偏移。

7.3 通过js动态生成数据进行反爬

反爬原理:通过js动态生成。

解决方案:解析关键js,获得数据生成流程,模拟生成数据。

7.4 通过数据图片化反爬

反爬原理:信息为图片。

解决方案:使用图片解析引擎从图片中解析数据 。

7.5 通过编码格式进行反爬

反爬原理:不使用默认编码格式。

解决思路:进行多格式解码,或真正的解码格式。

二、验证码处理

1、图片验证码

1.1 什么是图片验证码

验证码:区分用户是计算机还是人的公共全自动程序。

1.2 验证码的作用

防止恶意破解密码,刷票,论坛灌水,刷页,提供网络安全。

1.3 图片验证码在爬虫中的使用场景

注册

登录

频繁发送请求时,服务器弹出验证码进行验证

1.4 图片验证码的处理方案

手动输入

图像识别引擎解析

打码平台

2、图片识别引擎

2.1 什么是tesseract

一款由HP实验室开发由Google维护的开源OCR引擎,特点是开源、免费、支持多语言,多平台。

2.2 图片识别引擎环境的安装

python库的安装:pip/pip3 install pillow

从图片解析数据:pip/pip3 install pytesseract

2.3 图片识别引擎的使用

通过pytesseract模块的image_to_string方法就能将打开的图片文件中的数据提取或字符串数据,具体方法如下:

from PIL import Image
import pytesseractim = Image.open()result =  pytesseract.Image_to_string(im)print(result) 

3、打码平台

3.1 为什么需要了解打码平台的使用

现在很多网站都会使用验证码进行反爬,为了能更好的获取数据,需要了解如何使用打码平台爬虫中的验证码。

3.2 常见的打码平台

云打码:能够解决通用的验证码识别(现在不能使用?)

4、常见的验证码种类

4.1 url地址不变,验证码不变

4.2 url地址不变,验证码变化(requests .session)

7 爬虫学习之反爬与反反爬相关推荐

  1. 爬虫学习日记1-豆瓣top250电影信息爬取

    @ 爬虫学习日记1-豆瓣top250电影信息爬去 学习任务:结合requests.re两者的内容爬取https://movie.douban.com/top250里的内容, 要求抓取名次.影片名称.年 ...

  2. 爬虫学习笔记(三)——利用JSON爬取豆瓣热映的使用

    系列文章目录 爬虫学习笔记(一):requests基础用法之爬取各类主流网站1 爬虫学习笔记(二):requests基础用法之爬取各类主流网站2 文章目录 系列文章目录 前言 一.JSON是什么? 二 ...

  3. Python 爬虫学习笔记(十(2))scrapy爬取图书电商实战详解

    目标是爬取某一系列图书的信息,例如名称.价格.图片等. 一.创建scrapy项目 在PyCharm终端依次输入: scrapy startproject dangdang cd dangdang\da ...

  4. 爬虫学习笔记(二)——使用 requests 爬取百度图片

    一.抓取首页图片 静态页面 流程: 1.1.找到目标数据 这里用狗的图片来举例,接下来我们就要分析然后爬取这个页面所有狗的图片的规律 1.2.分析请求流程 先访问page页获取网页的源代码 # 网页的 ...

  5. python爬虫学习笔记(三)——淘宝商品比价实战(爬取成功)

    2020年最新淘宝商品比价定向爬取 功能描述 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格. 理解:淘宝的搜索接口 翻页的处理 技术路线:requests­          re 程序的结 ...

  6. 【Python爬虫学习】七、淘宝商品价格爬取(成功爬取)

    写在前面:修改request的headers属性,可以跳过登录界面,爬取成功 功能描述: 目标:获取淘宝搜索页面信息,提取其中商品的名称和价格 技术路线:Requests-Re 接口描述: 搜索接口: ...

  7. 爬虫学习笔记(五)——VMGIRLS唯美小姐姐的图片不让爬了,怎么办?

    系列文章目录 <font color=#999AAA 爬虫学习笔记(四)--糗百爬虫遇到的反爬 爬虫学习笔记(三)--利用JSON爬取豆瓣热映的使用 爬虫学习笔记(二):requests基础用法 ...

  8. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. Python爬虫学习第九天---反爬与反反爬

    反爬与反反爬 一.常见反爬手段和解决思路 1.服务器反爬原因 1.爬虫占总PV比例较高,这样浪费钱. 2.三月份爬虫:每年的三月份我们会迎接一次爬虫高峰期,有大量的硕士在写论文的时候会选择爬取一些往网 ...

最新文章

  1. TCP编程函数和步骤
  2. zoj——3556 How Many Sets I
  3. 用eclipse来运行带参数的命令行程序,配置命令行程序的参数
  4. C# Email邮件发送,功能是密码找回或者重置功能。
  5. 程序员,感觉技术停滞了怎么办?
  6. 有哪些好的 LaTeX 编辑器?
  7. 0bjective-c 之 NSString 使用详解
  8. Mabtyis无侵入式编程
  9. linux s t i a权限,关于Linux下s、t、i、a权限
  10. libevent源码深度剖析九
  11. LeetCode 228. Summary Ranges
  12. 好看的文章排版样式(转)
  13. 算法:Valid Sudoku(有效的数独)
  14. windows 微信多开脚本
  15. Simulink代码生成:Simulink Function子系统及其代码
  16. <hr> 标签:定义水平线
  17. python清洗数据教程_数据分析入门系列教程-数据清洗
  18. 服务器修改host的ip,主机IP地址设置
  19. 跳跳棋[LCA+二分查找]-洛谷1852
  20. 【Mac/iOS】解决CoreBluetooth中Characteristic的Properties显示问题

热门文章

  1. 阿里云盘 Mac 客户端测试版 v2.1.8
  2. lgv30屏幕参数_性能升级 LG V30 真旗舰 835+曲面屏
  3. 计算机系统时间无法更改,电脑无法修改系统时间如何解决
  4. 计算机毕业设计Java百分百教育集团教务管理系统设计(源码+系统+mysql数据库+lw文档)
  5. Python大佬总结出了超级详细的Python爬虫学习清单,新手免费领取
  6. 跟一夫学UI设计 APPUI综合设计与图标实战案例视频教程 photoshop绘制icon案例-王诚-专题视频课程...
  7. Chrome浏览器网页静音快捷键
  8. ATM柜员机人机界面
  9. ExtJs:xtype的含义
  10. 如何在MAYA中使用Qt编写的视频播放器