Selenium Cookie复用登录态实战指南

news2026/5/22 2:12:59
1. 这不是“绕过”而是“复用登录态”——先厘清一个关键认知误区很多人看到“Selenium通过cookie绕过验证码”这个标题第一反应是又一个黑灰产技巧能省事就上但我在电商、金融、SaaS类项目里带团队做自动化测试近八年亲手写过200个Web端UI回归脚本踩过无数坑之后最想说的一句话是你根本不是在“绕过”验证码而是在规避“重复触发登录流程”带来的不可控干扰。验证码本身是安全机制它的存在合理且必要真正需要被优化的是测试过程中因反复走完整登录链路输入账号→输密码→点发送→等图片加载→人工识别/OCR调用→填验证码→提交→等待跳转所引入的三大硬伤稳定性差图片加载失败、接口超时、耗时长单次登录平均8~15秒、可维护性低验证码逻辑一变整套登录脚本全挂。关键词“Selenium自动化测试”“cookie”“验证码”背后的真实诉求其实是如何让UI自动化脚本像真实用户一样在已登录状态下稳定、高效地执行后续业务操作同时完全避开登录环节中那个最不稳定的验证码节点。这不是钻系统空子而是对测试生命周期的合理分层——把“登录态获取”作为前置准备动作把“业务逻辑验证”作为核心执行动作。我经手的3个银行理财后台项目、5个跨境电商ERP系统全部采用这种模式由专人每天凌晨用真实账号手动登录一次导出有效cookie注入到CI流水线的Selenium容器中整个回归测试集执行时间从原来的47分钟压缩到11分钟失败率从18%降到0.7%。这不是取巧是工程化落地的必然选择。如果你还在为“每次跑脚本都要手动填验证码”而烦躁或者正被“验证码图片加载超时导致整个测试套件中断”折磨那接下来的内容就是你真正需要的实操路径。2. 为什么cookie能“接管”登录态——从HTTP协议底层看会话延续机制要让cookie在Selenium中真正起作用必须理解它到底在替你做什么。很多人以为“把浏览器里复制的cookie字符串塞进driver里就完事了”结果发现页面还是跳登录页——问题就出在对cookie本质的误读上。Cookie不是万能钥匙它是一张有严格时效、作用域和校验规则的“临时通行证”。我们来拆解它在HTTP会话中的真实角色。2.1 Cookie的本质服务端签发的“状态委托书”当你在浏览器中完成一次成功登录服务端比如Spring Boot后端或Node.js API会做两件事在服务端内存或Redis中创建一个Session对象生成唯一ID如session:abc123并存储用户身份信息UID、权限列表、登录时间等通过HTTP响应头Set-Cookie向浏览器下发一个或多个Cookie字段典型格式为Set-Cookie: JSESSIONIDabc123; Path/; HttpOnly; Secure; Max-Age1800 Set-Cookie: tokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...; Domain.example.com; Path/; ExpiresWed, 01 Jan 2025 00:00:00 GMT; HttpOnly; Secure注意这里的关键参数JSESSIONID是Java Web容器Tomcat默认的会话标识符对应服务端的Session对象token是JWT或自定义加密串服务端可直接解析验证无需查Session存储Domain.example.com表示该Cookie仅对example.com及其子域名如admin.example.com、api.example.com生效Path/表示请求URL路径以/开头时才携带此CookieHttpOnly意味着JavaScript无法读取防XSS窃取但Selenium的add_cookie()方法可以绕过此限制直接注入Secure要求只在HTTPS连接中传输本地调试时若用HTTP需临时关闭此标志生产环境严禁Max-Age1800或Expires定义了Cookie有效期1800秒30分钟超时后服务端会拒绝该凭证。提示Selenium的add_cookie()方法只能添加name、value、domain、path、expiry时间戳秒数这5个字段HttpOnly和Secure属性无法通过API设置但不影响功能——因为Selenium驱动的是真实浏览器内核它注入的Cookie会被当作“浏览器原生Cookie”处理服务端校验时只认name/value/domain/path/expiry组合是否匹配其Session存储。2.2 Selenium中cookie注入的三个致命陷阱我见过太多人卡在这一步明明复制了浏览器里的Cookieadd_cookie()也执行成功但刷新页面还是跳登录页。原因几乎都掉进以下三个坑陷阱一domain字段必须精确匹配且不能带协议或端口错误写法{name: JSESSIONID, value: abc123, domain: https://admin.example.com:8080}正确写法{name: JSESSIONID, value: abc123, domain: .example.com}为什么因为Cookie的Domain匹配规则是“后缀匹配”.example.com能覆盖www.example.com、admin.example.com、api.example.com而admin.example.com只能匹配该子域名无法用于www.example.com。更关键的是domain值绝对不能包含http://、https://、端口号如:8080或路径如/login否则Selenium会静默忽略该Cookie。实测中约65%的注入失败案例源于此。陷阱二path字段必须与目标页面URL路径前缀一致假设你的测试页面是https://admin.example.com/dashboard而你注入的Cookiepath/完全没问题但如果你注入的是path/login那么访问/dashboard时浏览器根本不会带上这个Cookie。很多前端框架如Vue Router的history模式会让所有路由都映射到/此时path/是安全选择但如果是传统多页面应用MPA务必确认目标页面的实际URL路径结构。陷阱三expiry时间戳必须是秒级Unix时间戳且必须晚于当前时间Selenium要求expiry字段是从1970年1月1日00:00:00 UTC到指定时间的秒数不是毫秒也不是字符串日期。常见错误直接用new Date().getTime()返回毫秒→ 导致expiry变成几万亿浏览器认为已过期用Date.now()→ 同样是毫秒用2025-01-01T00:00:00Z→ 字符串不被识别。正确做法Python示例import time cookie_dict { name: JSESSIONID, value: abc123, domain: .example.com, path: /, expiry: int(time.time()) 1800 # 当前时间1800秒30分钟 } driver.add_cookie(cookie_dict)2.3 实测对比三种登录态维持方式的稳定性数据为了验证不同方案在真实CI环境中的表现我在同一套电商后台测试套件共87个用例上连续运行7天统计每种方式的平均单次执行耗时与失败率方式描述平均耗时失败率主要失败原因完整登录流程Selenium模拟输入账号、密码、识别验证码、点击登录12.4分钟23.6%验证码图片加载超时41%、OCR识别错误33%、网络抖动导致表单提交失败26%LocalStorage/SessionStorage注入将登录后JS生成的token存入localStorage再注入8.2分钟15.8%前端加密逻辑更新后token失效52%、storage键名变更未同步31%、跨域iframe中storage不可见17%Cookie注入本文方案手动登录后导出Cookie注入Selenium driver3.7分钟0.9%Cookie过期未及时更新89%、domain配置错误11%数据很说明问题Cookie方案失败率最低且失败原因高度可控基本就是运维层面的过期管理问题。这印证了一个经验越靠近HTTP协议底层的状态管理越稳定越依赖前端JavaScript运行时的状态越脆弱。3. 从手动登录到自动化注入一套可落地的四步工作流光懂原理不够得有能立刻上手的步骤。我给团队制定的标准流程是“四步法”已在12个项目中验证平均首次配置成功率92%且支持快速故障定位。下面以Python Selenium为例全程使用ChromeDriver所有代码均可直接复制运行需替换域名和cookie值。3.1 第一步安全获取有效Cookie——手动登录后精准导出别用浏览器开发者工具Network面板里随便点一个请求的Request Headers去复制Cookie那是错的。正确姿势是用Chrome浏览器打开目标系统登录页如https://admin.example.com/login输入账号密码完成验证码识别成功登录进入首页如https://admin.example.com/dashboard按F12打开DevTools切换到Application选项卡 → 左侧Cookies→ 点击当前域名如admin.example.com重点来了右侧列表会显示所有当前域名下的Cookie。你需要勾选所有Name列包含session、token、JSESSIONID、auth、user等关键词的条目通常3~5个然后右键 →Copy→Copy value不是Copy as cURL。将复制的JSON字符串粘贴到文本编辑器手动整理成标准字典列表。例如你复制到的是[ {name:JSESSIONID,value:abc123def456,domain:.example.com,path:/,expires:1735689600,httpOnly:true,secure:true,sameSite:Lax}, {name:XSRF-TOKEN,value:xyz789,domain:.example.com,path:/,expires:1735689600,httpOnly:false,secure:true,sameSite:Lax} ]→ 删除httpOnly、secure、sameSite字段Selenium不认将expires转换为秒级时间戳上面例子中1735689600已是秒级可直接用最终得到valid_cookies [ { name: JSESSIONID, value: abc123def456, domain: .example.com, path: /, expiry: 1735689600 }, { name: XSRF-TOKEN, value: xyz789, domain: .example.com, path: /, expiry: 1735689600 } ]注意如果目标系统使用JWT token且放在Authorization请求头中而非Cookie则此方案不适用需改用driver.execute_cdp_cmd(Network.setExtraHTTPHeaders, {...})注入请求头。但90%的传统Web系统仍依赖Cookie维持会话。3.2 第二步注入前的环境预检——三道防线确保万无一失在调用add_cookie()之前必须做三项检查缺一不可。这是我写在每个测试脚本开头的固定模板from selenium import webdriver from selenium.webdriver.chrome.options import Options def setup_driver_with_cookies(): options Options() options.add_argument(--no-sandbox) options.add_argument(--disable-dev-shm-usage) # 关键必须先访问目标域名否则add_cookie会失败 driver webdriver.Chrome(optionsoptions) driver.get(https://admin.example.com) # 访问任意同域页面触发domain初始化 # 防线一检查当前URL域名是否与cookie domain匹配 current_domain driver.current_url.split(//)[1].split(/)[0] expected_domain .example.com if not current_domain.endswith(expected_domain.replace(., )): raise RuntimeError(f当前域名{current_domain}与cookie domain {expected_domain}不匹配) # 防线二检查driver是否已加载cookies避免重复注入 existing_cookies driver.get_cookies() if len(existing_cookies) 0: print(f警告driver已存在{len(existing_cookies)}个cookies将先清除) driver.delete_all_cookies() # 防线三验证cookie列表非空且domain字段正确 if not valid_cookies: raise ValueError(cookie列表为空请检查第一步导出是否成功) for cookie in valid_cookies: if domain not in cookie or not cookie[domain].startswith(.): raise ValueError(fcookie domain格式错误{cookie}) # 执行注入 for cookie in valid_cookies: try: driver.add_cookie(cookie) print(f成功注入cookie: {cookie[name]}) except Exception as e: print(f注入cookie {cookie[name]} 失败{e}) raise return driver # 使用 driver setup_driver_with_cookies() driver.get(https://admin.example.com/dashboard) # 此时应直接进入首页不跳登录页为什么必须先driver.get(https://admin.example.com)因为Selenium的add_cookie()方法要求必须在driver已访问过目标域名的页面后才能注入该域名的Cookie。如果你直接add_cookie()再get()会报Unable to set Cookie错误。这是Selenium的设计限制也是新手最高频的报错原因。3.3 第三步注入后的有效性验证——三重断言确保登录态真实可用注入完成不等于成功。必须立即验证登录态是否真正生效我设计了三重断言覆盖前端、后端、业务三个层面def validate_login_state(driver): # 断言一前端页面元素可见最基础 try: welcome_text driver.find_element(css selector, header .welcome-user).text assert 欢迎 in welcome_text or Dashboard in driver.title, 前端欢迎文字未出现 print(✅ 前端登录态验证通过欢迎文字可见) except: print(❌ 前端登录态验证失败未找到欢迎元素) return False # 断言二后端API返回正常关键 # 利用Chrome DevTools Protocol (CDP) 拦截网络请求 driver.execute_cdp_cmd(Network.enable, {}) # 访问一个需登录态的API如用户信息接口 driver.get(https://admin.example.com/api/v1/user/profile) # 获取最后一条响应 logs driver.get_log(performance) api_response None for log in logs: message json.loads(log[message])[message] if message[method] Network.responseReceived: if api/v1/user/profile in message[params][response][url]: api_response message[params][response] break if not api_response or api_response[status] ! 200: print(❌ 后端登录态验证失败API返回非200状态码) return False print(✅ 后端登录态验证通过API返回200) # 断言三业务操作可执行终极验证 try: # 尝试点击一个只有登录用户才能看到的按钮 create_btn driver.find_element(xpath, //button[contains(text(), 新建订单)]) create_btn.click() # 检查弹窗是否出现证明权限正常 modal driver.find_element(css selector, .order-create-modal) assert modal.is_displayed(), 新建订单弹窗未显示 print(✅ 业务登录态验证通过可执行核心操作) except Exception as e: print(f❌ 业务登录态验证失败{e}) return False return True # 调用 if not validate_login_state(driver): raise RuntimeError(登录态验证失败停止执行后续测试)这套验证逻辑的价值在于它把“页面没跳转”这种表面现象拆解成“前端渲染OK”、“后端鉴权OK”、“业务权限OK”三个可量化的指标。我在某保险SaaS项目中就靠第三重断言发现了严重问题Cookie注入后前端显示正常但调用保单查询API时返回403 Forbidden追查发现是后端JWT校验逻辑更新了但前端Cookie里的token未同步刷新——这恰恰暴露了Cookie方案的边界它只解决“会话延续”不解决“凭证过期”。3.4 第四步CI/CD集成与过期管理——让方案真正工程化手动导出Cookie显然不能进CI流水线。我们的标准做法是建立独立的“登录态维护Job”在Jenkins/GitLab CI中每天凌晨2点触发一个专用任务用一台保留登录态的专用机器Docker容器执行一次真实登录将生成的Cookie JSON保存到共享存储如NFS、MinIO或数据库测试Job启动时自动拉取每个Selenium测试Job在before_script中从共享存储下载最新Cookie文件并注入driver过期监控告警在Cookie JSON中增加generated_at时间戳测试脚本启动时检查expiry - generated_at 300剩余有效期少于5分钟若成立则抛出CookieExpiredError并触发告警企业微信/钉钉机器人降级方案当Cookie过期告警触发时自动切换到备用方案——调用内部提供的“免验证码登录API”仅限测试环境该API由后端提供输入测试账号密码后直接返回有效Cookie不经过前端验证码流程。这套机制让整个流程完全无人值守。某客户项目曾连续运行142天未因登录态问题中断测试直到第143天因网络波动导致登录Job失败告警5分钟内被运维响应修复。这才是自动化测试该有的样子人只管规则和异常机器负责执行和反馈。4. 那些没人告诉你的实战细节与避坑指南纸上得来终觉浅绝知此事要躬行。我把过去八年踩过的、文档里找不到的、同事问爆的21个具体问题浓缩成这份“血泪清单”。每一条都来自真实战场建议打印出来贴在显示器边框上。4.1 关于Cookie来源哪些情况绝对不能手动复制单点登录SSO系统如公司统一用Okta、Azure AD登录你从admin.example.com页面复制的Cookie很可能只是应用层的Session ID真正的身份凭证在okta.com或login.microsoftonline.com域名下。此时必须去SSO提供商的控制台用管理员权限生成长期有效的测试Token再注入到目标域名。前后端分离架构中的JWT Header如果前端Vue/React应用把token存在localStorage并通过Authorization: Bearer xxx头发送那么document.cookie里可能根本没东西。此时应放弃Cookie方案改用driver.execute_cdp_cmd(Network.setExtraHTTPHeaders, {headers: {Authorization: Bearer xxx}})。动态域名场景某些SaaS系统为每个租户分配子域名如tenant123.saas.com而Cookie的domain是.saas.com。这时手动复制的Cookie在tenant123.saas.com下有效但在tenant456.saas.com下无效。解决方案是在测试脚本中动态拼接domain字段f.{tenant_id}.saas.com。4.2 关于Selenium版本与浏览器兼容性一个隐藏巨坑Selenium 4.0 引入了WebDriver BiDi双向协议对Cookie操作有重大影响。实测发现Chrome 115 Selenium 4.11add_cookie()在driver.get()之后调用完全正常Chrome 110~114 Selenium 4.8~4.10必须在driver.get()之前调用add_cookie()否则静默失败Firefox geckodriver对domain字段更严格.example.com必须写成example.com去掉开头的点否则注入失败。我的应对策略是在setup_driver_with_cookies()函数开头强制检测浏览器版本并打补丁browser_version driver.capabilities[browserVersion] if chrome in driver.capabilities[browserName].lower(): version_num int(browser_version.split(.)[0]) if version_num 115: # 正常流程先get再add driver.get(target_url) for cookie in cookies: driver.add_cookie(cookie) else: # 兼容旧版先add再get for cookie in cookies: driver.add_cookie(cookie) driver.get(target_url)4.3 关于多窗口/多标签页Cookie不是全局广播的这是最容易被忽视的细节。Selenium的add_cookie()只对当前激活的窗口window handle生效。如果你的脚本中执行了driver.switch_to.new_window(tab)或driver.execute_script(window.open())新打开的标签页不会自动继承原窗口的Cookie必须在新窗口中再次调用add_cookie()。验证方法在新标签页中执行print(driver.get_cookies())你会发现列表为空。解决方案封装一个inject_cookies_to_all_windows(driver, cookies)函数在每次切换窗口后调用def inject_cookies_to_all_windows(driver, cookies): original_handle driver.current_window_handle for handle in driver.window_handles: driver.switch_to.window(handle) driver.delete_all_cookies() for cookie in cookies: driver.add_cookie(cookie) driver.switch_to.window(original_handle)4.4 关于Headless模式无头浏览器的特殊限制在CI环境中我们99%用--headlessnew模式运行Chrome。但要注意Headless模式下driver.get_cookies()返回的Cookie列表可能不包含HttpOnly字段的Cookie即使它们实际生效这会导致你误判“注入失败”更隐蔽的问题是某些网站的反爬JS会检测navigator.webdriver属性Headless Chrome默认为true可能触发风控导致Cookie被服务端拒绝。我的Fix方案options.add_argument(--headlessnew) options.add_argument(--disable-blink-featuresAutomationControlled) # 关键覆盖webdriver属性 options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_experimental_option(useAutomationExtension, False) driver.execute_cdp_cmd(Page.addScriptToEvaluateOnNewDocument, { source: Object.defineProperty(navigator, webdriver, { get: () undefined }) })4.5 最后一个忠告永远不要在生产环境用此方案我见过最危险的操作是某位同事把测试环境的Cookie注入脚本连domain都没改直接扔到生产环境的监控脚本里跑。结果因为生产domain.prod.com测试domain.staging.com注入失败脚本崩溃更糟的是他用了driver.delete_all_cookies()清掉了生产环境浏览器里真实的用户Cookie导致正在用系统的客户集体登出。所以我的团队守则第一条就是所有涉及Cookie注入的代码必须强制校验环境变量import os ENV os.getenv(ENVIRONMENT, test) # 从CI环境变量读取 if ENV prod: raise PermissionError(禁止在生产环境执行Cookie注入操作) assert ENV in [test, staging], f不支持的环境{ENV}这套方案不是银弹但它把UI自动化测试中最不可控的一环变成了可预测、可监控、可回滚的标准化流程。当你下次再被验证码折磨时记住你不是在对抗系统而是在用更聪明的方式与它协作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2633320.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…