当前位置: 首页 > news >正文

第七课:Python反爬攻防战:Headers/IP代理与验证码

在爬虫开发过程中,反爬虫机制成为了我们必须面对的挑战。本文将深入探讨Python爬虫中常见的反爬机制,并详细解析如何通过随机User-Agent生成、代理IP池搭建以及验证码识别来应对这些反爬策略。文章将包含完整的示例代码,帮助读者更好地理解和应用这些技术。

一、常见反爬机制解析

1.1 基于Headers的反爬

许多网站通过检查请求头(Headers)中的User-Agent字段来判断请求是否来自爬虫。如果User-Agent字段不符合预期,网站可能会拒绝服务或返回错误页面。

1.2 基于IP的反爬

为了限制爬虫对网站的访问频率,网站通常会记录访问者的IP地址。当某个IP地址在短时间内发送大量请求时,网站可能会暂时或永久封禁该IP地址。

1.3 基于验证码的反爬

验证码是网站用来区分人类用户和自动化脚本的一种有效手段。当检测到异常访问模式时,网站可能会要求访问者输入验证码以验证其身份。

二、随机User-Agent生成

为了绕过基于Headers的反爬机制,我们可以使用随机User-Agent来模拟不同浏览器的访问请求。Python中的fake_useragent库可以帮助我们轻松实现这一点。

安装命令

pip install fake-useragent

示例代码

import requests
from fake_useragent import UserAgent# 生成一个随机的User-Agent
ua = UserAgent()
random_user_agent = ua.random# 设置请求头
headers = {'User-Agent': random_user_agent
}# 发送请求
response = requests.get('https://www.example.com', headers=headers)
print(response.text)

三、代理IP池搭建实战

为了绕过基于IP的反爬机制,我们可以使用代理IP来隐藏真实的IP地址。搭建一个代理IP池,并随机选择代理IP进行请求,可以大大降低被封禁的风险。

示例代码

3.1 爬取代理IP

首先,我们需要从一些提供免费代理IP的网站爬取代理IP信息。

import requests
from bs4 import BeautifulSoupdef get_proxy_ips():# 替换为实际代理IP网站url = "https://www.example-proxy-website.com"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}proxy_ips = []try:response = requests.get(url, headers=headers)if response.status_code == 200:soup = BeautifulSoup(response.text, 'html.parser')# 假设代理IP信息在一个表格中,通过查找表格行(tr)来获取数据rows = soup.find_all('tr')# 跳过表头行for row in rows[1:]:cols = row.find_all('td')ip = cols[0].textport = cols[1].textproxy = f"{ip}:{port}"proxy_ips.append(proxy)return proxy_ipsexcept requests.RequestException as e:print(f"请求错误: {e}")return []proxy_ips = get_proxy_ips()
print(proxy_ips)
3.2 验证代理IP

爬取到的代理IP不一定都能正常使用,因此我们需要进行可用性验证。

def check_proxy(proxy):test_url = "https://www.baidu.com"# 可以代理的字典数据proxies = {"http": f"http://{proxy}","https": f"https://{proxy}"}try:# 测试代理地址response = requests.get(test_url, proxies=proxies, timeout=5)if response.status_code == 200:return Truereturn Falseexcept requests.RequestException:return Falsevalid_proxy_ips = []
for proxy in proxy_ips:if check_proxy(proxy):valid_proxy_ips.append(proxy)# 输出可以进行代理的正确地址
print(valid_proxy_ips)
3.3 使用代理IP进行请求

最后,我们可以使用验证通过的代理IP来发送请求。

import random# 随机选择一个可用的代理IP
proxy = random.choice(valid_proxy_ips)
proxies = {"http": f"http://{proxy}","https": f"https://{proxy}"
}# 设置请求头
headers = {'User-Agent': random_user_agent
}# 发送请求
response = requests.get('https://www.example.com', headers=headers, proxies=proxies)
print(response.text)

四、验证码识别基础方案

验证码识别是绕过基于验证码反爬机制的关键。虽然验证码识别技术相对复杂,但我们可以使用一些开源的OCR(文字识别)库来实现基本的验证码识别。

示例代码

4.1 安装必要的库

从Tesseract-OCR官网下载并安装Tesseract-OCR

