极验滑动验证码自动化实战:背景提取、缺口定位与Playwright滑动模拟

news2026/4/7 2:15:15
滑动验证码自动化实战背景提取、缺口定位与Playwright滑动模拟一、前言在爬虫自动化、Web端自动化测试、业务流程自动化等场景中人机验证是保障系统安全的重要防线也是自动化流程中最常见的“拦路虎”。极验Geetest作为国内领先的行为验证码厂商其第四代自适应滑动验证码凭借动态防护、行为轨迹校验、环境检测等多重技术成为众多网站的首选验证方案。与传统静态验证码不同极验滑动验证码通过“拖动滑块填充缺口”的交互方式结合用户行为特征判断是否为人类操作大幅提升了机器破解的难度。本文以极验官方自适应验证测试页面https://www.geetest.com/adaptive-captcha为实战靶场全程聚焦技术实战与合规性完整讲解滑动验证码背景图的精准提取、缺口坐标定位思路以及基于Playwright的拟人化鼠标滑动模拟实现不依赖第三方解码平台、不提供违规API接入代码助力开发者掌握滑动验证码自动化的核心逻辑与实操方法。本文适合具备Python基础、了解Playwright基本用法的开发者阅读通过本文学习可掌握滑动验证码自动化的核心流程能够独立完成背景提取、缺口定位与滑动模拟的全流程开发适配各类基于极验滑动验证码的自动化场景。二、极验滑动验证码核心机制解析2.1 极验滑动验证码的核心防护逻辑极验第四代自适应滑动验证码摒弃了传统验证码“单纯图片识别”的防御模式构建了“AI动态风控行为特征校验环境检测”的立体防护体系其核心防护逻辑主要包括以下4点动态图片生成后台会实时生成不同的背景图与缺口组合每小时更新数十万组图片通过视觉偏差、异构视差等设计避免黑产通过图片库穷举、模板匹配等方式破解。行为轨迹校验全程采集用户拖动滑块过程中的核心数据包括鼠标按下坐标、移动轨迹、速度变化、加速度、停留时间等生成唯一的行为指纹通过AI算法判断是否为人类的自然操作机器模拟的轨迹往往过于规整缺乏人类操作的随机性。环境风险检测自动识别当前运行环境是否存在异常包括Headless浏览器、模拟器、IP代理、设备信息篡改等一旦检测到异常环境会直接提升验证难度或拦截验证请求。加密参数校验滑动完成后前端会生成加密参数如w参数并将其提交至后端后端通过解密参数、校验轨迹合法性与图片匹配度最终判断验证是否通过。2.2 滑动验证码的核心组成元素要实现滑动验证码的自动化首先需要明确其页面结构极验滑动验证码主要由3个核心元素组成也是我们自动化操作的关键目标背景图对应CSS类名.geetest_bg这是带有缺口的完整背景图片缺口的位置就是滑块需要拖动到的目标位置也是我们后续进行缺口定位的核心载体。滑块图对应CSS类名.geetest_slice待拖动的拼图块其形状与背景图中的缺口完全匹配拖动过程中会跟随鼠标移动释放后与缺口对齐则验证成功。滑动触发按钮对应CSS类名.geetest_btn_click用于触发滑动验证码加载的交互按钮点击后会加载背景图、滑块图进入滑动验证环节。自动化的核心目标的本质的是精准提取背景图 → 定位缺口与滑块起始位置的横向距离 → 模拟人类的自然滑动轨迹将滑块拖动至缺口位置完成验证。其中背景图的提取是整个流程的基础——无论是自主实现缺口定位还是后续对接相关工具都需要以提取到的背景图作为定位依据。三、环境准备与依赖安装3.1 核心依赖库说明本文实战所用到的核心工具与依赖库均为Python生态中常用的合规工具无任何违规依赖具体如下Playwright微软开源的浏览器自动化工具支持Chromium、Firefox、WebKit等浏览器能够精准模拟鼠标点击、拖动、键盘输入等人类操作相比Selenium其稳定性更强、执行速度更快且对动态页面的适配更好是模拟滑动操作的核心工具。requestsPython常用的HTTP请求库用于发送请求下载滑动验证码的背景图片。re正则表达式Python内置模块用于从背景图元素的style属性中提取图片URL。opencv-python numpy可选用于图像处理自主实现缺口定位后续会详细讲解定位思路。3.2 依赖库安装步骤打开终端执行以下命令完成所有依赖的安装# 安装Playwright核心库pipinstallplaywright# 安装Playwright对应的浏览器驱动本文使用Chromiumplaywrightinstallchromium# 安装requests库用于下载图片pipinstallrequests# 可选安装图像处理依赖用于自主实现缺口定位pipinstallopencv-python numpy四、滑动验证码背景图精准提取核心实战4.1 提取思路解析极验滑动验证码的背景图并非直接以img标签的形式加载而是通过CSS的background-image属性嵌入到页面元素中。因此我们无法直接通过定位img标签获取图片URL只能通过以下步骤提取使用Playwright打开极验测试页面触发滑动验证码加载。定位到背景图对应的元素.geetest_bg获取其style属性值。通过正则表达式从style属性中提取background-image对应的图片URL。使用requests库发送请求下载图片并保存到本地用于后续的缺口定位。这一步是整个滑动验证码自动化的基础也是最关键的步骤之一——只有精准提取到背景图才能后续进行缺口定位进而完成滑动模拟。4.2 完整提取代码与详细解析以下是背景图提取的完整代码。importreimportrequestsfromplaywright.sync_apiimportsync_playwrightdefextract_geetest_bg_image(): 提取极验滑动验证码背景图并保存到本地 :return: 背景图保存路径 # 启动Playwright使用Chromium浏览器headlessFalse表示显示浏览器便于调试withsync_playwright()asp:# 启动浏览器实例headlessFalse用于调试上线后可改为True无界面运行browserp.chromium.launch(headlessFalse)# 创建新的浏览器上下文隔离不同的会话contextbrowser.new_context()# 打开新的页面pagecontext.new_page()# 访问极验滑动验证码测试页面page.goto(https://www.geetest.com/adaptive-captcha)# 等待页面加载完成强制等待1秒避免页面未加载完成导致元素定位失败page.wait_for_timeout(1000)# 点击“滑动验证”标签切换到滑动验证页面对应CSS类名.tab-item-1page.click(.tab-item-1)# 等待标签切换完成避免元素未渲染page.wait_for_timeout(1000)# 点击滑动触发按钮加载滑动验证码背景图、滑块图page.click(.geetest_btn_click)# 等待验证码加载完成滑动验证码加载需要一定时间等待2秒确保加载成功page.wait_for_timeout(2000)# 定位背景图元素CSS类名.geetest_bgele_imgpage.locator(.geetest_bg)# 获取背景图元素的style属性值包含background-image的URLimg_styleele_img.get_attribute(style)# 使用正则表达式提取style中的图片URL# 正则匹配规则匹配url(xxx)格式提取括号内的URL内容ele_pngre.compile(rurl\((.?)\))# 提取图片URLfindall返回列表取第一个元素即为目标URLimg_urlele_png.findall(img_style)[0]print(f成功提取背景图URL{img_url})# 下载背景图并保存到本地try:# 发送HTTP请求获取图片内容设置超时时间避免请求卡住responserequests.get(img_url,timeout10)# 验证请求是否成功状态码200表示成功response.raise_for_status()# 以二进制模式打开文件写入图片内容保存为1.png可自行修改保存路径withopen(1.png,wb)asf:f.write(response.content)print(背景图下载完成保存路径./1.png)return./1.pngexceptExceptionase:print(f背景图下载失败{str(e)})returnNone# 调用函数执行背景图提取if__name____main__:extract_geetest_bg_image()4.3 常见问题与解决方案在背景图提取过程中开发者可能会遇到各种问题以下是最常见的3个问题及对应的解决方案帮助大家快速排查问题问题1元素定位失败NoSuchElementException。原因页面加载速度过慢或者元素选择器错误。解决方案延长等待时间调整page.wait_for_timeout的参数如改为2000通过浏览器开发者工具F12检查元素的CSS类名是否正确确保.locator(“.geetest_bg”)能够精准定位到背景图元素。问题2正则提取不到图片URL。原因style属性格式发生变化正则匹配规则不适用。解决方案打印img_style的值查看background-image的格式如是否为url(‘xxx’)、无引号等调整正则表达式如将r’url(“(.?)”)‘改为r’url(’(.?))适配无引号或单引号的情况。问题3图片下载失败请求超时、403禁止访问。原因极验对图片请求进行了Referer校验或者IP被限制。解决方案在requests.get中添加请求头模拟浏览器请求如添加Referer、User-Agent更换IP或暂停请求避免被反爬限制。补充添加请求头的示例代码修改requests.get部分可有效解决403禁止访问问题headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36,Referer:https://www.geetest.com/# 必须添加Referer模拟页面内请求}responserequests.get(img_url,headersheaders,timeout10)五、缺口定位思路自主实现无需第三方工具提取到背景图后下一步就是定位缺口的位置——缺口的X坐标横向坐标是我们计算滑动距离的核心依据纵向坐标基本固定无需重点关注。目前自主实现缺口定位的思路主要有两种分别适用于不同的场景开发者可根据自身需求选择。5.1 思路一基于图像对比的缺口定位推荐核心原理极验滑动验证码的背景图本质是“完整图片”与“缺口图片”的合成缺口区域与周围区域的像素值存在明显差异如亮度、灰度不同。通过图像处理技术对比图片的像素差异即可定位到缺口的位置。具体实现步骤基于opencv-python读取下载的背景图将其转换为灰度图减少颜色干扰提高定位精度。对灰度图进行高斯模糊处理去除图片噪声避免误判。使用Canny边缘检测算法提取图片的边缘信息缺口区域的边缘会更加明显。通过轮廓检测找到缺口对应的轮廓计算轮廓的中心点X坐标即为缺口的目标位置。核心代码片段仅展示定位逻辑可自行整合到完整脚本中importcv2importnumpyasnpdeffind_gap_position(bg_path): 基于图像对比定位背景图中缺口的X坐标 :param bg_path: 背景图保存路径 :return: 缺口X坐标 # 读取背景图imgcv2.imread(bg_path)# 转换为灰度图graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 高斯模糊去除噪声ksize为奇数sigmaX为标准差blurcv2.GaussianBlur(gray,(5,5),0)# Canny边缘检测minVal、maxVal可根据实际图片调整edgescv2.Canny(blur,50,150)# 轮廓检测cv2.RETR_EXTERNAL表示只检测最外层轮廓contours,_cv2.findContours(edges,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)# 遍历轮廓筛选出缺口对应的轮廓缺口轮廓面积、宽高比有明显特征forcntincontours:# 计算轮廓的 bounding rectangle外接矩形x,y,w,hcv2.boundingRect(cnt)# 筛选条件缺口的宽高比大致为1:1面积在一定范围内可根据实际图片调整if30w60and30h60and0.8w/h1.2:# 缺口的X坐标为外接矩形的中心点X坐标gap_xxw//2print(f成功定位缺口X坐标{gap_x})returngap_xprint(缺口定位失败请调整参数或检查图片)returnNone5.2 思路二基于像素阈值的缺口定位简单易实现核心原理缺口区域的像素亮度通常比周围区域更亮或更暗通过设置一个像素阈值遍历图片的横向像素找到像素值突变的位置即为缺口的起始位置。具体实现步骤读取背景图转换为灰度图。遍历图片的每一列横向计算每一列的平均像素值。当某一列的平均像素值与相邻列的差值超过设定阈值时该列即为缺口的起始位置进而计算出缺口的中心点X坐标。这种方法的优点是代码简单、无需复杂的图像处理知识缺点是定位精度略低于图像对比法适用于缺口与背景差异较大的场景。5.3 缺口定位注意事项定位参数调整无论是图像对比法还是像素阈值法都需要根据实际下载的背景图调整参数如Canny边缘检测的阈值、轮廓筛选的面积范围因为极验的背景图是动态生成的不同图片的缺口大小、亮度可能存在差异。坐标校准页面中的背景图可能存在缩放如自适应页面定位到的图片像素坐标需要转换为页面的实际坐标可通过Playwright获取背景图元素的宽高计算缩放比例进行坐标校准。抗干扰处理部分背景图可能存在与缺口像素差异相似的区域需要通过多轮筛选如轮廓形状、面积、位置避免误判缺口位置。六、基于Playwright的拟人化滑动模拟核心实战完成背景图提取和缺口定位后最关键的一步就是模拟人类的鼠标滑动操作——极验的行为轨迹校验机制对滑动轨迹的自然度要求极高过于规整的滑动轨迹如匀速滑动会被判定为机器操作导致验证失败。因此我们需要模拟人类滑动的特征先加速、再匀速、最后减速同时加入轻微的横向波动让轨迹更接近人类操作。6.1 滑动模拟核心思路滑动模拟的核心是“模拟鼠标的按下→移动→释放”三个动作关键在于控制移动轨迹的自然度具体思路如下定位滑块元素.geetest_slice获取滑块的起始X坐标滑块的初始位置是固定的可通过元素定位获取。根据缺口X坐标计算滑块需要滑动的总距离总距离 缺口X坐标 - 滑块起始X坐标 - 校准值校准值用于修正定位误差。模拟鼠标按下滑块鼠标左键按下不释放。分阶段移动鼠标第一阶段加速移动速度逐渐加快第二阶段匀速保持稳定速度移动第三阶段减速移动速度逐渐减慢最终到达缺口位置。释放鼠标左键完成滑动操作等待验证结果。6.2 完整滑动模拟代码与解析以下代码整合了背景图提取、缺口定位、滑动模拟的全流程重点优化了滑动轨迹的自然度加入了随机波动和速度变化避免被极验的行为校验拦截importreimportrequestsimportcv2importnumpyasnpimportrandomfromplaywright.sync_apiimportsync_playwrightdefextract_geetest_bg_image(page):提取背景图并保存复用页面实例避免重复启动浏览器# 定位背景图元素获取style属性ele_imgpage.locator(.geetest_bg)img_styleele_img.get_attribute(style)# 正则提取图片URLele_pngre.compile(rurl\((.?)\))img_urlele_png.findall(img_style)[0]# 下载图片headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36,Referer:https://www.geetest.com/}responserequests.get(img_url,headersheaders,timeout10)withopen(1.png,wb)asf:f.write(response.content)return./1.pngdeffind_gap_position(bg_path):定位缺口X坐标基于图像对比法imgcv2.imread(bg_path)graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)blurcv2.GaussianBlur(gray,(5,5),0)edgescv2.Canny(blur,50,150)contours,_cv2.findContours(edges,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)forcntincontours:x,y,w,hcv2.boundingRect(cnt)if30w60and30h60and0.8w/h1.2:returnxw//2returnNonedefsimulate_human_slide(page,gap_x): 拟人化滑动模拟 :param page: Playwright页面实例 :param gap_x: 缺口X坐标 # 定位滑块元素sliderpage.locator(.geetest_slice)# 获取滑块的起始位置页面坐标slider_bboxslider.bounding_box()ifnotslider_bbox:print(滑块定位失败)return# 滑块起始X坐标页面坐标start_xslider_bbox[x]slider_bbox[width]//2start_yslider_bbox[y]slider_bbox[height]//2# 计算滑动总距离减去校准值避免定位误差total_distancegap_x-start_x-5# 校准值可根据实际情况调整iftotal_distance0:print(滑动距离异常)return# 模拟鼠标按下滑块按下后不释放page.mouse.move(start_x,start_y)page.wait_for_timeout(random.randint(50,150))# 按下前轻微停顿模拟人类思考page.mouse.down()page.wait_for_timeout(random.randint(30,80))# 按下后停顿模拟人类发力准备# 分阶段滑动加速→匀速→减速# 加速阶段移动总距离的30%速度逐渐加快accelerate_distanceint(total_distance*0.3)foriinrange(accelerate_distance):# 速度逐渐增加加入轻微横向波动speedrandom.uniform(1.5,3.5)i*0.02xstart_xi# 轻微纵向波动模拟人类操作的不稳定性ystart_yrandom.randint(-2,2)page.mouse.move(x,y,steps1)page.wait_for_timeout(int(10/speed))# 匀速阶段移动总距离的50%速度保持稳定uniform_distanceint(total_distance*0.5)foriinrange(uniform_distance):speedrandom.uniform(2.5,3.5)xstart_xaccelerate_distancei ystart_yrandom.randint(-2,2)page.mouse.move(x,y,steps1)page.wait_for_timeout(int(10/speed))# 减速阶段移动剩余距离速度逐渐减慢decelerate_distancetotal_distance-accelerate_distance-uniform_distanceforiinrange(decelerate_distance):speedrandom.uniform(1.0,2.5)-i*0.03ifspeed0.5:speed0.5xstart_xaccelerate_distanceuniform_distancei ystart_yrandom.randint(-2,2)page.mouse.move(x,y,steps1)page.wait_for_timeout(int(10/speed))# 释放鼠标完成滑动page.wait_for_timeout(random.randint(30,80))page.mouse.up()print(滑动模拟完成等待验证结果)# 等待验证结果可根据页面提示调整等待时间page.wait_for_timeout(2000)# 主函数整合全流程if__name____main__:withsync_playwright()asp:browserp.chromium.launch(headlessFalse)contextbrowser.new_context()pagecontext.new_page()page.goto(https://www.geetest.com/adaptive-captcha)page.wait_for_timeout(1000)page.click(.tab-item-1)page.wait_for_timeout(1000)page.click(.geetest_btn_click)page.wait_for_timeout(2000)# 1. 提取背景图bg_pathextract_geetest_bg_image(page)ifnotbg_path:browser.close()exit()# 2. 定位缺口X坐标gap_xfind_gap_position(bg_path)ifnotgap_x:browser.close()exit()# 3. 模拟拟人化滑动simulate_human_slide(page,gap_x)# 关闭浏览器browser.close()6.3 滑动模拟关键优化点提升验证成功率极验的行为轨迹校验是自动化验证的核心难点以下几个优化点能够大幅提升滑动验证的成功率避免被判定为机器操作加入随机停顿在鼠标按下前、按下后、释放前加入随机时长的停顿50-150ms模拟人类操作的思考和发力过程避免操作过于连贯。分阶段速度变化严格按照“加速→匀速→减速”的规律滑动人类拖动滑块时速度不会保持恒定而是有一个自然的加速和减速过程。轻微波动在滑动过程中加入轻微的纵向波动±2像素模拟人类操作时的手部抖动避免轨迹过于规整。速度随机化每个阶段的滑动速度都加入随机值避免每次滑动的速度完全一致进一步提升轨迹的自然度。坐标校准由于背景图可能存在缩放定位到的缺口像素坐标需要根据页面元素的实际大小进行校准避免滑动距离偏差。七、实战优化与常见问题排查7.1 整体流程优化建议在实际项目中为了提升自动化的稳定性和成功率可对上述流程进行以下优化复用浏览器实例避免每次提取背景图、滑动模拟都重新启动浏览器减少资源占用提升执行速度。增加异常重试机制当缺口定位失败、滑动验证失败时自动刷新页面、重新触发验证重试次数可设置为3-5次。参数动态调整根据不同的页面环境、背景图动态调整缺口定位参数如Canny阈值和滑动速度参数适配不同场景。环境伪装通过Playwright设置浏览器的User-Agent、语言、分辨率等信息模拟真实用户环境避免被极验检测到自动化环境。7.2 常见问题与排查方案在实战过程中除了背景图提取的问题外还可能遇到以下问题结合实际经验给出排查方案问题1滑动后验证失败提示“拖动滑块有误请重新拖动”。原因滑动轨迹不自然、缺口定位偏差、滑动速度过快/过慢。解决方案调整滑动轨迹的速度变化和波动范围重新校准缺口定位参数修正滑动距离增加停顿时间避免操作过于急促。问题2滑块定位失败bounding_box()返回None。原因滑块元素未加载完成或者元素选择器错误。解决方案延长等待时间确保滑块加载完成通过浏览器开发者工具检查滑块的CSS类名是否正确。问题3多次滑动均失败被判定为机器操作。原因环境被检测到如Headless模式、滑动轨迹过于固定。解决方案将headless改为False使用可视浏览器增加滑动参数的随机性避免每次滑动轨迹完全一致设置浏览器的真实分辨率和User-Agent。问题4背景图下载后无法定位缺口。原因图片下载不完整、图片格式异常。解决方案检查图片下载是否完整打开图片确认在requests.get中添加超时处理和请求头确保下载的图片完整可用。八、总结与拓展本文以极验滑动验证码为实战案例完整讲解了滑动验证码自动化的核心流程——背景图提取、缺口定位、Playwright拟人化滑动模拟全程聚焦自主实现不依赖第三方解码平台和违规API兼顾技术实用性与合规性。滑动验证码自动化的核心难点不在于代码的编写而在于对极验防护机制的理解和行为轨迹的模拟。通过本文的学习开发者可以掌握如何从动态页面中提取核心图片资源、如何通过图像处理技术自主定位缺口、如何模拟人类的自然滑动轨迹从而实现滑动验证码的自动化突破。拓展方向多场景适配将本文的代码适配到不同网站的极验滑动验证码调整元素选择器、定位参数和滑动参数实现通用化。轨迹优化结合机器学习分析人类滑动轨迹的特征生成更接近人类的滑动轨迹进一步提升验证成功率。多验证类型适配极验还有点选、图文验证等类型可基于本文的思路拓展其他类型验证码的自动化实现。需要注意的是滑动验证码自动化技术仅用于合法的自动化测试、业务流程自动化等场景严禁用于爬虫攻击、恶意破解等违规违法活动。开发者应遵守网站的 robots 协议和相关法律法规尊重网站的安全防护机制共同维护网络环境的安全与稳定。关注我了解更多爬虫知识和实战经验~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2491057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…