闲鱼客户端三重动态签名机制解析:x-sign、x-mini-wua与x-umt

news2026/5/21 13:00:51
1. 这不是“爬虫教程”而是一次对闲鱼客户端通信机制的解剖式复盘你有没有遇到过这样的情况用 Python 写了个闲鱼商品监控脚本本地跑得好好的一上服务器就频繁 403或者用 Postman 模拟请求Headers 里连 x-sign、x-mini-wua、x-umt 都照抄了结果还是返回 {code:40001,msg:非法请求}我试过三次——第一次以为是时间戳没对齐第二次怀疑是 User-Agent 被识别第三次干脆把整个抓包请求原封不动 replay依然失败。直到我把闲鱼 Android 12.12.10 版本的 APK 拖进 Jadx从 com.taobao.idlefish.network 包一路跟到 com.taobao.idlefish.security才真正意识到这不是接口鉴权问题而是闲鱼在用一套设备级动态签名体系把“你是谁”和“你从哪来”这两个问题压缩进了三个看似普通的 HTTP Header 字段里。这三个字段——x-sign、x-mini-wua、x-umt——表面看是字符串实则是闲鱼客户端安全防护的三道闸门x-sign 是当前请求的实时签名依赖设备指纹业务参数密钥x-mini-wua 是轻量级用户行为摘要由小程序运行时环境生成x-umt 则是设备唯一性标识的加密封装与系统属性、硬件信息强绑定。它们不单独生效而是构成一个签名链闭环服务端会校验 x-umt 的合法性再用它解密出设备密钥再去验证 x-sign 的签名结果最后比对 x-mini-wua 中的行为熵值是否在合理区间。这解释了为什么单纯复制 Headers 行不通——你复制的是“结果”但服务端要验证的是“生成过程”。这篇文章面向的不是想绕过风控的黑灰产从业者而是真正想做合规数据对接、多端一致性测试、或客户端安全加固研究的工程师。如果你正在开发闲鱼小程序插件、做闲鱼开放平台的 ISV 接入、或是负责 App 安全审计那么理解这三者的生成逻辑比写一百个重试逻辑都管用。全文不提供任何现成的“万能 sign 生成器”而是带你走完一次完整的逆向推演路径从 APK 反编译定位关键类到 JNI 层追踪 native 签名函数再到多设备环境下验证签名稳定性最后给出可落地的多设备请求调度方案。所有代码、命令、配置均基于真实环境Android 12.12.10 iOS 12.8.3 闲鱼开放平台 v2.3.1你可以直接对照调试。提示本文所有分析均基于公开可获取的闲鱼官方客户端版本所有操作均在本地沙箱环境完成不涉及任何服务端漏洞利用、密钥硬编码或自动化攻击行为。文中提到的工具Jadx、Frida、objdump均为开发者常用逆向辅助工具使用目的仅限于理解客户端通信机制。2. x-sign不是哈希而是带设备上下文的动态签名2.1 为什么 MD5/SHA256 校验在这里完全失效很多初学者看到 x-sign 是一串 32 位小写字母数字组合第一反应就是“MD5 加密”。我最初也这么想于是把请求体、URL 参数、时间戳拼在一起用各种哈希方式试了 17 种组合全错。直到我在 Jadx 中搜索 “x-sign” 字符串定位到com.taobao.idlefish.network.sign.SignGenerator类点开generateSign()方法第一行代码就让我停住了String str this.mDeviceFingerprintProvider.getFingerprint();这个getFingerprint()返回的不是设备 IMEI 或 MAC 地址——那是明令禁止采集的敏感字段——而是一个由12 项系统属性 7 类运行时状态 3 个随机扰动因子组成的复合指纹。我在真机上打印过它的原始结构已脱敏{ os: android, os_version: 13, brand: Xiaomi, model: 2201122C, cpu_abi: arm64-v8a, screen_density: 2.75, network_type: WIFI, app_version: 12.12.10, build_time: 1698765432, process_id: 12345, thread_id: 67890, random_seed: 847291 }注意random_seed字段——它不是固定值每次 App 启动时由SecureRandom生成并参与后续所有签名计算。这意味着同一台手机重启 App 后生成的 x-sign 必然不同。这直接否定了“缓存 sign 复用”的思路。2.2 真正的签名流程三阶段混合运算继续跟踪SignGenerator.generateSign()发现它调用了NativeSignHelper.nativeSign()这是一个 JNI 方法。用objdump -d libsecurity.so | grep nativeSign定位到符号地址后结合 Frida Hook我还原出其核心逻辑伪代码// 阶段一设备指纹预处理 char* fp_hash sha256(device_fingerprint_json); // 32字节二进制 char* key_seed xor(fp_hash, app_secret_key); // app_secret_key 来自 assets/config.json // 阶段二业务参数标准化 char* params_str sort_and_join(params_map); // 按 key 字典序拼接 k1v1k2v2 char* param_hash md5(params_str); // 16字节二进制 // 阶段三动态混合签名 char* mixed concat(key_seed, param_hash, timestamp_ms); char* final_sign hex(sha256(mixed)); // 小写32位关键点在于app_secret_key并非硬编码在 so 文件里而是从assets/config.json动态加载且该文件本身被 AES-128-CBC 加密密钥由设备 ID 衍生。我在小米 13 和华为 Mate 50 上分别提取 config.json解密后得到的secret_key完全不同——这说明闲鱼实现了设备级密钥隔离每台设备拥有独立签名密钥即使 so 文件被逆向也无法跨设备伪造。注意timestamp_ms并非当前毫秒时间而是服务端下发的server_time与本地时钟差值校准后的结果。闲鱼客户端每 15 分钟主动同步一次时间误差控制在 ±200ms 内。若本地时间偏差过大x-sign 直接失效。2.3 实操验证用 Frida 动态劫持签名生成链为了验证上述逻辑我在一台未 Root 的小米 13 上部署 Frida 脚本需 Magisk Hide 配合Java.perform(function () { var SignGenerator Java.use(com.taobao.idlefish.network.sign.SignGenerator); SignGenerator.generateSign.implementation function (params, timestamp) { console.log([] Intercepted sign generation); console.log( Params:, params.toString()); console.log( Timestamp:, timestamp); // 调用原方法获取真实 sign var realSign this.generateSign(params, timestamp); console.log( Real x-sign:, realSign); return realSign; }; });启动闲鱼 App 后打开商品详情页Frida 控制台立即输出[] Intercepted sign generation Params: {item_id:682349123456789,seller_id:123456789} Timestamp: 1698765432123 Real x-sign: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08此时我手动构造相同参数的请求用 Python 计算sha256(item_id682349123456789seller_id123456789)结果与 realSign 完全不匹配——印证了签名必然掺入了设备指纹和时间校准因子。3. x-mini-wua小程序运行时的行为水印3.1 它不是“User Agent”而是“行为指纹”很多人误以为 x-mini-wua 是小程序版的 User-Agent其实完全相反。我在 iOS 和 Android 两端同时抓包发现同一个闲鱼账号在两个平台打开同一款小程序x-mini-wua 字段长度一致都是 88 字符但内容完全不同。进一步对比发现Android 端的字符串以A开头iOS 端以I开头中间部分则随小程序页面跳转而实时变化。通过 Jadx 搜索x-mini-wua定位到com.taobao.idlefish.miniapp.wua.WuaGenerator。其核心方法generateWua()的逻辑非常精巧public String generateWua() { // 1. 获取当前小程序实例ID每个小程序进程唯一 String instanceId MiniAppManager.getCurrentInstanceId(); // 2. 采集最近3次用户交互事件点击/滑动/输入 ListInteractionEvent events EventTracker.getLastInteractions(3); // 3. 计算行为熵值基于事件类型、坐标、时间间隔的加权哈希 double entropy calculateEntropy(events); // 4. 混合设备指纹片段 时间戳 熵值生成最终 wua return encodeWua(instanceId, entropy, System.currentTimeMillis()); }这里的关键是calculateEntropy()。它不记录具体事件内容如“点了哪个按钮”而是统计事件分布特征比如三次点击的坐标标准差、两次滑动的时间间隔方差、输入框聚焦与失焦的时长比。这些统计值被映射为 0~1 的浮点数再参与哈希运算。这意味着即使你自动化点击同一位置只要操作节奏毫秒级与真人存在统计学差异entropy 值就会偏移导致 x-mini-wua 变化。3.2 为什么它能防“无头浏览器”自动化我曾用 Puppeteer 启动 Chrome 无头模式注入闲鱼小程序 JS SDK尝试模拟点击。虽然 DOM 操作成功但服务端始终返回{code:40001,msg:wua invalid}。用 Frida HookWuaGenerator.generateWua()后发现无头环境下的entropy值稳定在0.000123几乎为零而真机实测值在0.42~0.87之间波动。原因在于无头浏览器无法模拟真实的触摸事件物理特性。真机点击包含触摸压力微变化Android MotionEvent.getPressure()指尖接触面积抖动getTouchMajor()/getTouchMinor()滑动时的加速度曲线getXVelocity()/getYVelocity()而 Puppeteer 的page.click()只是触发 DOM 事件缺少底层传感器数据。闲鱼的calculateEntropy()正是通过检测这些缺失维度将自动化流量精准识别出来。3.3 多设备协同时的 wua 同步策略在 ISV 开发场景中常需让多个设备如门店平板、员工手机共用一个小程序账号。这时若每个设备独立生成 wua服务端会认为“同一账号在多地高频操作”触发风控。闲鱼的解决方案是wua 生成时强制绑定主设备指纹。当账号首次登录某设备时客户端会上传该设备的umt到服务端并标记为“主设备”。后续其他设备生成 wua 时instanceId不再用本地值而是从服务端拉取主设备的umt衍生值。我在两台安卓手机上验证手机 A 登录后手机 B 登录同一账号B 生成的 wua 前 12 位与 A 完全一致——这就是主设备指纹同步的证据。提示此同步机制仅对“同一账号、同一 App 版本”生效。若手机 A 运行闲鱼 12.12.10手机 B 运行 12.11.0则 wua 无法同步服务端会按独立设备处理。4. x-umt设备唯一性标识的加密封装体4.1 它不是 Device ID而是“设备身份证书”x-umt 字段长度固定为 44 字符Base64 编码解码后是 32 字节二进制数据。很多人尝试用UUID.randomUUID()生成假 umt结果全部被拒。直到我在com.taobao.idlefish.device.UmtProvider类中看到这段注释/** * UMT (Unique Machine Token) is NOT a device identifier. * Its an encrypted certificate containing: * - Device hardware binding proof (signed by TA) * - App installation lifecycle state * - Runtime integrity check result * Generated only once per app install, and bound to TEE. */关键点来了“bound to TEE”可信执行环境。这意味着 x-umt 的生成必须经过手机芯片级安全模块如高通 QSEE、华为 iTrustee。普通 App 无法直接调用必须通过系统提供的KeyStoreAPI 或StrongBoxKeyStore完成。我用adb shell getprop | grep ro.boot.verifiedbootstate检查两台测试机小米 13[ro.boot.verifiedbootstate]: [green]已启用完整 Verified Boot一台降级刷机的旧机[ro.boot.verifiedbootstate]: [orange]Verified Boot 降级结果绿色状态的机器能正常生成 x-umt橙色状态的机器在首次启动闲鱼时卡在“初始化安全环境”界面——这证实了 x-umt 对设备可信状态的强依赖。4.2 解密 umt 结构三重嵌套的认证链用 Frida HookUmtProvider.getUmt()捕获原始 umt 数据32 字节再用 OpenSSL 解析echo xxx... | base64 -d | openssl asn1parse -inform DER输出显示这是一个 ASN.1 编码的 X.509 证书结构包含三层外层服务端签发的证书Issuer: CNIdleFish CA中层TEE 签发的设备证明Subject: CNQSEE-XXXXXX内层App 安装包签名哈希subjectAltName: SHA256 of APK这意味着x-umt 本质是一个由闲鱼 CA 背书的、证明“此设备可信且此 App 未被篡改”的数字证书。服务端验证时会逐层验签先用闲鱼 CA 公钥验证外层再用 TEE 公钥验证中层最后比对内层 APK 哈希是否与线上版本一致。4.3 多设备请求实战如何合法管理 umt 生命周期在企业级应用中常需管理数百台设备的闲鱼请求。直接“复用 umt”不可行违反 TEE 设计但可以合法迁移。闲鱼提供了UMT Migration API需 ISV 白名单权限流程如下设备 A源设备调用IdleFishSDK.migrateUmtToCloud()生成一次性迁移令牌migrate_token设备 B目标设备调用IdleFishSDK.restoreUmtFromCloud(migrate_token)从服务端拉取绑定的 umt服务端校验migrate_token有效期24 小时及设备 A 的在线状态我在实际项目中部署此方案为连锁二手店的 50 台收银平板统一配置闲鱼销售账号。每台平板首次启动时由店员用个人手机扫码授权触发迁移流程。实测迁移后平板生成的 x-sign 和 x-mini-wua 均能通过服务端校验且 30 天内无一次风控拦截。注意迁移操作会重置源设备的 umt即设备 A 迁移后自身将无法再生成有效签名。因此生产环境需确保“迁移即退役”。5. 多设备请求调度系统从理论到工程落地5.1 为什么不能简单“轮询设备”早期我们尝试用 5 台安卓盒子轮流发送请求每台盒子安装相同版本闲鱼 APK。结果三天后全部被限流服务端日志显示rate_limit_exceeded错误率超 92%。根本原因在于闲鱼的风控模型不是单设备维度而是“设备集群画像”维度。通过分析被限流设备的共性我发现它们有三个相同特征所有盒子使用同一厂商固件Allwinner H616系统 build.prop 中ro.build.fingerprint完全一致网络出口 IP 为同一 IDC 机房阿里云华东1这意味着服务端已将这 5 台设备识别为“同源集群”并对其整体请求频次设限。单设备 QPS 限制是 5 次/秒集群总限制却只有 8 次/秒——远低于 5×525 的理论值。5.2 真实可用的多设备架构设计我们最终采用的方案是“异构设备池 动态权重调度”核心原则是让每台设备在服务端眼中都是“不可关联的独立个体”。具体实施如下维度设备 A小米设备 B华为设备 C三星设备 DiPhone系统版本Android 13HarmonyOS 4.0One UI 5.1iOS 16.6CPU 架构arm64-v8aarm64-v8aarm64-v8aarm64网络出口移动 4G电信 5G联通宽带家庭 Wi-Fi闲鱼版本12.12.1012.12.1012.11.012.12.10iOSUMT 绑定状态独立生成独立生成独立生成独立生成关键点在于刻意制造设备差异而非追求统一。例如我们故意让三星设备使用低一版本的闲鱼 App因为服务端对旧版本的风控策略更宽松iPhone 设备只用于高价值商品查询因 iOS 签名更难模拟安卓设备处理批量上架。5.3 请求调度引擎的核心算法调度器不是简单轮询而是基于实时反馈的强化学习模型。我们定义了三个核心指标Success Rate成功率过去 100 次请求中x-sign 通过的比例Latency延迟从发出请求到收到响应的 P95 值Risk Score风险分服务端返回的x-risk-scoreHeader 值0~100越高越危险调度算法伪代码def select_device(request_type): # Step 1: 过滤掉风险分 60 的设备 candidates [d for d in devices if d.risk_score 60] # Step 2: 按成功率降序但加入随机扰动防固化 candidates.sort(keylambda d: d.success_rate random.uniform(-0.05, 0.05), reverseTrue) # Step 3: 对高风险请求如批量上架优先选延迟最低的设备 if request_type batch_listing: candidates.sort(keylambda d: d.latency) return candidates[0] # 每次请求后更新设备指标 def update_metrics(device, success, latency, risk_score): device.success_rate 0.95 * device.success_rate 0.05 * (1 if success else 0) device.latency 0.9 * device.latency 0.1 * latency device.risk_score 0.7 * device.risk_score 0.3 * risk_score上线后集群整体成功率从 38% 提升至 92%平均延迟降低 41%。更重要的是单设备被限流的概率下降了 97%——因为调度器自动规避了高风险设备让它们有足够时间“冷却”。5.4 工程化部署细节Docker udev 设备透传为便于运维我们将每台安卓设备接入 Ubuntu 服务器通过adb connect管理。但直接用 adb 会丢失 USB 设备的硬件特征如序列号导致 x-umt 生成异常。解决方案是用 udev 规则将 USB 设备直通给 Docker 容器。在/etc/udev/rules.d/51-android.rules中添加SUBSYSTEMusb, ATTR{idVendor}2717, ATTR{idProduct}ff68, MODE0666, GROUPplugdev, SYMLINKandroid_adb_%p然后启动容器时挂载docker run -it \ --device/dev/android_adb_1-1:/dev/android_adb \ -v /path/to/adbkey:/root/.android/adbkey \ idlefish-scheduler:1.2容器内通过adb -s android_adb_1-1 shell getprop ro.serialno可正确读取设备序列号确保 x-umt 生成环境与真机一致。6. 避坑指南那些文档里不会写的实战教训6.1 时间同步误差±200ms 是生死线闲鱼服务端对时间戳校验极其严格。我们在测试中发现当设备本地时间比 NTP 服务器快 210ms 时x-sign 开始出现 15% 的失败率快 300ms 时失败率达 100%。根本原因是nativeSign()函数内部做了硬性校验if (abs(local_time - server_time) 200) { return INVALID_TIMESTAMP; }解决方案不是“校准时间”而是让客户端主动向服务端请求校准值。闲鱼 SDK 提供IdleFishSDK.getServerTime()方法返回精确到毫秒的服务端时间。我们在所有设备上部署定时任务每 5 分钟调用一次将结果写入本地缓存签名时优先使用该缓存值。教训不要依赖System.currentTimeMillis()。我们曾因一台设备 BIOS 电池老化导致每次重启后时间回拨 2 小时连续三天请求全部失败排查了两天才发现根源。6.2 App 更新一次热更新可能让你的签名全部失效2023 年 10 月闲鱼发布 12.12.0 版本其中libsecurity.so的nativeSign()函数签名从(Ljava/lang/String;J)Ljava/lang/String;变更为(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;新增了一个app_channel参数。我们的调度系统未适配导致所有设备生成的 x-sign 全部无效。根本原因在于我们之前将 so 文件提取后静态链接到调度服务中以为“so 不变就永远可用”。但闲鱼采用了动态 so 加载机制APK 中的 so 只是 stub真正的逻辑在服务端下发的security_patch.dat中通过DexClassLoader动态加载。应对策略永远从运行中的 APK 实时提取 so 文件。我们编写了一个守护进程监听/data/app/~~/com.taobao.idlefish-*/lib/arm64/libsecurity.so路径变化一旦检测到新版本立即 pull 并更新调度服务的本地副本。6.3 iOS 设备的特殊陷阱ATS 与签名链断裂在 iPhone 上我们遇到一个诡异问题x-sign 生成正常但请求总是返回{code:40001,msg:sign verify failed}。用 Charles 抓包发现请求发出前 x-sign 字段是正确的但到达服务端时变成了乱码。最终定位到是 iOS 的 App Transport SecurityATS策略作祟。闲鱼 iOS 版启用了NSAllowsArbitraryLoadsfalse但我们的调度服务域名未在NSExceptionDomains中声明。结果系统自动对请求头做了 URL 编码x-sign 被编码为x%2Dsign服务端无法识别。解决方案在调度服务的 Info.plist 中显式声明keyNSAppTransportSecurity/key dict keyNSExceptionDomains/key dict keyidlefish-api.com/key dict keyNSIncludesSubdomains/key true/ keyNSTemporaryExceptionAllowsInsecureHTTPLoads/key false/ /dict /dict /dict最后分享一个小技巧在多设备环境中定期用adb shell dumpsys package com.taobao.idlefish | grep version检查每台设备的闲鱼版本是否一致。我们曾因一台设备自动更新到测试版12.13.0-beta导致其生成的 x-mini-wua 格式与其他设备不兼容引发集群性失败。现在我们强制所有设备禁用自动更新并用脚本每日巡检版本号。我在实际项目中踩过的最大坑是试图用一台设备的 x-umt “克隆”到其他设备。花了整整两周时间逆向 TEE 通信协议最后发现高通芯片的 QSEE 有硬件熔丝eFUSE一旦检测到 umt 被非法导出会永久锁定该设备的 TEE 功能。那台测试机至今无法再安装任何需要 TEE 的 App——这是用真金白银买来的教训尊重设备安全边界比破解它重要得多。

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