首先,我们需要安装Pillow和pytesseract库。Pillow用于图像处理,pytesseract是Tesseract-OCR的Python接口。

pip install pillow pytesseract

注意:你还需要从Tesseract-OCR官网下载并安装Tesseract-OCR,并设置环境变量TESSDATA_PREFIX指向包含tessdata的目录。

4.2 验证码识别

假设我们已经下载了一张验证码图片captcha.jpg,我们可以使用以下代码进行识别。

from PIL import Image
import pytesseract# 打开验证码图片
image = Image.open('captcha.jpg')# 进行OCR识别
text = pytesseract.image_to_string(image, lang='eng')print('识别结果:', text)

识别完成以后,根据前边学习的内容,把图片中的内容填写到输入框即可

总结

本文通过详细解析常见的反爬机制,并提供了随机User-Agent生成、代理IP池搭建以及验证码识别的基础方案,帮助读者更好地理解和应对Python爬虫中的反爬挑战。希望这些技术和示例代码能对大家的爬虫开发有所帮助。

关注我!!🫵 持续为你带来Python相关内容。

相关文章:

第七课:Python反爬攻防战:Headers/IP代理与验证码

在爬虫开发过程中,反爬虫机制成为了我们必须面对的挑战。本文将深入探讨Python爬虫中常见的反爬机制,并详细解析如何通过随机User-Agent生成、代理IP池搭建以及验证码识别来应对这些反爬策略。文章将包含完整的示例代码,帮助读者更好地理解和…...

时序数据库TimescaleDB基本操作示例

好的&#xff01;以下是使用 TimescaleDB 的 Java 示例&#xff08;基于 JDBC&#xff0c;因为 TimescaleDB 是 PostgreSQL 的扩展&#xff0c;官方未提供独立的 Java SDK&#xff09;&#xff1a; 1. 添加依赖&#xff08;Maven&#xff09; <dependency><groupId&g…...

【CSS 】Class Variance Authority CSS 类名管理工具库

1.背景、什么是 CVA&#xff1f; Class Variance Authority (CVA) 是一个用于管理 CSS 类名 的工具库&#xff0c;特别适合在 React 或 Vue 等前端框架中使用。它可以帮助你更轻松地处理组件的 样式变体&#xff08;Variants&#xff09;&#xff0c;比如按钮的不同状态&#…...

【Linux】36.简单的TCP网络程序

文章目录 1. TCP socket API 详解1.1 socket():打开一个网络通讯端口1.2 bind():绑定一个固定的网络地址和端口号1.3 listen():声明sockfd处于监听状态1.4 accept():接受连接1.5 connect():连接服务器 2. 实现一个TCP网络服务器2.1 Log.hpp - "多级日志系统"2.2 Daem…...

Win 转 MacBook Pro 踩坑指南

前言 Window 和 macOS 系统的差异还是很大的&#xff0c;我从 Thinkpad 转用 M1 的 Macbook pro 已经一年了&#xff0c;几乎没有任何不适应&#xff0c;整体感受那是真的牛&#x1f443;&#xff0c;速度和续航惊艳到我了&#xff0c;同时开启 6个 vscode 加几十个浏览器标签…...

【模拟CMOS集成电路设计】带隙基准(Bandgap)设计与仿真(基于运放的电流模BGR)

【模拟CMOS集成电路设计】带隙基准&#xff08;Bandgap&#xff09;设计与仿真 前言工程文件&部分参数计算过程&#xff0c;私聊~ 一、 设计指标指标分析&#xff1a; 二、 电路分析三、 仿真3.1仿真电路图3.2仿真结果(1)运放增益(2)基准温度系数仿真(3)瞬态启动仿真(4)静态…...

手写一个Tomcat

Tomcat 是一个广泛使用的开源 Java Servlet 容器&#xff0c;用于运行 Java Web 应用程序。虽然 Tomcat 本身功能强大且复杂&#xff0c;但通过手写一个简易版的 Tomcat&#xff0c;我们可以更好地理解其核心工作原理。本文将带你一步步实现一个简易版的 Tomcat&#xff0c;并深…...

QT显示网页控件QAxWidget、QWebEngineView及区别

