拓冰建站拓冰建站
首页 / 资讯中心 / 正文

OpenCLI 接入什么值得买(SMZDM)实战:基于浏览器 Cookie 的好价搜索适配器详解

开发工具CLI人工智能AI 应用浏览器控制GUI 自动化【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址https://gitcode.com/gh_mirrors/ope/OpenCLI点击查看免费下载本文以 OpenCLI 仓库中 SMZDM 适配器的官方文档docs/adapters/browser/smzdm.md为核心骨架系统讲解如何复用你已登录的 Chrome 会话通过opencli smzdm search命令在终端中搜索什么值得买smzdm.com的优惠好价。文章完整覆盖命令用法、运行前置条件并深入 搜索适配器源码 与 测试用例剖析其浏览器内 DOM 抓取 可信链接白名单 指标归一化的实现原理帮助你理解这类 Browser 模式适配器在 OpenCLI 中的工作方式并可直接复制命令上手使用。一、适配器概览 Browser 模式与 smzdm.com 域什么值得买SMZDM适配器在 OpenCLI 中以独立的命令集形式存在其元信息如下模式Mode Browser —— 表示该适配器属于浏览器型需要复用你本机 Chrome 中已登录的会话域Domainsmzdm.com当前命令opencli smzdm search什么值得买搜索好价。从仓库目录结构看该适配器包含两个核心文件文件作用clis/smzdm/search.js命令实现声明命令元信息、参数并通过浏览器执行页面内抓取脚本clis/smzdm/search.test.js基于 jsdom Vitest 的单元测试覆盖抓取、参数校验、URL 白名单等关键行为该适配器整体属于只读read访问命令只负责搜索并返回好价列表不涉及发帖、点赞、收藏等写操作。二、命令用法opencli smzdm search官方文档给出的完整用法如下# 快速开始搜索并返回前 5 条结果 opencli smzdm search --limit 5 # JSON 输出 opencli smzdm search -f json # Verbose 模式打印详细日志 opencli smzdm search -v从 clis/smzdm/search.js 的命令声明中可以确认该命令的完整参数契约参数类型必填默认值说明query位置参数string✅无搜索关键词limitint❌20返回结果条数取值范围1100limit的解析与校验逻辑集中在parseLimit()函数中clis/smzdm/search.js其行为要点未传时默认20数字或纯数字字符串会被接受非整数、非有限值或超出1100范围时抛出ArgumentError参数校验在发起浏览器导航之前完成——测试用例validates --limit before browser navigationclis/smzdm/search.test.js通过 mock 的page.goto验证了limit: 0、limit: 101、limit: 1e2均会抛错且不会触发任何页面跳转。一个完整可复制的实战示例# 搜索笔记本输出前 10 条好价JSON 格式 opencli smzdm search 笔记本 --limit 10 -f json # 搜索咖啡并查看详细日志 opencli smzdm search 咖啡 -v三、运行前置条件登录会话与 Browser Bridge官方文档明确列出了两项前提条件Chrome 正在运行并且已登录 smzdm.com已安装 Browser Bridge 扩展对应仓库文档 docs/guide/browser-bridge.md。3.1 为什么必须登录 ChromeSMZDM 适配器使用Strategy.COOKIE策略。从 src/registry.ts 中的Strategy枚举可以看到COOKIE表示需要登录态needs login的命令。其执行时的核心前提是复用你 Chrome 中现有的登录 Cookie——这正是 SMZDM 搜索结果页可能要求登录后才能完整展示的原因。关于策略归一化src/registry.ts 还给出了一个关键推断当命令声明COOKIE策略且带有domain时navigateBefore会被自动推导为该域的 URL例如本适配器声明了domain: www.smzdm.com意味着执行命令前会先导航到站点域确保浏览器会话处于正确的站点上下文中。3.2 Browser Bridge 的安装与验证Browser Bridge 是一个轻量的 Chrome 扩展 微守护进程组合零配置、自动启动。安装方式详见 docs/guide/browser-bridge.md方法一加载预构建 Release推荐下载最新版opencli-extension-v{version}.zip解压后打开chrome://extensions开启右上角开发者模式点击加载已解压的扩展程序选择解压后的目录。方法二加载源码目录开发者打开chrome://extensions并开启开发者模式选择仓库中的 extension/ 目录加载。安装完成后可用以下命令一键验证连通性opencli doctor # 检查扩展 守护进程连接状态该扩展在 extension/README.md 中说明了其权限用途debugger用于向 OpenCLI 控制的标签页发送 CDP 命令cookies用于读取浏览器 Cookie 以支持需要认证的适配器请求tabs/tabGroups用于管理自动化容器。四、底层原理从搜索页 URL 到结构化结果SMZDM 适配器最值得关注的是它的实现演进与抓取策略。源码头部注释clis/smzdm/search.js记载了关键背景旧版适配器使用search.smzdm.com/ajax/接口该接口现已返回 404新方案改为直接导航到https://search.smzdm.com/?chomeskeywordvb对渲染后的 DOM 进行抓取。这正是网页改版导致接口失效 → 退化为浏览器内 DOM 抓取的典型实战案例。4.1 执行调用链命令执行函数clis/smzdm/search.js的完整调用链为对关键词做encodeURIComponent编码通过parseLimit解析并校验limitpage.goto导航到搜索结果页 URLhttps://search.smzdm.com/?chomes${q}vbpage.evaluate在页面上下文中执行buildSmzdmSearchJs(limit)生成的内联抓取脚本抓取结果经过requireSearchRows校验后返回。4.2 页面内抓取脚本的关键实现buildSmzdmSearchJs()clis/smzdm/search.js生成一段在浏览器页面上下文中执行的 IIFE其核心逻辑包括DOM 选择器映射目标字段选择器结果条目容器li.feed-row-wide标题h5.feed-block-title a回退h5 a价格.z-highlight商城.z-feed-foot-r .feed-block-extras span回退.z-feed-foot-r span更新时间.z-feed-foot-r .feed-block-extras的直接文本节点交互指标归一化normalizeCountSMZDM 页面上的赞、不值、收藏、评论数常以1.2万、3、24等中文/英文单位展示。脚本通过正则(\d(?:\.\d)?)\s*([万kK]?)解析数值并按单位换算万→ ×10000k/K→ ×1000其余四舍五入取整。测试用例clis/smzdm/search.test.js验证了1.2万 → 12000的换算结果。可信 URL 白名单trustedSmzdmUrl为防止输出外部恶意链接脚本仅接受https:协议且主机名属于www.smzdm.com或post.smzdm.com的链接相对路径会基于https://www.smzdm.com解析。测试用例drops untrusted result URLs before outputclis/smzdm/search.test.js验证了https://evil.example/...这类链接会被整体过滤该条目不会出现在结果中。字段完整性保证脚本注释特别强调——每条结果都携带完整的声明的列集合当列表项缺失交互指标时默认置0、更新时间置确保任何列都不会被静默丢弃。测试用例defaults missing interaction metrics to 0 without dropping columnsclis/smzdm/search.test.js验证了这一点。4.3 输出列结构命令声明的输出列为clis/smzdm/search.jsrank, title, price, mall, updated_at, zhi_count, buzhi_count, favorite_count, comments, url各字段含义列含义rank结果序号从 1 开始title好价标题price价格文本如4015.44元需用券mall商城来源如天猫精选updated_at更新时间如05-23 00:28zhi_count值点赞数量万/k已归一化为整数buzhi_count不值数量favorite_count收藏数comments评论数url经过白名单校验的绝对链接4.4 结果封装解包与失败兜底命令返回的抓取结果可能带有 Browser Bridge 的{ session, data }封装unwrapEvaluateResultclis/smzdm/search.js 负责解包随后requireSearchRowsclis/smzdm/search.js会强制校验返回值为数组否则抛出CommandExecutionError。测试用例fails closed on malformed extraction payloadsclis/smzdm/search.test.js验证了畸形载荷一律失败关闭的兜底策略避免静默返回错误数据。五、测试验证行为如何被守护clis/smzdm/search.test.js 使用 jsdom Vitest 对抓取脚本做离线验证runBrowserScript通过dom.window.eval直接执行生成的抓取脚本共覆盖六个维度元信息声明access为read列集合与预期一致完整字段抓取价格、商城、更新时间、四项交互指标均正确提取并归一化缺失字段兜底无指标条目默认置0/空串列不丢失URL 白名单非 smzdm.com 域名的链接被整体丢弃limit 生效buildSmzdmSearchJs(2)在 5 个条目的页面上只返回 2 条且rank为[1, 2]参数预校验非法limit在浏览器导航前抛出ArgumentError。这些测试既是行为的守护也是理解适配器边界条件的绝佳示例——尤其是URL 白名单与字段缺省兜底这两项直接体现了浏览器适配器在生产环境中的可靠性设计。六、常见问题与排查建议结合源码与运行前提汇总几条实际使用中的排查思路命令报需要登录或结果为空确认 Chrome 处于运行状态、已登录 smzdm.com且登录会话有效。浏览器适配器复用的是 Chrome 的登录 Cookie未登录时搜索页内容可能不完整opencli doctor显示扩展/守护进程异常按 docs/guide/browser-bridge.md 重新加载扩展确认chrome://extensions中开发者模式已开启结果缺少价格或指标这属于正常兜底行为——当页面 DOM 未包含对应节点时指标默认置0、时间置空串但列结构保持不变返回 URL 变少非www.smzdm.com/post.smzdm.com域名的链接会被白名单过滤属于预期行为。如需在其他 Browser 模式适配器间横向对比如小红书、知乎、值得买等可参考 docs/adapters/browser/ 目录下的对应文档扩展本身的权限设计与自动化容器约定详见 extension/README.md。七、小结SMZDM 适配器是理解 OpenCLIBrowser 模式适配器的一个高质量范例它展示了一条完整的技术路径——从登录 Chrome 会话 Browser Bridge 桥接的前置条件到直接导航搜索页 页面内 DOM 抓取的实现策略再到指标归一化、URL 白名单、字段缺省兜底、畸形载荷失败关闭等可靠性设计。通过本文你不仅可以直接在终端中使用opencli smzdm search搜索好价也掌握了这类网页改版导致接口失效后改走 DOM 抓取的适配器在 OpenCLI 中的实现与测试套路可作为编写或维护同类适配器的参考。赞分享开发工具CLI人工智能AI 应用浏览器控制GUI 自动化【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址https://gitcode.com/gh_mirrors/ope/OpenCLI点击查看免费下载相关推荐OpenCLI LinkedIn Learning 适配器实战基于浏览器 Cookie 会话的课程搜索与详情读取OpenCLI LinkedIn Learning 适配器实战基于浏览器 Cookie 会话的课程搜索与详情读取 本文围绕 OpenCLI 仓库中的 link开发工具CLI人工智能AI 应用浏览器控制GUI 自动化OpenCLI GitHub 浏览器适配器实战基于登录态 Cookie 的 whoami 与 login 命令解析OpenCLI GitHub 浏览器适配器实战基于登录态 Cookie 的 whoami 与 login 命令解析 本文围绕 OpenCLI 仓库中 docs开发工具CLI人工智能AI 应用浏览器控制GUI 自动化OpenCLI Coupang 浏览器适配器实战基于登录会话的商品搜索、详情抓取与加购OpenCLI Coupang 浏览器适配器实战基于登录会话的商品搜索、详情抓取与加购 导读 本文以 OpenCLI 仓库中 Coupang 适配器文档 ht开发工具CLI人工智能AI 应用浏览器控制GUI 自动化上一篇【亲测免费】 Pentaho Data Integration (webSpoon) 项目推荐下一篇【免费下载】 RunAsTI 项目安装和配置指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门