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

Python爬虫(30)Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景

目录

    • 一、背景:动态页面与反爬技术的崛起
    • 二、技术融合架构设计
      • 1. 核心组件分工
      • 2. 架构图示
      • 3. 关键技术点
    • 三、代码实现:分步详解
      • 1. 环境配置
      • 2. 核心代码结构
      • 3. Scrapy项目集成
      • 4. Playwright增强功能示例
    • 四、总结:技术融合的优势与挑战
      • 1. 优势
      • 2. 挑战与应对
      • Python爬虫相关文章(推荐)

一、背景:动态页面与反爬技术的崛起

在Web开发中,动态渲染页面(如React/Vue/Angular)和反爬机制(如JS加密、验证码、行为检测)已成为爬虫工程师的两大难题。传统基于requests的静态页面抓取方法逐渐失效,而单一的自动化工具(如Selenium或Scrapy)在效率、稳定性和功能扩展性上存在局限性。

痛点分析:

  1. 动态内容缺失:requests无法执行JavaScript,导致异步加载的数据丢失。
  2. 反爬对抗:Selenium易被检测(如navigator.webdriver标志),Scrapy缺乏浏览器模拟能力。
  3. 效率瓶颈:纯Selenium爬取速度慢,Scrapy的异步优势无法直接应用于动态页面。

解决方案:

结合Selenium(模拟浏览器操作)、Scrapy(高效异步框架)和Playwright(现代浏览器自动化工具)的优点,构建分层爬虫架构,实现动态渲染、反爬对抗、高效采集的协同能力

二、技术融合架构设计

1. 核心组件分工

组件角色
Selenium模拟用户操作(如点击、滚动、表单提交),处理复杂交互逻辑。
Playwright替代Selenium执行轻量级动态渲染,支持多浏览器(Chromium/Firefox/WebKit)。
Scrapy作为调度核心,管理请求队列、数据存储和分布式爬取。

2. 架构图示

IP代理池
User-Agent轮换
重试机制
日志记录
用户请求
Scrapy调度器
Selenium/Playwright
动态渲染
数据解析
持久化存储
反爬检测
异常处理

3. 关键技术点

  • 动态渲染策略:
    • 对简单动态页面:优先使用Playwright的page.evaluate()直接提取DOM。
    • 对复杂交互页面:通过Selenium模拟操作后,将渲染结果注入Scrapy的Response对象。
  • 反爬对抗策略:
    • 使用Playwright的stealth模式隐藏自动化特征。
    • 结合Scrapy的中间件机制,动态切换IP代理池和请求头(User-Agent、Referer)。
  • 性能优化:
    • Selenium与Scrapy通过Item Pipeline解耦渲染与解析逻辑,避免阻塞。
    • 使用Playwright的page.waitForSelector()精准等待动态元素,减少无效等待。

三、代码实现:分步详解

1. 环境配置

pip install scrapy selenium playwright
playwright install  # 安装浏览器驱动

2. 核心代码结构

# middleware.py: 自定义Scrapy中间件,集成Selenium/Playwright
from selenium import webdriver
from playwright.sync_api import sync_playwright
from scrapy import signalsclass DynamicPageMiddleware:def __init__(self):self.driver = Noneself.playwright = None@classmethoddef from_crawler(cls, crawler):middleware = cls()crawler.signals.connect(middleware.spider_closed, signals.spider_closed)return middlewaredef process_request(self, request, spider):if "dynamic" in request.meta:  # 标记动态页面请求if request.meta.get("use_playwright", False):with sync_playwright() as p:browser = p.chromium.launch(headless=True)page = browser.new_page()page.goto(request.url)# 提取动态内容(示例:获取最终渲染的HTML)html = page.content()return scrapy.http.HtmlResponse(url=request.url,body=html,encoding="utf-8",request=request,)else:  # Selenium模式self.driver = webdriver.Chrome()self.driver.get(request.url)# 模拟用户操作(如点击登录按钮)self.driver.find_element_by_id("login-btn").click()# 返回渲染后的页面源码return scrapy.http.HtmlResponse(url=request.url,body=self.driver.page_source,encoding="utf-8",request=request,)def spider_closed(self, spider):if self.driver:self.driver.quit()

3. Scrapy项目集成

在settings.py中注册中间件:

