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

Selenium模拟人类行为,操作网页的方法(全)

看到有朋友评论问,用selenium怎么模仿人类行为,去操作网页的页面呢?

我想了想,这确实是一个很大的点,不应该是一段代码能解决的,

就像是,如果让程序模拟人类的行为。例如模拟人类买菜,做饭,吃饭,聊天,蹲坑等

这个过程中最重要的不是结果,不是程序能不能完成这些事,而是做这些事的时候,能不能尽可能地像个人在做的,然后尽力躲过网络警察的审查。

selenium的优势是在于它的休眠机制、可以模拟真实的浏览器指纹,模拟鼠标移动的行为轨迹、处理复杂交互等,可以降低被检测和封锁的风险。

具体的模拟应该要分不同的情况来,以下是一些整理:

1. 配置selenium的浏览器界面

在运行下面的方法前,先把selenium 配置好,尽量多一些selenium的配置,用来绕过监测,下面的简单的写法,严谨一点的话,可以如2、3、4的写法,加上用户代理和禁用自动化特征、防检测的header头写法等:

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_argument("--window-size=1920,1080")  # 设置浏览器窗口大小
options.add_argument("--disable-blink-features=AutomationControlled")  # 禁用自动化控制特征
options.add_argument("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")  # 设置用户代理
driver = webdriver.Chrome(options=options)#加上头的写法

2. 使用代理IP

我们在访问其他网站的时候,使用自己的服务器地址,向对方的网站打个招呼,这个时候会暴露自己的IP地址,就像打电话给别人一样,我们的电话号码也会暴露给了对方。如果频繁地向对方一直打招呼,就容易被对方视作垃圾号码一样拉黑

这就跟被人标记成垃圾号码一样被对方封了,这个是封IP;现在很多人会用虚拟号码去频繁地打电话给别人,哪怕别人拉黑了这个号码,也拉黑不了下一个。因为每次打出去的号码都是新的虚拟的号

做代理IP就像是给自己的电脑IP,包装多个虚拟号码一样的外壳, 这样可以保障自己在频繁地访问一个网站的时候,不会轻易被拉黑了。

from selenium import webdriverPROXY = "123.456.789.012:8080"  # 示例代理options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-server={PROXY}')
driver = webdriver.Chrome(options=options)

这个代理ip有付费的网站,也有免费的网站,如果有需要,后期我会再整理各类的网站出来


3. 禁用自动化特征

在这里插入图片描述
有时候爬取的时候,会显示这样一行字,下面的方法是可以取消这行字的显示,将浏览器包装成非自动化测试的外壳。

options = Options()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options)

4. selenium上构造安全头header

请求头把自己的浏览器信息发送给对方服务器,有点像是给对方服务器递了个名片过去。

单一的header头,也会受到对方服务器的检测,有时候我们也可以有选择地构建安全头内容。

4.1 方法1:通过 add_argument 设置基础 Headers(简单但有限)

适用于修改 User-Agent 等基础头信息:

from selenium import webdriveroptions = webdriver.ChromeOptions()
options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36")
options.add_argument("--accept-language=en-US,en;q=0.9")driver = webdriver.Chrome(options=options)

局限性:仅支持部分预定义头(如 User-Agent、Accept-Language),无法添加自定义头(如 Authorization)。

4.2 方法2:使用 DevTools Protocol(推荐,完整控制)

动态的header构建,通过 Chrome DevTools 的 Network.setExtraHTTPHeaders 方法,注入任意 Headers:

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()# 定义自定义 Headers
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)","Accept": "text/html,application/xhtml+xml","Authorization": "Bearer token123",  # 示例自定义头"X-Custom-Header": "MyValue"
}# 通过 DevTools 注入 Headers
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": headers})driver.get("https://example.com")

优点:支持所有自定义 Headers,适用于需要 Cookie、Referer 等复杂场景。

4.3 进阶的header头:使用undetected-chromedriver来构建

反爬会对部分网站会检测 Sec- 开头的安全头(如 Sec-Ch-Ua),需用 undetected-chromedriver 规避。