一.QT种显示网页控件QAxWidget 1.介绍 QAxWidget 属于 QtAxContainer 模块&#xff0c;ActiveX 是微软提出的一种组件对象模型&#xff08;COM&#xff09;技术&#xff0c;允许不同的软件组件在 Windows 操作系统上进行交互和集成。QAxWidget 为开发者提供了在 Qt 应用程序中…...

【AI智能体报告】开源AI助手的革命:OpenManus深度使用报告

一、引言&#xff1a;当开源智能体走进生活 2025年3月&#xff0c;MetaGPT团队用一场"开源闪电战"改写了AI Agent的竞争格局。面对商业产品Manus高达10万元的邀请码炒作&#xff0c;他们仅用3小时便推出开源替代品OpenManus&#xff0c;首日即登顶GitHub趋势榜。 …...

VS Code连接服务器教程

VS Code是什么 VS Code&#xff08;全称 Visual Studio Code&#xff09;是一款由微软推出的免费、开源、跨平台的代码编辑神器。VS Code 支持 所有主流操作系统&#xff0c;拥有强大的功能和灵活的扩展性。 官网&#xff1a;https://code.visualstudio.com/插件市场&#xff1…...

装饰器模式的C++实现示例

核心思想 装饰器设计模式是一种结构型设计模式&#xff0c;它允许动态地为对象添加额外的行为或职责&#xff0c;而无需修改其原始类。装饰器模式通过创建一个装饰器类来包装原始对象&#xff0c;并在保持原始对象接口一致性的前提下&#xff0c;扩展其功能。 装饰器模式的核…...

C 语言数据结构(二):顺序表和链表

目录 1. 线性表 2. 顺序表 2.1 概念及结构 2.1.1 静态顺序表&#xff08;不常用&#xff09; 2.1.2 动态顺序表&#xff08;常用&#xff09; ​编辑 2.2 练习 2.2.1 移除元素 2.2.2 删除有序数组中的重复项 2.2.3 合并两个有序数组 2.3 顺序表存在的问题 3. 链表 …...

TDengine 服务无法启动常见原因

taosd 是 TDengine 的核心服务进程&#xff0c;如果无法启动将导致整个数据库无法使用&#xff0c;了解常导致无法启动的原因&#xff0c;可以帮你快速解决问题。 1. 如何查找日志 无法启动的原因记录在日志中&#xff0c;日志文件默认在 /var/log/taos 的 taosdlog.0 或者 t…...

在 UniApp 中实现stream流式输出 AI 聊天功能,AI输出内容用Markdown格式展示

在 UniApp 中实现流式 AI 聊天功能 介绍 在现代 Web 开发中&#xff0c;流式 API 响应能够显著提升用户体验&#xff0c;尤其是在与 AI 聊天接口进行交互时。本文将介绍如何在 UniApp 中使用 Fetch API 实现一个流式响应的 AI 聊天功能&#xff0c;包括实时更新聊天内容和滚动…...

数据库SQL的配置和练习题

一、MySQL的安装 1.安装包下载 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 2.解压软件包 将MySQL软件包解压在没有中文和空格的目录下 3.设置配置文件 在解压目录下创建my.ini文件并添加内容如下&#xff1a; ​ [client] #客户端设置&…...

Pytorch的一小步,昇腾芯片的一大步

Pytorch的一小步&#xff0c;昇腾芯片的一大步 相信在AI圈的人多多少少都看到了最近的信息&#xff1a;PyTorch最新2.1版本宣布支持华为昇腾芯片&#xff01; 1、 发生了什么事儿&#xff1f; 在2023年10月4日PyTorch 2.1版本的发布博客上&#xff0c;PyTorch介绍的beta版本…...

AI+办公 Task1

作业 题目1&#xff1a;提示词除了三要素“角色”、“背景”、“要求”之外&#xff0c;还有哪些关键要素 提示词有一个框架叫CO-STAR框架&#xff0c;还有的关键要素有风格、任务、响应格式等。 要素适用场景实际案例​Context需要限定领域或场景的任务"作为医学助手&…...

文件系统调用─── linux第17课

目录 linux 中man 2和man 3的区别 文件内容介绍 C语言文件接口 示例: 输出信息到显示器&#xff0c;你有哪些方法 总结: 系统文件I/O 文件类的系统调用接口介绍 示例 open 函数具体使用哪个,和具体应用场景相关&#xff0c; write read close lseek ,类比C文件相关接…...

