IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 7 爬虫学习之反爬与反反爬 -> 正文阅读

[Python知识库]7 爬虫学习之反爬与反反爬

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

????????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 pytesseract

im = Image.open()

result =  pytesseract.Image_to_string(im)

print(result) 

????????3、打码平台

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

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

? ? ? ? 3.2 常见的打码平台

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

? ? ? ? 4、常见的验证码种类

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

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

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 12:58:42  更:2021-10-29 13:00:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:03:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码