DOWNLOADER_MIDDLEWARES = {'myproject.middlewares.DynamicPageMiddleware': 543,  # 优先级低于默认中间件
}

4. Playwright增强功能示例

# 使用Playwright的隐身模式和防检测选项
with sync_playwright() as p:browser = p.chromium.launch(headless=True)context = browser.new_context(user_agent="Mozilla/5.0...",ignore_https_errors=True,# 模拟真实浏览器行为extra_http_headers={"Accept-Language": "en-US,en;q=0.9"},)page = context.new_page()page.route("**/xhr/**", lambda route: route.abort())  # 拦截XHR请求(可选)page.goto("https://target.com")# 执行自动化操作(如滚动到底部)page.evaluate("window.scrollTo(0, document.body.scrollHeight)")

四、总结:技术融合的优势与挑战

1. 优势

  • 动态渲染覆盖:Playwright/Selenium处理JS渲染,Scrapy专注数据提取。
  • 反爬对抗升级:结合IP代理、请求头随机化、行为模拟(如鼠标移动轨迹)。
  • 效率与稳定性:Playwright比Selenium更轻量,适合大规模爬取;Selenium适合复杂交互场景。

2. 挑战与应对

  • 资源消耗:浏览器自动化工具占用内存高。
    解决方案:使用无头模式(Headless),限制并发数(如CONCURRENT_REQUESTS=16)。
  • 反爬升级:目标网站可能检测Playwright/Selenium的指纹特征。
    解决方案:结合undetected-chromedriver或自定义浏览器指纹。

Python爬虫相关文章(推荐)

Python爬虫介绍Python爬虫(1)Python爬虫:从原理到实战,一文掌握数据采集核心技术
HTTP协议解析Python爬虫(2)Python爬虫入门:从HTTP协议解析到豆瓣电影数据抓取实战
HTML核心技巧Python爬虫(3)HTML核心技巧:从零掌握class与id选择器,精准定位网页元素
CSS核心机制Python爬虫(4)CSS核心机制:全面解析选择器分类、用法与实战应用
静态页面抓取实战Python爬虫(5)静态页面抓取实战:requests库请求头配置与反反爬策略详解
静态页面解析实战Python爬虫(6)静态页面解析实战:BeautifulSoup与lxml(XPath)高效提取数据指南
Python数据存储实战 CSV文件Python爬虫(7)Python数据存储实战:CSV文件读写与复杂数据处理指南
Python数据存储实战 JSON文件Python爬虫(8)Python数据存储实战:JSON文件读写与复杂结构化数据处理指南
Python数据存储实战 MySQL数据库Python爬虫(9)Python数据存储实战:基于pymysql的MySQL数据库操作详解
Python数据存储实战 MongoDB数据库Python爬虫(10)Python数据存储实战:基于pymongo的MongoDB开发深度指南
Python数据存储实战 NoSQL数据库Python爬虫(11)Python数据存储实战:深入解析NoSQL数据库的核心应用与实战
Python爬虫数据存储必备技能:JSON Schema校验Python爬虫(12)Python爬虫数据存储必备技能:JSON Schema校验实战与数据质量守护
Python爬虫数据安全存储指南:AES加密Python爬虫(13)数据安全存储指南:AES加密实战与敏感数据防护策略
Python爬虫数据存储新范式:云原生NoSQL服务Python爬虫(14)Python爬虫数据存储新范式:云原生NoSQL服务实战与运维成本革命
Python爬虫数据存储新维度:AI驱动的数据库自治Python爬虫(15)Python爬虫数据存储新维度:AI驱动的数据库自治与智能优化实战
Python爬虫数据存储新维度:Redis Edge近端计算赋能Python爬虫(16)Python爬虫数据存储新维度:Redis Edge近端计算赋能实时数据处理革命
反爬攻防战:随机请求头实战指南Python爬虫(17)反爬攻防战:随机请求头实战指南(fake_useragent库深度解析)
反爬攻防战:动态IP池构建与代理IPPython爬虫(18)反爬攻防战:动态IP池构建与代理IP实战指南(突破95%反爬封禁率)
Python爬虫破局动态页面:全链路解析Python爬虫(19)Python爬虫破局动态页面:逆向工程与无头浏览器全链路解析(从原理到企业级实战)
Python爬虫数据存储技巧:二进制格式性能优化Python爬虫(20)Python爬虫数据存储技巧:二进制格式(Pickle/Parquet)性能优化实战
Python爬虫进阶:Selenium自动化处理动态页面Python爬虫(21)Python爬虫进阶:Selenium自动化处理动态页面实战解析
Python爬虫:Scrapy框架动态页面爬取与高效数据管道设计Python爬虫(22)Python爬虫进阶:Scrapy框架动态页面爬取与高效数据管道设计
Python爬虫性能飞跃:多线程与异步IO双引擎加速实战Python爬虫(23)Python爬虫性能飞跃:多线程与异步IO双引擎加速实战(concurrent.futures/aiohttp)
Python分布式爬虫架构实战:Scrapy-Redis亿级数据抓取方案设计Python爬虫(24)Python分布式爬虫架构实战:Scrapy-Redis亿级数据抓取方案设计
Python爬虫数据清洗实战:Pandas结构化数据处理全指南Python爬虫(25)Python爬虫数据清洗实战:Pandas结构化数据处理全指南(去重/缺失值/异常值)
Python爬虫高阶:Scrapy+Selenium分布式动态爬虫架构实践Python爬虫(26)Python爬虫高阶:Scrapy+Selenium分布式动态爬虫架构实践
Python爬虫高阶:双剑合璧Selenium动态渲染+BeautifulSoup静态解析实战Python爬虫(27)Python爬虫高阶:双剑合璧Selenium动态渲染+BeautifulSoup静态解析实战
Python爬虫高阶:Selenium+Splash双引擎渲染实战与性能优化Python爬虫(28)Python爬虫高阶:Selenium+Splash双引擎渲染实战与性能优化
Python爬虫高阶:动态页面处理与云原生部署全链路实践(Selenium、Scrapy、K8s)Python爬虫(29)Python爬虫高阶:动态页面处理与云原生部署全链路实践(Selenium、Scrapy、K8s)

相关文章:

Python爬虫(30)Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景

目录 一、背景:动态页面与反爬技术的崛起二、技术融合架构设计1. 核心组件分工2. 架构图示3. 关键技术点 三、代码实现:分步详解1. 环境配置2. 核心代码结构3. Scrapy项目集成4. Playwright增强功能示例 四、总结:技术融合的优势与挑战1. 优势…...

PHP、JAVA、Shiro反序列化

目录 一、PHP反序列化 二、JAVA反序列化 三、Shiro反序列化 Shiro-550 反序列化漏洞原理 Shiro-721 反序列化漏洞原理 Padding Oracle 漏洞补充: 防御措施: 一、PHP反序列化 主要是分为有类和无类: 1、有类:就有相关的魔术…...

FreeRTOS全攻略:从入门到精通

目录 一、FreeRTOS 基础概念1.1 FreeRTOS 是什么1.2 为什么选择 FreeRTOS 二、与裸机开发的区别2.1 任务管理2.2 中断处理2.3 资源管理 三、FreeRTOS 入门篇3.1 内存管理3.2 任务创建3.3 任务状态3.4 任务优先级3.5 空闲任务和钩子函数3.6 同步与互斥​3.7 队列​3.8 信号量​3…...

机器学习 决策树-分类

决策树-分类 1 概念2 基于信息增益决策树的建立(1) 信息熵(2) 信息增益(3) 信息增益决策树建立步骤 3 基于基尼指数决策树的建立(了解)4 sklearn API5 示例 1 概念 1、决策节点 通过条件判断而进行分支选择的节点。如:将某个样本中的属性值(特征值)与决策节点上的值…...

【RK3588嵌入式图形编程】-Cairo-形状与填充

形状与填充 文章目录 形状与填充1、基本形状2、 纯色填充3、 填充图案4、 填充渐变本文介绍了如何使用Cairo库创建和填充基本形状及复杂形状。首先,通过Cairo API创建矩形、正方形、圆形、弧线和椭圆等基本形状,并使用纯色进行填充。接着,通过组合基本图元,展示了如何绘制星…...

C及C++的音频库与视频库介绍

在 C/C 开发中,处理音频和视频需要依赖专业的库来实现编解码、播放、录制、处理等功能。 一.音频库(C/C) 1.FFmpeg(音频 视频全能库) 功能: 支持几乎所有音频 / 视频格式的编解码(如 MP3、…...

5.2.4 wpf中MultiBinding的使用方法

在 WPF 中,MultiBinding 允许将多个绑定(Binding)组合成一个逻辑结果,并通过一个转换器(IMultiValueConverter)处理这些值,最终影响目标属性。以下是其核心用法和示例: 核心组件: MultiBinding:定义多个绑定源的集合。 IMultiValueConverter:实现逻…...

小白的进阶之路系列之二----人工智能从初步到精通pytorch中分类神经网络问题详解

什么是分类问题? 分类问题涉及到预测某物是一种还是另一种。 例如,你可能想要: 问题类型具体内容例子二元分类目标可以是两个选项之一,例如yes或no根据健康参数预测某人是否患有心脏病。多类分类目标可以是两个以上选项之一判断一张照片是食物、人还是狗。多标签分类目标…...

日志根因分析:Elastic Observability 的异常检测与日志分类功能

作者:来自 Elastic Bahubali Shetti Elastic Observability 不仅提供日志聚合、指标分析、APM 和分布式追踪,Elastic 的机器学习能力还能帮助分析问题的根因,让你将时间专注于最重要的任务。 随着越来越多的应用程序迁移到云端,收…...

web基础

域名概述 2-1 域名的概念:IP 地址不易记忆,域名是互联网络上识别和定位计算机的层次结构式的字符标识,与该计算机的互联网协议 (IP) 地址相对应,用于在数据传输时标识计算机的电子方位,方便人们记忆和输入。 早期使用…...

WebRTC技术EasyRTC音视频实时通话驱动智能摄像头迈向多场景应用

一、方案背景​ 在物联网蓬勃发展的当下,智能摄像头广泛应用于安防、家居、工业等领域。但传统智能摄像头存在视频传输延迟高、设备兼容性差、网络波动时传输不稳定等问题,难以满足用户对实时流畅交互视频的需求。EasyRTC凭借低延迟、高可靠、跨平台特性…...

替换word中的excel

PostMapping("/make/report/target/performance/first") public AjaxResult makeTargetReportFirst(RequestBody MakeReportDTO makeReportDTO) {Map<String, String> textReplaceMap new HashMap<>();// 替换日期LocalDateTime nowData LocalDateTime…...

【氮化镓】低剂量率对GaN HEMT栅极漏电的影响

2024 年 2 月 22 日,中国科学院新疆理化技术研究所的Li等人在《IEEE ACCESS》期刊发表了题为《Degradation Mechanisms of Gate Leakage in GaN-Based HEMTs at Low Dose Rate Irradiation》的文章,基于实验分析和 TCAD 仿真,研究了低剂量率辐照下基于 GaN 的 p 型栅高电子迁…...

win10使用nginx做简单负载均衡测试

一、首先安装Nginx&#xff1a; 官网链接&#xff1a;https://nginx.org/en/download.html 下载完成后&#xff0c;在本地文件中解压。 解压完成之后&#xff0c;打开conf --> nginx.config 文件 1、在 http 里面加入以下代码 upstream GY{#Nginx是如何实现负载均衡的&a…...

Java 06API时间类

API-时间类 Date jdk8之前1.构造 代表当前的日期和时间 1.Date d1new Date();当前的时间编译成对象 2.Date d2new Date(long time);时间毫秒值代表的Date日期对象 long 类型需要在写L 及8L2.常用方法 public long getTime();获取从1970-1-1到现在的毫秒值总数 void setTime…...

2.11 筹资管理

11.1 筹资主体 11.1.1 企业筹资 1.内源筹资 企业自由资金、应付息税以及未使用或者分配专项基金。自由资金:留存收益、应收账款、闲置资产变卖未使用或者分配专项基金:更新改造基金、生产发展基金以及职工福利基金 2.外源筹资 权益筹资:普通股筹资、优先股筹资债务筹资:借…...

什么是 AI 人工智能?什么是机器学习?什么是深度学习?三者啥关系

AI 到底是个啥&#xff1f;跟咱有啥关系&#xff1f;一文帮你搞懂&#xff01; 最近是不是老听到 “AI”、“人工智能” &#xff0c;“机器学习”&#xff0c;“深度学习”这些词&#xff1f;感觉挺高大上&#xff0c;但又有点懵&#xff1f;别担心&#xff0c;今天咱们就用大…...

C语言经典面试题及答案100道

# C语言经典面试题及答案100道 ## 基础概念部分 1. **什么是C语言&#xff1f;** - 答&#xff1a;C语言是一种通用的、过程式的计算机编程语言&#xff0c;由Dennis Ritchie于1972年在贝尔实验室开发&#xff0c;主要用于系统软件开发。 2. **C语言的特点是什么&#xf…...

RocketMQ 顺序消息实现原理详解

RocketMQ 的顺序消息实现原理主要围绕生产者发送顺序性、Broker存储顺序性和消费者消费顺序性三个核心环节展开&#xff0c;具体分为全局有序和分区有序两种模式。 一、顺序消息的分类 1. 全局有序 定义&#xff1a;某个Topic下所有消息严格按FIFO顺序处理。实现&#xff1a;…...

SpringBoot与GeoHash整合,实现骑手就近派单功能

通过使用GeoHash结合Redis的地理空间功能,能够实时管理和查询骑手的位置信息,并根据订单量和评分等因素动态分配最近的骑手来完成配送任务. 空间索引: GeoHash是一种将地理坐标(经纬度)编码为字符串的算法,可以用于空间索引。 这使得我们可以方便地在Redis这样的内存数据库…...

spark任务的提交流程

目录 spark任务的提交流程1. 资源申请与初始化2. 任务划分与调度3. 任务执行4. 资源释放与结果处理附:关键组件协作示意图扩展说明SparkContext介绍 spark任务的提交流程 用户创建一个 Spark Context;Spark Context 去找 Cluster Manager 申请资源同时说明需要多少 CPU 和内…...

阿博图书馆管理系统 Java+Spring Boot+MySQL 实战项目分享

一、项目简介 为了提升图书馆的管理效率和用户体验&#xff0c;我们基于 Java Spring Boot MySQL 开发了一款完整的图书馆管理系统 —— 阿博图书馆管理系统。系统采用前后端分离架构&#xff0c;功能模块丰富&#xff0c;操作逻辑清晰&#xff0c;适合用于毕业设计、实训项…...

es学习小结

1.​客户端类型​ ​推荐场景​ ​版本兼容性​ Elasticsearch Java API Client 新项目、ES 8.x集群 8.x及以上 Spring Data Elasticsearch Spring生态项目、简化ORM操作 ES 7.x-8.x&#xff08;需版本匹配&#xff09; Low-Level REST Client 需要底层HTTP控制、兼容多版本ES …...

【数据库课程设计】网上投票管理系统

目录 前言&#xff1a; 一&#xff0c;系统需求分析 1&#xff0c;需求概述 2&#xff0c;系统功能图 3&#xff0c;业务流程图 业务流程分析 业务流程图 4&#xff0c;数据流程图 5&#xff0c;数据字典 二&#xff0c;概念结构设计 1&#xff0c;实体分析 2&am…...

STM32+ESP8266+ONENET+微信小程序上传数据下发指令避坑指南

之前只做过类似的但是以为这种烂大街的功能应该不难结果还是踩了不少坑&#xff0c;记录几个需要注意的点 1、创建产品的时候选择onejson&#xff0c;自定义方案。这样选择的就是物模型&#xff0c;之后可以去使用物模型的API调试。 2、设置物模型 大概有以下几种比较常用的&…...

不同消息队列保证高可用实现方案

消息队列的高可用性&#xff08;High Availability, HA&#xff09;是分布式系统中的核心需求&#xff0c;不同消息队列通过多种技术手段实现高可用。以下是主流消息队列的高可用实现方案及对比&#xff1a; 一、Apache Kafka 副本机制&#xff08;Replication&#xff09; 每个…...

Android 蓝牙开发 - 蓝牙相关权限(蓝牙基本权限、Android 12 蓝牙新增权限、位置权限)

蓝牙基本权限 1、基本介绍 <uses-permission android:name"android.permission.BLUETOOTH" />BLUETOOTH&#xff1a;允许应用连接配对的蓝牙设备 <uses-permission android:name"android.permission.BLUETOOTH_ADMIN" />BLUETOOTH_ADMIN&am…...

【Linux】第二十一章 管理存储堆栈

1. 分别说明LVM中物理卷、物理区块、卷组、逻辑卷的概念以及它们之间的关系。 在 LVM (Logical Volume Management) 中&#xff0c;硬盘的管理变得更加灵活&#xff0c;允许动态地调整磁盘空间的分配。 物理卷&#xff08;PV&#xff09;&#xff1a;LVM使用底层物理设备&…...

OpenCV 人脸识别:从基础到实践全解析

在人工智能与计算机视觉蓬勃发展的今天&#xff0c;人脸识别技术已深入我们生活的方方面面&#xff0c;从手机解锁到安防监控&#xff0c;其应用无处不在。而 OpenCV 作为计算机视觉领域最受欢迎的开源库之一&#xff0c;为开发者提供了一套高效且易用的人脸识别解决方案。本文…...

【HTML-2】HTML 标题标签:构建网页结构的基础

在网页开发中&#xff0c;标题标签(<h1>到<h6>)是构建内容层次结构和语义化标记的基础元素。这些标签不仅影响内容的视觉呈现&#xff0c;更对网页的可访问性和SEO有着深远影响。 1. 标题标签的基本用法 HTML提供了六个级别的标题标签&#xff1a; <h1>这…...

vue3前端后端地址可配置方案

在开发vue3项目过程中&#xff0c;需要切换不同的服务器部署&#xff0c;代码中配置的服务需要可灵活配置&#xff0c;不随着run npm build把网址打包到代码资源中&#xff0c;不然每次切换都需要重新run npm build。需要一个配置文件可以修改服务地址&#xff0c;而打包的代码…...

HTML应用指南:利用POST请求获取全国申通快递服务网点位置信息

申通快递&#xff08;STO Express&#xff09;作为中国领先的综合物流服务商&#xff0c;自1993年创立以来&#xff0c;始终秉持“正道经营、长期主义”的发展理念&#xff0c;深耕快递物流领域&#xff0c;开创了行业加盟制先河。经过30余年的发展&#xff0c;申通已成长为国家…...

《医院运营管理典型应用数据资源建设指南2025》全面分析

引言:医院数据资源建设的时代背景与意义 医院运营管理数据资源建设正迎来前所未有的发展机遇与挑战。在深化支付改革与公立医院高质量发展政策驱动下,医院亟需建立智慧化运营管理体系,而数据资源作为关键要素,其建设水平直接关系到医院管理的科学性与效率。《医院运营管理…...

.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式

一&#xff1a;背景 1. 讲故事 上一篇我们讲到了 注解特性&#xff0c;harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发&#xff0c;那时候我也说了&#xff0c;特性虽然简单粗暴&#xff0c;但只能解决 95% 的问题&#xff0c;言外之意还有一些…...

taro 小程序 CoverImage Image src无法显示图片的问题

目录 一、问题描述 二、解决方案 一、问题描述 使用taro开发的微信小程序图片无法正常显示&#xff0c;并报如下错误&#xff1a; [渲染层网络层错误] Failed to load local image resource /assets/icon/message.png the server responded with a status of 500 (HTTP/1.…...

05_核支持向量机

描述 核支持向量机&#xff08;通常简称为SVM&#xff09;可以推广到更复杂模型的扩展&#xff0c;这些模型无法被输入空间的超平面定义。 SVM 的核心思想是找到一个最优的超平面&#xff0c;将不同类别的数据分开。这个超平面不仅要能够正确分类数据&#xff0c;还要使得两个…...

[解决方案] Word转PDF

背景&#xff1a; 之前做过一些pdf导出&#xff0c; 客户提了一个特别急的需求&#xff0c; 要求根据一个模版跟一个csv的数据源&#xff0c; 批量生成PDF&#xff0c; 因为之前用过FOP&#xff0c; 知道调整样式需要特别长的时间&#xff0c; 这个需求又特别急&#xff0c; 所…...

Oracle 11g post PSU Oct18 设置ssl连接(使用wallets)

说明 oracle 11g 从PSU 2018Oct&#xff08;含&#xff09;及之后的补丁不支持MD5. 要使用JDBC SSL要使用TSL1.2. 有两种方法&#xff0c;一种使用wallet, 一种使用JKS. 本文档使用wallets. 1. 为什么用TSL 1.2 https://blogs.oracle.com/developers/post/ssl-connection-to…...

linux关闭某端口暂用的进程

查看是哪个端口暂用 sudo netstat -tulpn | grep :80根据图片 显示 80端口暂用的 进程id是 3002 结束进程id为3002的进程 sudo kill -9 3002...

web开发全过程总结

目录 利用pnpm创建vue3的文件 使用pnpm创建项目 项目配置 在idea中创建Spring Boot项目 配置基础项目架构(三层架构) 利用pnpm创建vue3的文件 1.打开cmd,以管理员的身份运行 2.切换到自己想要建立项目的文件的目录下或者直接在文件中以cmd的形式打开 输入指令安装pnpm n…...

经典Java面试题的答案——Java 基础

大家好&#xff0c;我是九神。这是互联网技术岗的分享专题&#xff0c;废话少说&#xff0c;进入正题&#xff1a; 1.JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a;Java Development Kit 的简称&#xff0c;java 开发工具包&#xff0c;提供了 java 的开发环境和运行环境…...

Fiddler 指定链接断点

问题背景 在使用Fiddler进行抓包和mock数据时&#xff0c;由于前端页面通常依赖多个前置接口&#xff08;如JS、CSS、登录态等&#xff09;&#xff0c;导致抓包过程中难以精准定位到目标接口。这种复杂性增加了调试和mock数据的难度。 常见挑战 前置接口过多&#xff1a;页…...

C# 语法篇:字段的定义和运算

对于字段来说&#xff0c;是在对象创建时就被初始化了&#xff1b;而构造函数的运行是在这之后。 因此&#xff0c;不能对字段进行需要用到“构造函数赋值的变量”的运算&#xff0c;因为此时这些变量的值都为0或者随机值&#xff0c;编译器不允许这时候做运算。 因此&#xf…...

音频应用的MediaSession冲突

前提条件 系统级应用&#xff0c;使用了sharedUserId 应用在AndroidManifest.xml中声明了系统级UID&#xff1a;android:sharedUserId"android.uid.system"该配置使应用具有系统级权限&#xff0c;可以访问系统级API和资源 使用MediaSession框架 应用通过MediaSessi…...

【QT】类A接收TCP数据并通过信号通知类B解析

以下是基于Qt的完整示例代码&#xff0c;包含类A接收TCP数据并通过信号通知类B解析的实现&#xff1a; ------------------ ClassA.h 网络数据接收类 ------------------ #pragma once#include <QTcpServer> #include <QTcpSocket> #include <QObject>class…...

【Jitsi Meet】(腾讯会议的平替)Docker安装Jitsi Meet指南-使用内网IP访问

Docker安装Jitsi Meet指南-使用内网IP访问 下载官方代码配置环境变量复制示例环境文件并修改配置&#xff1a;编辑 .env 文件&#xff1a; 修改 docker-compose.yml 文件生成自签名证书启动服务最终验证 腾讯会议的平替。我们是每天开早晚会的&#xff0c;都是使用腾讯会议。腾…...

微服务架构中的多进程通信--内存池、共享内存、socket

目录 1 引言 2 整体架构简介 3 疑问 3.1 我们的共享内存消息机制是用的posix还是system V 3.2 rmmt中&#xff0c;不同线程之间的比如访问同一个内存&#xff0c;用的什么锁控制的 3.3 疑问&#xff1a;假如一个进程发送给了另外两个进程&#xff0c;然后另外两个进程都同…...

使用 adb 命令截取 Android 设备的屏幕截图

使用 adb 命令截取 Android 设备的屏幕截图。以下是两种常见的方法&#xff1a; 方法一&#xff1a;截屏后保存到电脑 adb shell screencap -p /sdcard/screenshot.png adb pull /sdcard/screenshot.png解释&#xff1a; adb shell screencap -p /sdcard/screenshot.png&…...

Jenkins服务器配置密钥对

1. 在 Jenkins 服务器上执行以下命令 # 生成 SSH 密钥对 ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""# 查看公钥内容 cat ~/.ssh/id_rsa.pub 2. 将显示的公钥内容复制&#xff0c;然后在目标服务器上执行 # 在目标服务器上执行 mkdir -p /root/.ssh chmod …...

Docker中部署Alertmanager

在 Docker 中部署 Alertmanager&#xff08;通常与 Prometheus 告警系统配合使用&#xff09;的步骤如下&#xff1a; 一、拉取镜像prom/alertmanager docker pull prom/alertmanager二、 创建 Alertmanager 配置文件 首先准备Alertmanager的配置文件 alertmanager.yml(如存…...