概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别

目录 消息生命周期 一、消息创建与发布阶段 二、消息路由与存储阶段 三、消息存活与过期阶段 四、消息投递与消费阶段 五、消息生命周期终止 关键配置建议 待消费的消息和待应答的消息 一、待消费的消息&#xff08;Unconsumed Messages&#xff09; 二、待应答的消息…...

Javaweb后端文件上传@value注解

文件本地存储磁盘 阿里云oss准备工作 阿里云oss入门程序 要重启一下idea&#xff0c;上面有cmd 阿里云oss案例集成 优化 用spring中的value注解...

DeepSeek技术演进与发展前瞻

如果喜欢可以订阅专栏哟(^U^)ノ~YO,至少更新6年 以下DeepSeek未来发展的技术分析框架及核心内容示范 # -*- coding: utf-8 -*- """ DeepSeek技术演进模拟器(概念验证代码) 本代码展示动态架构调整的核心逻辑 """class DynamicArchitect…...

Java常见面试技术点整理讲解——后端框架(整理中,未完成)

前言&#xff1a; 对于后端常用框架的技术整理&#xff0c;其实框架在平时就是会用就行&#xff0c;但面试时多半需要描述实现原理&#xff0c;这个要靠自己理解&#xff0c;不推荐死记硬背。 这篇和另外几篇文章区分开&#xff0c;主要用于规整Java后端各种框架&#xff0c;…...

目标检测YOLO实战应用案例100讲-基于毫米波雷达的多目标检测 (续)

目录 3.2 改进的CFAR目标检测算法 3.3 算法步骤描述 3.4 实验结果与分析 基于VGG16-Net的毫米波雷达目标检测算法 4.1 VGG16-Net网络模型 4.2 改进VGG16-Net网络的目标检测算法 4.3 算法步骤描述 4.4 实验结果与分析 知识拓展 基于毫米波雷达的多目标检测:使…...

python爬虫:Android自动化工具Auto.js的详细使用

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Auto.js 简介2. 安装与配置2.1 安装 Auto.js2.2 安装 Python 环境2.3 安装 ADB 工具3. Python 与 Auto.js 结合3.1 通过 ADB 执行 Auto.js 脚本3.2 通过 Python 控制 Auto.js3.3 通过 Python 与 Auto.js 交互4. 常用…...

MyBatis-Plus 注解大全

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 MyBatis-Plus 注解大全 MyBatis-Plus 是基于 MyBatis 的增强工具&#xff0c;通过注解简化了单表 CRUD 操作和复杂查询的配置。以下是常用注解的分类及详细说…...

牛客周赛 Round 84——小红的陡峭值(四)

牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 小红的陡峭值&#xff08;四&#xff09; 题目&#xff1a; 思路&#xff1a; 题目告诉我们关于树的陡峭值的定义&#xff0c;那一开始看起来无从下手&#xff0c;但是当我们选取某一个节点为根节点时&#…...

Redis 内存淘汰策略深度解析

Redis 作为高性能的内存数据库&#xff0c;其内存资源的高效管理直接关系到系统的稳定性和性能。当 Redis 的内存使用达到配置的最大值&#xff08;maxmemory&#xff09;时&#xff0c;新的写入操作将触发内存淘汰机制&#xff08;Eviction Policy&#xff09;&#xff0c;以释…...

微前端之 Garfish.js 的基础使用教程和进阶配置

前言 在现代前端开发中&#xff0c;微前端架构逐渐成为一种流行的解决方案。它允许将大型应用拆分成多个小型独立的子应用&#xff0c;从而提高开发效率和可维护性。Garfish.js 是一个强大的微前端框架&#xff0c;可以帮助我们轻松实现这一架构。在本文中&#xff0c;通过一个…...

Rabbitmq--延迟消息

13.延迟消息 延迟消息&#xff1a;生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而是在指定时间之后才会收到消息 延迟任务&#xff1a;一定时间之后才会执行的任务 1.死信交换机 当一个队列中的某条消息满足下列情况之一时&#xff0c;就会…...

Webshell原理与利用