5.模拟鼠标移动与点击

我们在点击网页后,如果有一些交互的按钮,例如要移动到某个位置再点击之类的,我们可能会用find_element 定位元素再进行点击,

但是如果在防检测比较严格的情况下,例如对方浏览器对鼠标进行监控计算,会监测用户是鼠标是不是在移动,如果是上面的方法,这种就没法做到,这时候可以用到ActionChains来处理:

from selenium.webdriver.common.action_chains import ActionChains
import random
import timeelement = driver.find_element_by_id("some-id")# 模拟人类移动鼠标
actions = ActionChains(driver)
actions.move_to_element(element).perform()# 添加随机延迟
time.sleep(random.uniform(0.5, 2.5))# 模拟人类点击(先移动再点击)
actions.click(element).perform()

但是这种方法会一直占用鼠标的使用的,导致我们爬虫之余没法做其他的事情,处于下策,能不用就尽量不用。


6.模拟鼠标滚动的行为

我们在浏览页面的时候,会有滚动鼠标,看下滑的页面,下滑不是一直滑,而是会停一会,再下拉页面一会

即模拟人的人眼在看到页面后的反应,脑子会对眼球的视觉信息做处理,停留思考一会,这时候会有一个间隔的空隙,

这个空隙可以用随机休眠的方法处理:

import random# 随机滚动页面
scroll_pause_time = random.uniform(0.5, 1.5)
scroll_height = random.randint(200, 800)for i in range(random.randint(1, 5)):driver.execute_script(f"window.scrollBy(0, {scroll_height});") #用js模拟滚动鼠标的操作time.sleep(scroll_pause_time) #间隔休眠的时间

7.模拟浏览页面时,停留一些时间

人在浏览网页的时候,不会一直都无停留地一直切换不同的浏览器的网页,我们在不同的网页间切换,要随机增加一些睡眠,原理同上

import random# 不同页面间的随机等待
wait_times = [1, 1.5, 2, 2.5, 3, 4, 5]driver.get(url_1)
time.sleep(random.choice(wait_times))
driver.get(url_2)
time.sleep(random.choice(wait_times))

8. 模拟在输入框里输入文字的行为

在模拟人在手敲键盘的时候,模拟一个字一个字得打出来,

这个一字一顿,得用到字与字输出的休眠

这种方法的实现是for循环里打出一堆字的时候,在每个字之间增加随机的休眠,如:

from selenium.webdriver.common.keys import Keystext_field = driver.find_element_by_id("search-box")# 模拟人类打字速度
text_to_type = "example search query"
for char in text_to_type:text_field.send_keys(char)time.sleep(random.uniform(0.1, 0.3))  # 随机输入间隔# 随机等待后按回车
time.sleep(random.uniform(0.5, 1.5))
text_field.send_keys(Keys.RETURN)

9. 模拟人类错误与纠正

我们在打字的时候,有时候会写错字,需要删除内容,然后再重新输入

这个模拟写错又纠错的过程,如下:

# 模拟输入错误并纠正
search_box = driver.find_element_by_name("q")# 故意输入错误
search_box.send_keys("mistake")
time.sleep(random.uniform(0.5, 1.5))# 模拟退格删除
for _ in range(3):search_box.send_keys(Keys.BACK_SPACE)time.sleep(random.uniform(0.1, 0.3))# 输入正确内容
search_box.send_keys("correct term")

10. 标签页与窗口行为模拟

如果爬取时间比较长的话,我们一直在一个标签页的窗口上一直操作,也不太合理,要时不时打开新的标签页,进行处理

下面的方法是用概率来限制打开标签页的次数:

# 随机打开新标签页
if random.random() > 0.7:  # 30%概率打开新标签driver.execute_script("window.open('https://example.com');")time.sleep(random.uniform(1, 3))# 切换回原标签页driver.switch_to.window(driver.window_handles[0])time.sleep(random.uniform(0.5, 1.5))

11. 操作顺序随机化

