express-bus-booking:基于 KOBUS 官方 HTTP 流程的高속버스(高速巴士)预订辅助技能实战指南
express-bus-booking基于 KOBUS 官方 HTTP 流程的高속버스高速巴士预订辅助技能实战指南【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill本篇技术指南围绕 k-skill 仓库中的express-bus-booking技能展开系统讲解如何以HTTP/API 优先的方式完成韩国 KOBUS코버스고속버스통합예매高速巴士的时刻表查询、线路与站点代码解析、座位临时锁定temporary seat hold以及官方支付信息页面的交接checkout-entry handoff。阅读本文后你将掌握 KOBUS 官方站点六个核心端点的请求参数与响应语义、可复用的命令行辅助脚本用法、移动端跳转规避策略以及查询可自动化、支付必须人工确认的边界设计原则。技能定位为何 KOBUS 需要独立技能express-bus-booking是 k-skill 仓库express-bus-booking/中专用于韩国 고속버스 / KOBUS 时刻表查询与预订辅助的技能其元信息在 express-bus-booking/skill.json 中声明为category: travel、locale: ko-KR、phase: v1并注册了vault、browser、action:booking三个运行 profile。该技能刻意与 시외버스市外巴士区分KOBUS 的终端站点代码terminal code、线路结构route structure和结算页面与 Tmoney 시외버스 完全不同因此仓库中对应存在独立的 intercity-bus-booking 技能两者不可混用。适用场景When to Use当用户提出以下请求时使用本技能고속버스 예매、고속버스 시간표、고속버스 예약、프리미엄 고속버스、우등 고속버스线路明确属于 KOBUS 고속버스 线路或用户直接提及 KOBUS / 코버스 / 고속버스통합예매用户需要协助预订范围覆盖到座位选择、临时锁定或生成支付入口链接不应使用本技能的情况시외버스 / Tmoney 线路——应改用intercity-bus-booking未经用户明确、狭义的确认就提交卡号或完成支付在未尝试官方 HTTP 流程之前盲目进行浏览器自动化核心原则Core Principles仅使用 KOBUS 官方表面official surfacehttps://www.kobus.co.kr保持 cookie jar 并复用 Referer无状态的一次性 POST 可靠性较低探测阶段优先使用桌面 User-Agent 与 HTTP/1.1服务器在 HTTP/2 下行为可能不同默认范围是辅助人工结算查询、候选展示、座位阶段就绪、临时座位锁定、官方支付入口页交接除非用户明确确认该精确动作否则不提交卡号字段、不勾选条款、不完成支付官方 HTTP 流程六个核心端点express-bus-booking的全部端点细节来自会话级验证笔记 express-bus-booking/references/kobus-http-flow.md验证日期 2026-05-082026-05-13 二次复核目标是在可行范围内完全规避浏览器自动化。以下按调用链顺序展开。1. 建立会话Start a Session启用 cookie 抓取后请求主页面或线路/搜索页面注入真实感桌面 User-AgentGET https://www.kobus.co.kr/main.do GET https://www.kobus.co.kr/mrs/rotinf.do这是后续所有 POST 的 Referer 基础也是 cookie 初始化的关键一步。2. 解析线路 / 站点候选Resolve Route / Terminal CandidatesPOST /mrs/readRotLinInf.ajax响应为 JSON实测观察到的键包括tfrLen tfrInfList len codeYn rotInfList一次探测的rotInfList中返回了约1,208 条线路记录。由于站点名称并非总是唯一应优先使用 code 确认的线路而不是展示名display name匹配。这正是代码优先于名称原则的由来。3. 查询时刻表Query TimetablePOST /mrs/alcnSrch.do典型字段deprDtm为YYYYMMDD格式deprCd010 arvlCd700 pathDvssngl pathStep1 deprDtmYYYYMMDD busClsCd0 rtrpChc1 timeLinkMin00 timeLinkMax23实测用例서울경부(010) → 부산(700)、日期 2026-05-09返回42 个时刻链接/卡片、25 个可选座位片段首个可选班次为00:30 / 천일고속 / 심야우등 / 10 seats。解析返回的 HTML 中的时刻行/卡片以及fnSatsChc(...)的 onclick 参数作为进入座位阶段的输入。实测示例fnSatsChc(20260509,003000,003000,010,700,3,07,0,Y,N,010,700,N,N,N,N)同时必须尊重mrsPsbYnN或任何等效的不可预订标记。4. 进入座位 / 票价阶段Seat / Fare StagePOST /mrs/satschc.do发送原始搜索表单的隐藏字段加上从fnSatsChc(...)中选取的值常见字段包括deprTime003000 alcnDeprTime003000 alcnDeprTrmlNo010 alcnArvlTrmlNo700 indVBusClsCd3 cacmCd07 dcDvsCd0 prvtBbizEmpAcmtRtN chldSftySatsYnN dsprSatsYnN实测响应包含form#satsChcFrm与隐藏的票价/座位值{ deprTime: 003000, alcnDeprTrmlNo: 010, alcnArvlTrmlNo: 700, adltFee: 47600, rmnSatsNum: 10, totSatsNum: 28 }其中adltFee成人票价、rmnSatsNum剩余座位、totSatsNum总座位是后续环节与候选展示的核心数据。5. 临时座位锁定Temporary Seat HoldPOST /mrs/setPcpy.ajax提交satsChcFrm隐藏字段加上选定的座位/数量字段。成功响应包含MSG_CDS0000 pcpyNoAll satsNoAll ESTM_AMT DC_AMT TISSU_AMT⚠️ 座位锁定是短期有效的。如果是在测试、用户未继续操作、或更换了座位必须显式释放锁定。6. 释放临时锁定Release Temporary HoldPOST /mrs/cancPcpy.ajax使用相同的相关表单字段加上返回的pcpyNoAll和satsNoAll成功响应返回MSG_CDS0000。命令行辅助脚本一次运行完成查询与锁定仓库为 KOBUS 查询和可选临时锁定提供了打包好的辅助脚本 express-bus-booking/scripts/kobus_express_booking.py可通过 k-skill CLI 直接执行npx -y nomadamas/k-skill0 exec express-bus-booking scripts/kobus_express_booking.py -- \ --depart-code 021 \ --arrive-code 500 \ --date 20260520 \ --select-index 1 \ --hold-first-seat \ --output-dir /tmp/kobus-hold已验证路线示例首尔 ↔ 光州针对 Seoul→Gwangju仓库实测验证的 KOBUS 线路为센트럴시티(서울)代码021→광주(유·스퀘어)代码500。2026-05-13 的复核结果为2026-05-20 00:45 중앙고속 심야우등、座位 1/mrs/setPcpy.ajax返回MSG_CDS0000、pcpyNoAll、satsNoAll01、TISSU_AMT36900。成功的锁定会返回MSG_CDS0000、pcpyNoAll、satsNoAll、票价金额并在--output-dir目录中保存一个本地自动提交辅助页供官方 KOBUS 支付信息页使用。卡号输入与最终支付保持人工操作。废弃的锁定使用保存的取消字段通过/mrs/cancPcpy.ajax取消。脚本参数与底层实现要点脚本的命令行参数与main()中的 argparse 定义一致参数必填默认说明--depart-code是—出发站点 KOBUS 代码如021--arrive-code是—到达站点 KOBUS 代码如500--date是—出发日期YYYYMMDD格式--select-index否1选择第几个时刻候选1-based--hold-first-seat否False锁定首个可选座位--hold-seat否None锁定指定座位号--output-dir否临时目录保存辅助页/响应/取消字段的目录--limit否20输出时刻候选的最大条数--timeout否20HTTP 超时秒数从源码实现看kobus_express_booking.py脚本值得注意的工程细节会话保持opener()使用http.cookiejar.CookieJar()构建HTTPCookieProcessor并对 SSL context 设置DEFAULTSECLEVEL1以兼容 KOBUS 老旧 TLS 配置失败时静默降级。Referer 链request()统一携带桌面 UA 与 Referer例如时刻表请求以/main.do为 Referer、座位阶段以/mrs/alcnSrch.do为 Referer。表单状态流转parse_form()通过正则提取指定 id/name 的表单及其隐藏 input 字段search()先用FN_SATS_RE正则收集fnSatsChc(...)参数departure时间由args[1][:2]:args[1][2:4]格式化再从上下文中用잔여\s*\d석、심야우등|우등|프리미엄|고속等正则提取余座与班次等级。座位阶段字段映射seat_stage_fields()将fnSatsChc的参数按位置映射到deprTime、alcnDeprTrmlNo、alcnArvlTrmlNo、indVBusClsCd、cacmCd、dcDvsCd、chldSftySatsYn、dsprSatsYn等字段。锁定与产物生成hold()从座位阶段 HTML 中解析nameseatBoxDtl的可用座位提交/mrs/setPcpy.ajax成功后把satsNoAll、pcpyNoAll、estmAmt、dcAmt、tissuAmt、nonMbrsYnY写回字段生成三个产物kobus-checkout-response.html官方支付信息页响应原文kobus-payment-autosubmit.html内含自动提交 POST 表单的本地辅助页kobus-cancel-fields.txt用于cancPcpy.ajax的取消字段清单脚本默认模式只查询时刻表仅在指定--hold-first-seat或--hold-seat时创建锁定与辅助页且从不提交卡号或完成最终支付。支付入口交接POST 表单自动提交辅助页仅给一个官方结算 URL 是不够的因为 KOBUS 期望 POST body 中包含选定的时刻、座位、票价和锁定标识。实践可行的用户侧模式是通过setPcpy.ajax在服务端创建临时锁定生成一个向官方 KOBUS 结算端点自动提交 POST 表单的短辅助页将辅助页链接发给用户用户在官方 KOBUS 页面手工完成卡号/支付字段。桌面端动作actionhttps://www.kobus.co.kr/mrs/stplcfmpym.do移动端友好动作https://www.kobus.co.kr/mrs/stplcfmpym.do?keep/mrs/payPOST body 应包含原始座位表单字段加上返回的锁定值如pcpyNoAll、satsNoAll、estmAmt、dcAmt、tissuAmt非会员结算流程还需nonMbrsYnY。移动端跳转规避Mobile Redirect CaveatKOBUS 公共 JavaScript 会把窄屏/移动端重定向到/mblIdx.do除非location.href中包含/mrs/pay等允许移动端的路径片段。实测向以下地址 POST/mrs/stplcfmpym.do?keep/mrs/pay可以在保持相同 POST body 的同时使最终浏览器 URL 包含/mrs/pay从而规避客户端移动主页面重定向条件。该变体适合 Discord / 移动端用户但仍需与用户确认因为应用内浏览器可能带来自身的怪癖。若移动端仍落到首页建议改用普通外部浏览器或桌面浏览器打开辅助链接不要无限重试锁定废弃锁定应及时取消。候选输出格式建议候选列表保持简洁可操作고속버스 서울경부 → 부산 / 2026-05-09 1. 00:30 심야우등 / 천일고속 / 잔여 10석 / 성인 47,600원 2. 13:50 우등 / ...创建锁定/结算辅助页后应明确说明下一步将打开官方 KOBUS 支付页面、支付保持人工完成。对 Discord / 移动端链接以普通文本形式给出而非代码块包裹便于用户直接点击。常见陷阱Common Pitfalls混淆 KOBUS 与 Tmoney 站点代码KOBUS 终端代码不是 Tmoney 시외버스 终端代码。假设存在购物车在已测的 Web 流程中 KOBUS 不暴露购物车式锁定列表现实 UX 是临时座位锁定 结算入口交接。忽略锁定清理测试锁定或废弃锁定必须用cancPcpy.ajax取消。把查询成功当作支付授权查询、进入座位阶段、临时锁定都不等于获得提交支付的授权。移动端主页重定向移动端务必使用?keep/mrs/pay辅助动作否则 KOBUS JS 可能把用户带到/mblIdx.do。过早使用浏览器自动化先尝试直接 HTTP浏览器工具只用于发现端点变更或核验最终用户可见行为。验证清单Verification Checklist线路/站点代码来自 KOBUS 解析结果而非猜测时刻表在携带 cookie 与真实 User-Agent 的条件下查询候选输出包含日期、出发/到达站点、时间、班次等级/运营商可用时、票价与余座座位阶段响应在尝试锁定前包含预期隐藏字段发送结算辅助链接前已用MSG_CDS0000确认临时锁定成功废弃/测试锁定已通过cancPcpy.ajax取消除非用户明确确认卡号/支付字段保持留给用户面向移动端为主的平台时辅助链接使用带/mrs/pay标记的变体使用方式与合规边界通过 k-skill CLI 获取与执行本技能随 k-skill CLI 分发可通过以下命令获取完整说明、列出辅助文件并执行脚本# 获取技能完整说明优先步骤 npx -y nomadamas/k-skill0 instruct express-bus-booking # 列出技能捆绑的辅助文件 npx -y nomadamas/k-skill0 files express-bus-booking # 读取会话验证的 HTTP 流程笔记 npx -y nomadamas/k-skill0 read express-bus-booking references/kobus-http-flow.md # 执行查询/锁定辅助脚本 npx -y nomadamas/k-skill0 exec express-bus-booking scripts/kobus_express_booking.py -- ...不可逾越的硬性规则即使不通过 CLI以下规则同样适用未经用户事先明确批准绝不执行支付、消息/邮件发送、最终提交、取消或公开发布绝不索取、打印或明文存储凭据聊天、文件或 shell 参数中绝不绕过法律、到场验证、CAPTCHA、身份核验或电子签名边界完整的法律边界说明见 express-bus-booking/references/DISCLAIMER.md 与 express-bus-booking/references/TRADEMARK-LEGAL-STATEMENT.md本技能与 KOBUS 运营方无任何官方附属关系公开信息的自动收集仅限个人非组织性查询禁止系统化/批量爬取、数据库构建、访问控制或封锁规避以及干扰第三方业务的行为。小结express-bus-booking用一套完整且经过会话验证的官方 HTTP 流程把 KOBUS 고속버스 的查询 → 选座 → 临时锁定 → 结算入口交接全链路沉淀为可复用的 CLI 技能六个核心端点readRotLinInf.ajax、alcnSrch.do、satschc.do、setPcpy.ajax、cancPcpy.ajax、stplcfmpym.do各有明确的参数契约与成功标记MSG_CDS0000辅助脚本 kobus_express_booking.py 把 cookie 会话、Referer 链、正则解析与本地辅助页生成全部封装好。同时技能设计者把查询可自动化、支付须人工确认作为不可逾越的边界这既是工程上的稳健选择也是法律与合规上的必要约束。【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考