本文内容仅用于技术研究、网络安全防御及合法授权的渗透测试&#xff0c;严禁用于任何非法入侵、破坏或未经授权的网络活动。 1. WebShell的定义与原理 定义&#xff1a;WebShell是一种基于Web脚本语言&#xff08;如PHP、ASP、JSP&#xff09;编写的恶意后门程序&#xff0c;…...

Android 内存泄漏实战:从排查到修复的完整指南

通过实战示例和工具使用&#xff0c;帮助开发者理解、排查和修复 Android 应用中的内存泄漏问题 1. 什么是内存泄漏&#xff1f; 定义&#xff1a;内存泄漏是指程序中已动态分配的内存由于某种原因未能释放&#xff0c;导致系统内存的浪费&#xff0c;最终可能导致应用崩溃或性…...

Liunx系统 : 进程间通信【IPC-Shm共享内存】

文章目录 System V共享内存创建共享内存shmget 控制共享内存shmctl shm特性 System V System V是Liunx中的重要的进程间通信机制&#xff0c;它包括&#xff08;shm&#xff09;共享内存&#xff0c;&#xff08;msg&#xff09;消息队列和&#xff08;sem&#xff09;信号量。…...

c语言笔记 数组指针

数组指针是指针类型的一种&#xff0c;一般数组指针跟二维数组&#xff0c;一维数组结合比较多&#xff0c;下面我们通过图片来探讨一下数组指针的使用以及结合起来的联系。 1.数组指针与一维数组 int a[3]; //一维数组 int aa[2][3];//二维数组 数组元素类型 int [3] int (*p…...

SpringBoot + vue 管理系统

SpringBoot vue 管理系统 文章目录 SpringBoot vue 管理系统 1、成品效果展示2、项目准备3、项目开发 3.1、部门管理 3.1.1、前端核心代码3.1.2、后端代码实现 3.2、员工管理 3.2.1、前端核心代码3.2.2、后端代码实现 3.3、班级管理 3.3.1、前端核心代码3.3.2、后端代码实现 …...

Python语法核心架构与核心知识点:从理论到实践

一、Python的核心设计哲学 Python以“简洁优雅”为核心理念&#xff0c;遵循以下原则&#xff1a; # Zen of Python&#xff08;输入 import this 可查看&#xff09; >>> import this The Zen of Python, by Tim Peters ... Simple is better than complex. Readab…...

OpenHarmony子系统开发 - 编译构建Kconfig可视化配置指导

OpenHarmony子系统开发 - 编译构建Kconfig可视化配置指导 概述 功能简介 该功能基于Kconfiglib与Kconfig实现&#xff0c;方便用户个性化配置OpenHarmony产品子系统部件。 基于Kconfig实现的可视化配置功能具有以下优点&#xff1a; 能直观且全面地展示软件的部件选项。可…...

管中窥豹数字预失真(DPD)

管中窥豹数字预失真&#xff08;DPD&#xff09; 数字预失真在通信领域发挥了巨大的作用&#xff0c;对提高功放效率、改善误码率起了不可忽略的作用&#xff0c;广泛运用与通信、雷达等各种领域。但是对于普通用户&#xff0c;它显得及其高深神秘。今天就用这个短文&#xff…...

spring-boot-starter和spring-boot-starter-web的关联

maven的作用是方便jar包的管理&#xff0c;所以每一个依赖都是对应着相应的一个或者一些jar包&#xff0c;从网上看到很多对spring-boot-starter的描述就是“这是Spring Boot的核心启动器&#xff0c;包含了自动配置、日志和YAML。”没看太明白&#xff0c;所参与的项目上也一直…...

梯度计算中常用的矩阵微积分公式

标量对向量求导的常用数学公式 设标量函数 y f ( x ) y f(\boldsymbol{x}) yf(x)&#xff0c;其中 x ( x 1 , x 2 , ⋯ , x n ) T \boldsymbol{x} (x_1, x_2, \cdots, x_n)^{\rm T} x(x1​,x2​,⋯,xn​)T是一个 n n n维列向量。标量 y y y对向量 x \boldsymbol{x} x的导数…...

vim 编写/etc/docker/daemon.json文件时,E212: 无法打开并写入文件