一些可以点击的元素,不要按顺序一个个顺着去点,要调换顺序,随机去点,例如:在这里插入图片描述
写法:

actions = [lambda: driver.execute_script("window.scrollBy(0, 200);"),lambda: driver.find_element_by_link_text("About").click(),lambda: driver.back(),lambda: time.sleep(random.uniform(1, 2))
]random.shuffle(actions)
for action in actions[:random.randint(1, 3)]:action()time.sleep(random.uniform(0.5, 1.5))

12. 下载文件时,模拟网络条件限定速度

下载一些文件的时候,模拟网络的状态,设置下载的速度,不要太快,或者太频繁下载:

from selenium.webdriver.common.desired_capabilities import DesiredCapabilitiescaps = DesiredCapabilities.CHROME
caps['goog:loggingPrefs'] = {'performance': 'ALL'}
caps['networkConditions'] = {'offline': False,'latency': 100,  # 额外延迟(ms)'download_throughput': 500 * 1024,  # 最大下载速度'upload_throughput': 500 * 1024  # 最大上传速度
}
driver = webdriver.Chrome(desired_capabilities=caps)

在这里插入图片描述

相关文章:

Selenium模拟人类行为,操作网页的方法(全)

看到有朋友评论问,用selenium怎么模仿人类行为,去操作网页的页面呢? 我想了想,这确实是一个很大的点,不应该是一段代码能解决的, 就像是,如果让程序模拟人类的行为。例如模拟人类买菜,做饭&am…...

LVS负载均衡群集解析:理解LVS-NAT的工作原理

目录 一、LVS群集应用基础 1.群集技术概述 2.LVS虚拟服务器 3.NFS共享存储服务 二、案例:地址转换模式(LVS-NAT) 1.资源清单 2.修改主机名 3.配置负载调度器(LVS上) 4.配置节点服务器(web1、web2) 5.测试LVS…...

Leetcode Hot 100最长连续序列

题目描述 思路 思路1 我们对数组进行排序,通过遍历数组,如果前一个数组的值1等于当前数组的值,计数count,如果中断了,计算当前最大连续长度的值ans,并且统计值count重新置为1,最后返回count与…...

【东枫科技】代理英伟达产品:交换机系统

文章目录 总体详细:NVIDIA Spectrum SN5000详细:NVIDIA Spectrum SN2100详细:NVIDIA Spectrum SN4700详细:NVIDIA Spectrum SN2010详细:NVIDIA Spectrum SN4600详细:NVIDIA Spectrum SN3700详细&#xff1a…...

[前端]Javascript获取元素宽度

元素宽度属性对比示意图 ---------------------------------- | 外边距(margin) | -------------------------------- | | 边框(border) | | | -------------------------- | | | …...

MySQL + Qwen3-0.5B + Flask + Dify 工作流部署指南

1. 安装MySQL和PyMySQL 安装MySQL # 在Ubuntu/Debian上安装 sudo apt update sudo apt install mysql-server sudo mysql_secure_installation# 启动MySQL服务 sudo systemctl start mysql sudo systemctl enable mysql 安装PyMySQL pip install pymysql 使用 apt 安装 My…...

项目三 - 任务3:学生多态方式喂养宠物

在本次实战中,我们通过创建动物类及其子类(猫、狗、鸟),并设计学生类的喂养方法,深入学习了Java中的多态和方法重载。学生类通过重载方式为每种动物提供专门的喂养方法,而通过多态方式则仅用一个方法即可喂…...

TypeScript速成

1、类型推断 这里的str已经推断为string类型,不能像JavaScript一样直接给str赋值number类型 2、类型注解 let str:stringabc 或者 let str:string strabc 3、类型断言 因为typescript会判定这个item可能为undefined类型,但是我们人为可以确定item一…...

CompletableFuture的底层ForkJoinPool

什么是 ForkJoinPool?它和普通线程池(ThreadPoolExecutor)有什么区别? 答案要点: ForkJoinPool 是 Java 7 引入的线程池,专为 分治任务 设计,支持递归任务拆分(Fork)和…...

