资讯动态

OpenCLI 牛客网适配器实战指南:从热榜搜索到面试题库的命令行一体化

发布时间:2026/9/20 6:40:11 来源:尧图企业网站定制
开发工具CLI人工智能AI 应用浏览器控制GUI 自动化【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址https://gitcode.com/gh_mirrors/ope/OpenCLI点击查看免费下载导读本文面向需要在命令行中高效使用牛客网nowcoder.com的开发者和 AI Agent。OpenCLI 为牛客网提供了完整的 CLI 适配层docs/adapters/browser/nowcoder.md覆盖热搜榜单、动态流、面试经验、内推、薪资爆料、企业题库、练习进度与未读消息等 15 个命令。阅读本文后你将掌握每条命令的参数与适用场景、公开接口与登录态接口的边界、牛客内容帖content与动态帖moment两种实体的身份区分规则以及如何把列表命令返回的 ID 或 URL 安全地回传给详情命令。命令总览牛客网适配器共提供 15 条命令全部以opencli nowcoder command形式调用。按功能可分为四类CommandDescriptionopencli nowcoder hotHot search rankingopencli nowcoder trendingTrending postsopencli nowcoder topicsHot discussion topicsopencli nowcoder recommendRecommended feedopencli nowcoder creatorsTop content creators leaderboardopencli nowcoder companiesHot companies for interview prepopencli nowcoder jobsCareer category listingopencli nowcoder search querySearch content and moment posts (type: post/all; default: post)opencli nowcoder suggest querySearch suggestionsopencli nowcoder experienceInterview experience postsopencli nowcoder referralInternal referral postsopencli nowcoder salarySalary disclosure postsopencli nowcoder papersInterview question bank by company jobopencli nowcoder practiceCategorized practice questions with progressopencli nowcoder notificationsUnread message summaryopencli nowcoder detail idContent or moment detail (numeric ID, UUID, or canonical URL)使用示例以下示例覆盖了适配器的主要使用方式可直接复制运行# Hot search ranking opencli nowcoder hot --limit 10 # Search for interview experiences opencli nowcoder search bilibili --type post --limit 5 # Search suggestions opencli nowcoder suggest java # Browse interview experience posts opencli nowcoder experience --limit 10 # View a specific post detail (use the ID or URL returned by list commands) opencli nowcoder detail 912885704667987968 # Interview question bank for Java at Huawei opencli nowcoder papers --job 11002 --company 239 # Practice questions for software development opencli nowcoder practice --job 11226 --limit 10 # Hot companies for C positions opencli nowcoder companies --job 11003 # JSON output opencli nowcoder trending -f json # Verbose mode opencli nowcoder hot -v其中-f json输出结构化 JSON便于脚本与 Agent 解析-v开启详细日志--limit控制返回条数。前置条件公开命令与 Cookie 命令的边界牛客网适配器将命令划分为两种访问策略前置条件完全不同Public commandshot、trending、topics、recommend、creators、companies、jobs无需登录即可使用。从源码看这些命令的strategy为Strategy.PUBLIC且browser: false见 clis/nowcoder/hot.js、clis/nowcoder/trending.js直接通过 HTTP 拉取公开网关接口不依赖浏览器。Cookie commands其余全部命令需要 Chrome 正在运行并已登录 nowcoder.com且安装了 Browser Bridge 扩展扩展安装与桥接原理见 docs/guide 目录。为什么需要 Browser Bridge因为牛客的登录态绑定在浏览器 Cookie 中。适配器复用 AI Agent 已登录的浏览器会话通过桥接扩展在页面上下文中执行请求从而带上credentials: include的会话凭证无需单独管理账号密码。登录身份验证机制Cookiet与用户身份探针对于需要登录的命令clis/nowcoder/auth.js 实现了完整的会话检测与身份确认流程Cookie 检测检查https://www.nowcoder.com域名下是否存在非空的tCookie。源码注释明确指出牛客登录态 token 就是名为t的 Cookie而NOWCODERUID只是设备哈希不包含可读的用户 ID。用户 ID 解析由于 Cookie 中读不到数字 UID适配器在页面 DOM 中查找第一个a[href*/users/]导航链接用正则/\/users\/(\d)/提取 UID。这一选择基于导航头像链接在 DOM 顺序中位于正文推荐之前的页面结构。网关确认随后调用https://gw-c.nowcoder.com/api/sparta/user/profile/uid带 Cookie 请求校验返回的success、data.id与data.nickname。HTTP 401/403 或返回匿名结构都会被判定为未登录并抛出AuthRequiredError。命令注册通过 clis/_shared/site-auth.js 的registerSiteAuthCommands注册whoami等通用认证命令登录页指向https://www.nowcoder.com/login。因此首次使用 Cookie 命令前请确保浏览器已打开 nowcoder.com 并保持登录态若会话过期命令会明确报出requires a logged-in Nowcoder session。公开命令详解无需登录hot热搜榜单clis/nowcoder/hot.js 请求https://gw-c.nowcoder.com/api/sparta/hot-search/hot-content从data.hotQuery提取热搜词列表映射为rank、title关键词、heat热度值三列opencli nowcoder hot --limit 10trending热门帖子clis/nowcoder/trending.js 请求https://gw-c.nowcoder.com/api/sparta/hot-search/top-hot-pc从data.result映射rank、title、heathotValueFromDolphin以及id优先取uuid缺省回退到id。返回的id可直接用于detail命令opencli nowcoder trending --limit 10 opencli nowcoder trending -f json # 结构化输出companies企业热度榜clis/nowcoder/companies.js 请求https://gw-c.nowcoder.com/api/sparta/company-question/hot-company-list?jobIdjob返回rank、company、companyId。jobId通过--job传入常用取值11002Java、11003C、11200后端、11203测试、11201前端。# C 方向的热门企业 opencli nowcoder companies --job 11003topics / recommend / creators / jobstopics热议话题、recommend推荐流、creators内容创作者榜、jobs职业分类同为公开命令用法一致均支持--limit控制条数。这类命令适合在未登录环境下快速了解牛客社区当前的热点与风向。Cookie 命令详解需登录search混合内容搜索clis/nowcoder/search.js 是适配器中最复杂的命令之一向https://gw-c.nowcoder.com/api/sparta/pc/search发起 POST 请求请求体为{ query, type, page: 1, pageSize: limit }query位置参数必填搜索关键词非空校验由ArgumentError保证--type post|all搜索范围默认post。post只搜帖子all同时覆盖帖子和动态非法值会直接报错--limit返回条数取值 1–50由 clis/nowcoder/posts.js 的requirePositiveInt校验。# 搜索 bilibili 相关的面试经验仅帖子 opencli nowcoder search bilibili --type post --limit 5 # 同时搜索帖子与动态 opencli nowcoder search 字节 --type all --limit 20experience面经列表clis/nowcoder/experience.js 请求https://gw-c.nowcoder.com/api/sparta/home/tab/content固定携带tabId818、categoryType1参数支持--page1–1000与--limit1–50分页# 浏览面经流每页 10 条 opencli nowcoder experience --page 1 --limit 10papers企业真题题库clis/nowcoder/papers.js 请求https://gw-c.nowcoder.com/api/sparta/company-question/get-paper-list返回rank、title试卷名、company、practitioners练习人数四列--job岗位 ID默认11002Java常用值11003C、11200后端、11203QA、11201前端--company企业 ID例如139百度、138腾讯、239华为--limit试卷数量默认 10。# 华为 Java 真题 opencli nowcoder papers --job 11002 --company 239practice分类练习进度clis/nowcoder/practice.js 请求https://gw-c.nowcoder.com/api/sparta/intelligent/getPCIntelligentList?jobIdjob把服务端按tags分类的题目汇总为category、subject、total、done、remaining五列--job职业 ID默认11226软件常用值11227硬件、11229产品、11230金融--limit返回题目条目数默认 20。# 软件方向的练习进度 opencli nowcoder practice --job 11226 --limit 10notifications未读消息汇总clis/nowcoder/notifications.js 请求https://gw-c.nowcoder.com/api/sparta/message/pc/unread/detail将返回值拆分为 7 行system系统通知、likes点赞、comments评论、follows关注、messages私信、job_apply职位投递、total总计每行输出type与unread两列opencli nowcoder notificationsreferral / salary / suggestreferral内推帖、salary薪资爆料与experience结构类似都是分页拉取指定栏目suggest query则调用搜索建议接口用于补全关键词。关键概念content 与 moment 双实体身份模型牛客的帖子流中存在两种截然不同的实体这是使用search、experience、detail时最容易踩坑的地方。clis/nowcoder/posts.js 通过服务端返回的contentType判别器区分二者并完整映射出post_type、可回传的id、uuid、entity_id、规范url、稳定的作者字段与创建时间维度content内容帖moment动态帖contentType 判别值250实体类型874id 形态数字 ID如91288570466798796832 位十六进制 UUID规范 URLhttps://www.nowcoder.com/discuss/idhttps://www.nowcoder.com/feed/main/detail/uuid详情接口/api/sparta/detail/content-data/detail/id/api/sparta/detail/moment-data/detail/uuid时间字段createTimecreatedAt作者字段userBrief.userId/authorIduserBrief.userId/userId需要注意的身份限制原文档明确强调源码中亦有强校验content 的 UUID 只是元数据不能作为/discuss/标识符使用moment 的数字entity_id不被 moment 详情接口接受moment 的详情标识只能是 UUID。这一规则在 clis/nowcoder/posts.test.js 中有完整验证测试同时喂入 content 与 moment 混合记录断言id/uuid/entity_id/url与post_type一一对应且各详情命令只清洗各自来源的正文字段content 读richTextmoment 读content。detail 命令的智能路由clis/nowcoder/detail.js 的参数解析函数parseNowcoderPostTargetclis/nowcoder/posts.js实现了输入即路由纯数字字符串 → 判定为 content取/discuss/id32 位十六进制字符串不区分大小写统一转小写→ 判定为 moment取/feed/main/detail/uuidURL 形式 → 强制要求https:协议、无用户名密码、无端口、无 hash主机名必须为nowcoder.com或www.nowcoder.com路径必须匹配/discuss/数字或/feed/main/detail/32位uuid否则抛出ArgumentError。因此以下三种调用等价opencli nowcoder detail 912885704667987968 opencli nowcoder detail https://www.nowcoder.com/discuss/912885704667987968 opencli nowcoder detail 24e01f1d510a486b92efa795b4835669 # moment UUID同时适配器做了防御性校验tests 中明确覆盖请求返回后若详情数据中的实体类型、身份与请求目标不一致会抛出CommandExecutionError杜绝回显漂移导致的错误数据。输出字段与正文清洗search、experience、detail三命令共享同一套字段投影逻辑projectNowcoderFeed/projectNowcoderDetail。以search为例输出列包括rank、post_type、id、uuid、entity_id、url、title、author、author_id、author_url、school教育信息、content、likes、comments、views、timeISO 8601 时间戳detail额外多一列locationIP 归属地。其中content的清洗逻辑值得关注clis/nowcoder/posts.js剥离script/style等不安全标签将pre代码块整体保护后再清洗保留缩进与换行img图片替换为alt文本br、块级元素转换为换行li转换为列表符号td转为制表符完成 HTML 实体解码amp;、#x…;、#…;等。测试用例clis/nowcoder/posts.test.js验证了包含h2、有序列表、pre、图片alt与script的富文本最终被清洗为结构清晰、可被 LLM 直接消费的纯文本。错误处理与排障速查适配器的错误处理非常工程化见 clis/nowcoder/posts.js 与 clis/nowcoder/posts.test.js场景抛出的异常未登录 / Cookie 缺失 / HTTP 401、403 / code 999 need loginAuthRequiredError返回包结构损坏无success/code、data非对象CommandExecutionError服务端返回空列表EmptyResultError参数非法空 query、错误的--type、越界的 limit/pageArgumentError详情身份与请求目标不一致 / 未知 contentTypeCommandExecutionError实测排障建议报requires a logged-in Nowcoder session先确认 Chrome 已打开并登录 nowcoder.com再确认 Browser Bridge 扩展已安装报malformed类错误多半是牛客服务端返回结构变化可在-v模式下查看完整响应辅助定位detail 返回身份不匹配检查传入的 ID 是否来自列表命令输出content 用数字 ID、moment 用 UUID不要混用。一个完整的工作流示例将以上命令串联即可实现发现问题 → 深入阅读 → 沉淀到题库的完整闭环# 1. 先看热搜捕捉当前热点 opencli nowcoder hot --limit 10 # 2. 搜索目标公司面经 opencli nowcoder search 字节跳动 面经 --type all --limit 20 # 3. 打开某篇详情id 直接取自列表输出 opencli nowcoder detail https://www.nowcoder.com/discuss/912885704667987968 # 4. 查看该岗位的真题与练习进度 opencli nowcoder papers --job 11002 --company 239 opencli nowcoder practice --job 11226 --limit 20 # 5. 检查是否有新的内推机会 opencli nowcoder referral --limit 10所有列表命令输出的url、id、uuid均可作为detail的合法输入配合-f json输出AI Agent 可以无歧义地完成浏览→抓取→总结的自动化流水线。小结OpenCLI 的牛客网适配器是网站 CLI 化的典型样本公开接口直连网关、登录接口复用浏览器会话、双实体身份模型严格校验、正文内容安全清洗。掌握本文内容后你既可以在终端中零配置地浏览牛客热榜与企业题库也可以让 AI Agent 借助稳定的post_type/id/url契约安全、可回放地消费牛客社区内容。源码与测试分布在 clis/nowcoder/ 目录核心逻辑见 posts.js契约验证见 posts.test.js可作为进一步扩展或排查问题的第一手依据。赞分享开发工具CLI人工智能AI 应用浏览器控制GUI 自动化【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址https://gitcode.com/gh_mirrors/ope/OpenCLI点击查看免费下载相关推荐OpenCLI 36kr 适配器实战用命令行获取 36氪热榜、快讯、搜索与正文OpenCLI 36kr 适配器实战用命令行获取 36氪热榜、快讯、搜索与正文 36kr 适配器是 OpenCLI「把任意网站变成 CLI」的典型示例将 3开发工具CLI人工智能AI 应用浏览器控制GUI 自动化OpenCLI 新浪博客适配器实战指南用命令行热读、搜索与抓取新浪博客内容OpenCLI 新浪博客适配器实战指南用命令行热读、搜索与抓取新浪博客内容 导读 本文围绕 OpenCLI 仓库中的新浪博客Sina Blog适配器文档开发工具CLI人工智能AI 应用浏览器控制GUI 自动化OpenCLI Steam 适配器完全指南用命令行查询 Steam 商店热销榜、搜索与游戏详情OpenCLI Steam 适配器完全指南用命令行查询 Steam 商店热销榜、搜索与游戏详情 导读 本文聚焦 OpenCLI 仓库中的 Steam 适配器开发工具CLI人工智能AI 应用浏览器控制GUI 自动化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价