目录 问题描述 解决方法 1、创建/etc/docker目录 2、打开/etc/docker目录 3、创建daemon.json文件 4、vim 编辑daemon.json文件 问题描述 当我们输入代码&#xff1a;vim /etc/docker/daemon.json时&#xff0c;报E212: 无法打开并写入文件错误&#xff0c;如下图 vim /e…...

http 模块的概念及作用详细介绍

目录 1. http 模块概述 2. http 模块的作用 3. http 服务器代码示例 运行代码 4. http 客户端代码示例 运行代码 5. 总结 1. http 模块概述 http 模块是 Node.js 内置的核心模块之一&#xff0c;它用于创建 HTTP 服务器和客户端&#xff0c;支持处理 HTTP 请求和响应。…...

重生之我在学Vue--第5天 Vue 3 路由管理(Vue Router)

重生之我在学Vue–第5天 Vue 3 路由管理&#xff08;Vue Router&#xff09; 文章目录 重生之我在学Vue--第5天 Vue 3 路由管理&#xff08;Vue Router&#xff09;前言一、路由配置与导航1.1 什么是 Vue Router&#xff1f;1.2 安装 Vue Router1.3 基本路由配置步骤代码示例 1…...

常见排序算法深度评测:从原理到10万级数据实战

常见排序算法深度评测&#xff1a;从原理到10万级数据实战 摘要 本文系统解析冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序8种经典算法&#xff0c;通过C语言实现10万随机数排序并统计耗时。测试显示&#xff1a;快速排序综合性能最优&…...

搭建BOA服务器

BOA服务器是嵌入式常用的服务器类型&#xff0c;嵌入式程序作为后端时候如果想配合网页进行显示&#xff0c;利用BOA服务器搭建网络界面是不错的选择 首先下载boa官方安装包 Boa Webserver 下载后传输到Ubuntu随便文件夹&#xff0c;解压 tar -xvf boa-0.94.13.tar.gz 进入…...

JSON.parse(JSON.stringify())深拷贝不会复制函数

深拷贝 是指创建一个新对象&#xff0c;并递归地复制原对象中所有层级的属性和值&#xff0c;从而确保新对象与原对象完全独立 深拷贝的实现方法 &#xff1a; 1. 使用 JSON.parse(JSON.stringify()) 函数会被忽略复制&#xff0c;比如&#xff0c;下面的对象的forma…...

debug_unpack_ios failed: Exception: Failed to codesign 解决方案(亲测有效)

debug_unpack_ios failed: Exception: Failed to codesign 解决方案&#xff08;亲测有效&#xff09; 背景原因解决方案tipsresult 背景 执行flutter doctor全通过后run项目依然报错 原因 1、检查flutter Mac的flutter项目在哪个文件夹内 2、检查flutter Sdk在哪个文件夹内 …...

Docker篇

1.docker环境搭建&#xff1a; 1.1软件仓库的配置rhel9&#xff1a; #cd/etc/yum.repos.d #vim docker.repo [docker] namedocker-ce baseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable gpgcheck0 1.2安装docker并且启动服务 yum install -y dock…...

【Linux】基本命令

目录 &#x1f525;一、基础命令 1.sudo su&#xff08;superuser do&#xff09; 2.pwd&#xff08;print working directory&#xff09; 3.ls&#xff08;list&#xff09; 4.cd&#xff08;change directory&#xff09; 5.mkdir&#xff08;make directory&#xff…...

win10电脑鼠标速度突然变的很慢?

电脑鼠标突然变很慢&#xff0c;杀毒检测后没问题&#xff0c;鼠标设置也没变&#xff0c;最后发现可能是误触鼠标的“DPI”调节键。 DPI调节键在鼠标滚轮下方&#xff0c;再次点击即可恢复正常鼠标速度。 如果有和-的按键&#xff0c;速度变快&#xff0c;-速度变慢。 图源&…...

前端(vue)学习笔记(CLASS 3):生命周期工程化开发入门

1、生命周期 Vue生命周期&#xff1a;一个Vue实例从创建到销毁的整个过程 生命周期四个阶段&#xff1a;创建、挂载、更新、销毁 1、创建阶段&#xff1a;响应式数据 2、挂载阶段&#xff1a;渲染模板 3、更新阶段&#xff1a;数据修改、更新视图&#xff08;执行多次&…...