高等数学第五章---定积分(§5.1定积分的概念、性质和应用)

5.1 定积分的概念及性质 一、引例 在学习定积分之前,我们先通过两个具体的例子来感受其思想和方法。 例1 曲边梯形的面积 定义:曲边梯形 由连续曲线 y f ( x ) y f(x) yf(x)(假设 f ( x ) ≥ 0 f(x) \ge 0 f(x)≥0 在所讨论的区间上&…...

Java基础学完,继续深耕(0506)SQL--多表关系

多表关系 一对多(多对一) 一对一 多对多 一对多 场景:部门与员工的关系 (一个部门下有多个员工)。 实现:在数据库表中多的一方,添加字段,来关联一的一方的主键。 现在只是在语法上关联了,…...

python打卡day17

聚类的基础知识 知识点 聚类的指标聚类常见算法:kmeans聚类、dbscan聚类、层次聚类三种算法对应的流程 实际在论文中聚类的策略不一定是针对所有特征,可以针对其中几个可以解释的特征进行聚类,得到聚类后的类别,这样后续进行解释也…...

洛谷---P1629 邮递员送信

题目描述 有一个邮递员要送东西,邮局在节点 1。他总共要送 n−1 样东西,其目的地分别是节点 2 到节点 n。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有 m 条道路。这个邮递员每次只能带一样东西,并且运…...

第11次:用户注册(简要版)

1、定义模板 在templates文件夹下边新建register.html&#xff0c;代码如下&#xff1a; <html lang"en"> <head><meta charset"UTF-8"><title>注册</title> </head> <body><!--{%是模板标签&#xff0c; …...

【IP101】图像特征提取技术:从传统方法到深度学习的完整指南

&#x1f31f; 特征提取魔法指南 &#x1f3a8; 在图像处理的世界里&#xff0c;特征提取就像是寻找图像的"指纹"&#xff0c;让我们能够识别和理解图像的独特性。让我们一起来探索这些神奇的特征提取术吧&#xff01; &#x1f4da; 目录 基础概念 - 特征的"体…...

对windows的简单介绍

目录 一、Windows 操作系统概述 1. 定义与定位 2. 核心目标 二、历史与版本演变 1. 早期阶段&#xff08;1985–1995&#xff09; 2. NT 内核时代&#xff08;1996–2009&#xff09; 3. 现代操作系统&#xff08;2012–至今&#xff09; 三、系统架构与技术特性 1. 内…...

Waymo公司正在加快其位于亚利桑那州新工厂的无人驾驶出租车(robotaxi)生产进度

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

JavaSE核心知识点01基础语法01-03(流程控制:顺序、分支、循环)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点01基础语法01-03&#xff0…...

信息论01:从通信到理论的飞跃

信息论01&#xff1a;从通信到理论的飞跃 1. 信息论的诞生与发展 1.1 前信息论时代&#xff08;1920s之前&#xff09; 信息与消息的混淆&#xff1a;传统认知中将信息等同于消息本身先驱者奠基&#xff1a; 哈里奈奎斯特 (1924)&#xff1a;提出《影响电报速度的某些因素》…...

Pandas 的透视与逆透视

目录 1. 透视 1.1 pivot 1.2 pivot_table 2.逆透视 1. 透视 透视是长表变宽表。 pivot() 和 pivot_table()两个函数都可以做到&#xff0c;后者可以聚合前者不行。 特性df.pivot()df.pivot_table()重复值处理要求索引和列的组合唯一&#xff0c;否则报错 ValueError允许…...

AI大模型驱动的智能座舱研发体系重构

随着AI大模型&#xff08;如LLM、多模态模型&#xff09;的快速发展&#xff0c;传统智能座舱研发流程面临巨大挑战。传统座舱研发以需求驱动、功能固定、架构封闭为特点&#xff0c;而AI大模型的引入使得座舱系统向自主决策、动态适应、持续进化的方向发展。 因此思考并提出一…...

【东枫科技】代理英伟达产品:DPU

NVIDIA BlueField-3 DPU 400Gb/s 基础设施计算平台 NVIDIA BlueField -3 数据处理单元 (DPU) 是第三代基础设施计算平台&#xff0c;使企业能够构建从云端到核心数据中心再到边缘的软件定义、硬件加速的 IT 基础设施。借助 400Gb/s 以太网或 NDR 400Gb/s InfiniBand 网络连接…...

【KWDB 创作者计划】一文掌握KWDB的时序表管理

前言 本文是在对时序数据库有一定了解&#xff0c;并且KWDB的数据库操作了解后进行学习的文章安排&#xff0c;如果对时序数据库与KWDB的数据库操作还不怎么了解的可以查阅官网的文档进行提前学习&#xff0c;当有了这些基础后&#xff0c;本文就是对时序数据表的一个管理操作…...

《算法导论(第4版)》阅读笔记:p9-p9

《算法导论(第4版)》学习第 6 天&#xff0c;p9-p9 总结&#xff0c;总计 1 页。 一、技术总结 1. data structure A data structure is a way to store and organize data in order to facilitate access and modifications(数据结构是一种存储和组织数据的方式&#xff0c…...

Facebook隐私保护措施的优缺点解析

在这个数字化的时代&#xff0c;隐私保护已成为公众关注的热点话题。Facebook&#xff0c;作为全球最大的社交媒体平台之一&#xff0c;其隐私保护措施自然也受到了广泛的关注和讨论。本文将对Facebook的隐私保护措施进行解析&#xff0c;探讨其优点与缺点&#xff0c;并探讨如…...

深入了解linux系统—— 进程地址空间

前言 程序地址空间 在之前&#xff0c;我们学习C/C时&#xff0c;多多少少都看过这样的一张图 我们现在通过下面这一段代码看一下&#xff1a; #include <stdio.h> #include <unistd.h> #include <stdlib.h> int g_unval; int g_val 100; int main(int…...

电动加长杆金属硬密封法兰式蝶阀泄漏等级解析:水、蒸汽、油品介质的可靠选择-耀圣

电动加长杆金属硬密封法兰式蝶阀泄漏等级解析&#xff1a;水、蒸汽、油品介质的可靠选择 在工业流体控制领域&#xff0c;电动金属硬密封蝶阀凭借其卓越的密封性能和耐高温高压特性&#xff0c;成为水、蒸汽、油品等介质的核心控制设备。其泄漏等级作为衡量阀门性能的关键指标…...

win11共享打印机主机设置

1.首先打开设置&#xff0c;选择打印机和扫描仪点击打印机属性&#xff0c;将共享窗口的共享这台打印机和在客户端计算机上呈现打印作业这两项勾选上。 2.通过cmd命令 gpedit.msc 打开本地组策略编辑器。 3.网络访问选择仅来宾 4.将账户来宾状态选择启用 5.将拒绝从网络访问这台…...

Flowable7.x学习笔记(二十)查看流程办理进度图

前言 本文是基于继承Flowable的【DefaultProcessDiagramCanvas】和【DefaultProcessDiagramGenerator】实现的自定义流程图生成器&#xff0c;通过自定义流程图生成器可以灵活的指定已经执行过的节点和当前正在活跃的节点样式&#xff0c;比如说已经执行完成的节点我们标绿&…...

【计算机网络 第8版】谢希仁编著 第四章网络层 地址类题型总结

小结 个人觉得地址类在网络层算好做的题&#xff0c;这部分知识本身并不多&#xff0c;理解到位了就是2进制和10进制的换算题了。而且这种题给你一小时例题和标答&#xff0c;肯定自己都能悟出来。但是计网网络层的整体我感觉很散&#xff0c;老师讲的也乱七八糟的&#xff0c…...

一种基于条件生成对抗网络(cGAN)的CT重建算法

简介 简介:该文提出了一种基于条件生成对抗网络(cGAN)的CT重建算法,通过引入CBAM注意力机制增强网络对关键特征的提取能力,有效解决了CT成像中因噪声干扰导致的重建精度下降问题。实验采用固体火箭发动机模拟件数据集,将正弦图分为五组并添加不同程度的噪声进行训练。结…...

欧拉系统(openEuler)上部署OpenStack的完整指南 ——基于Yoga版本的全流程实践

&#xff08;资源区里有上传的配置好的openstack镜像&#xff09; 一、环境规划与前置准备 1. 硬件与节点规划升级 存储节点&#xff08;可选&#xff09;&#xff1a;若需Cinder后端&#xff0c;建议配置SSDHDD混合存储网络拓扑强化&#xff1a; 管理网络&#xff1a;启用V…...

oceanbase不兼容SqlSugarCore的问题

问题发现 C#程序使用SqlSugarCore5.1.4.166进行数据库操作&#xff0c;而且项目需要在多台服务器上面部署&#xff0c;结果发现A服务器部署运行没有问题&#xff0c; B服务器部署却报错&#xff1a;SqlSugar.SqlSugarException:Connect timeout expired. 但是我们的C#代码是一…...

深入理解分布式锁——以Redis为例

一、分布式锁简介 1、什么是分布式锁 分布式锁是一种在分布式系统环境下&#xff0c;通过多个节点对共享资源进行访问控制的一种同步机制。它的主要目的是防止多个节点同时操作同一份数据&#xff0c;从而避免数据的不一致性。 线程锁&#xff1a; 也被称为互斥锁&#xff08…...

OrangePi Zero 3学习笔记(Android篇)1 - 搭建环境

目录 1. 下载安装Ubuntu22.04 1.1 安装增强功能 1.2 设置共享文件夹 1.3 创建AOSP.vdi 1.4 更新相关软件包 2. 解压AOSP源代码 3. 编译代码 3.1 编译uboot/Linux 3.2 编译AOSP源代码 3.3 内存问题调试记录 3.3.1 查看具体什么问题 3.3.2 关闭dex2oat&#xff08;无…...

RabbitMq(尚硅谷)

RabbitMq 1.RabbitMq异步调用 2.work模型 3.Fanout交换机&#xff08;广播模式&#xff09; 4.Diret交换机&#xff08;直连&#xff09; 5.Topic交换机&#xff08;主题交换机&#xff0c;通过路由匹配&#xff09; 6.Headers交换机&#xff08;头交换机&#xff09; 6…...

OpenAI的“四面楚歌”:从营利到非营利,一场关于AGI控制权的革命

引言 当“奥特曼妥协”与“四面楚歌”并置时&#xff0c;OpenAI的这次重大调整&#xff0c;仿佛在科技史上投下一颗震撼弹。这家曾因“拒绝盈利”而备受争议的人工智能公司&#xff0c;如今却在资本与理想之间艰难抉择——放弃营利性转型&#xff0c;回归非营利初心。这不仅是对…...

[250505] Arch Linux 正式登陆 Linux 的 Windows 子系统

目录 Arch Linux 正式登陆 Windows Subsystem for Linux (WSL) Arch Linux 正式登陆 Windows Subsystem for Linux (WSL) Arch Linux 社区与 Microsoft 合作&#xff0c;正式宣布 Arch Linux 现已提供官方的 Windows Subsystem for Linux (WSL) 镜像。这意味着 Windows 用户现…...

MySQL 日期格式化:DATE_FORMAT 函数用法

MySQL 日期格式化&#xff1a;DATE_FORMAT 函数用法 在 MySQL 中&#xff0c;DATE_FORMAT() 函数用于将日期或时间值格式化为指定的字符串格式。 正确语法 DATE_FORMAT(date, format)常用格式说明符 说明符描述%Y四位数的年份&#xff08;例如&#xff1a;2023&#xff09;…...

java springboot解析出一个图片的多个二维码

引入 <dependencies><!-- ZXing --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.google.zxing…...

【四川省专升本计算机基础】第一章 计算机基础知识(上)

前言 对计算机专业的同学来说这门课程可能很简单&#xff0c;容易拿高分&#xff08;125分以上&#xff09;&#xff0c;但也可能很容易大意丢分。因为本门课程人称&#xff1a;背多分。大意丢分者的心态觉得计算机基础都学过&#xff0c;内容很简单&#xff0c;最后才开始背计…...

406错误,WARN 33820 --- [generator] [nio-8080-exec-4] .w.s.m.s.DefaultHa

在接口调用过程中&#xff0c;后端出现.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation]错误。检查了一个小时才发现我返回的对象没有写getter方法&#xff0c; 当Spring B…...

基于STM32、HAL库的SST26VF064B NOR FLASH存储器驱动应用程序设计

一、简介: SST26VF064B是Microchip公司生产的一款64Mbit(8MB)串行闪存器件,采用SPI接口通信,具有以下特点: 工作电压:2.7-3.6V 最高104MHz时钟频率 统一4KB扇区结构 快速擦除和编程时间 低功耗特性 支持标准SPI、Dual SPI和Quad SPI模式 二、硬件接口: STM32L4引脚SST26V…...

美信监控易:全栈式自主可控的底层架构优势

在当今数字化时代&#xff0c;企业的运维管理面临着越来越多的挑战。为了确保业务的稳定运行&#xff0c;企业需要一款高效、可靠的运维管理软件。北京美信时代的美信监控易运维管理软件&#xff0c;以其全栈式自主可控的底层架构优势&#xff0c;成为了运维团队的理想选择。 …...

Class AB OPA corner 仿真,有些corenr相位从0开始

Class AB OPA做 STB 仿真时&#xff0c;会遇到有些corner(c0_0、c0_4、c0_5)相位从0开始的情况。 首先应该去检查电路&#xff0c;电路里是否有正反馈&#xff1b;排除没有正反馈后&#xff0c;考虑是图中的红框中的线性跨导环中的Vds 太大导致了碰撞电离导致的。 查找了网上…...

【JEECG】BasicTable单元格编辑,插槽添加下拉组件样式错位

1.功能说明 BasicTable表格利用插槽&#xff0c;添加组件实现单元格编辑功能&#xff0c;选择组件下拉框错位 2.效果展示 3.解决方案 插槽内组件增加&#xff1a;:getPopupContainer"getPopupContainer" <template #salesOrderProductStatus"{ column, re…...

第十五届蓝桥杯单片机国赛-串口解析

串口通信像是蓝桥杯单片机组国赛中一个若隐若现的秘境&#xff0c;总在不经意间为勇者们敞开大门。然而&#xff0c;初次探索这片领域的冒险者&#xff0c;常常会被其神秘莫测的特性所震慑&#xff0c;黯然退场&#xff08;编不下去了&#xff0c;直接进入正题&#xff09;。 附…...

Flutter开发HarmonyOS实战-鸿蒙App商业项目

Flutter开发HarmonyOS实战内容介绍&#xff1a; Flutter开发HarmonyOS 鸿蒙App商业项目&#xff08;小米商城APP&#xff09;实战视频教程 Flutter开发鸿蒙APP是在《FlutterGetx仿小米商城》项目基础之上讲解的&#xff0c;调试Flutter HarmonyOS应用需要有HarmonyOS Next的手机…...

【回眸】香橙派Zero2 超声波模块测距控制SG90舵机转动

前言 知识准备 超声波模块时序图 gettimeofday()函数作用 gettimeofday()函数原型 tv结构体 获取当前系统时间与格林威治时间的时间差 获取香橙派数10万秒花费的时间 使用超声波模块获取到障碍物距离 SG90舵机模块 舵机模块的作用 舵机模块方波时序图 舵机模块工作原…...

RabbitMQ 添加新用户和配置权限

以下是关于使用 sudo rabbitmqctl add_user 命令创建新用户的详细示例&#xff0c;同时包含创建用户后进行权限设置、角色设置等相关操作的示例。 1. 前提条件 确保你的 RabbitMQ 服务已经正常运行&#xff0c;并且你具有执行 sudo 命令的权限。 2. 创建新用户 假设我们要创…...