资讯动态

k-skill express-bus-booking:基于 HTTP/API 优先流程的 KOBUS 高速巴士预订助手详解

发布时间:2026/9/17 13:57:40 来源:尧图企业网站定制
k-skill express-bus-booking基于 HTTP/API 优先流程的 KOBUS 高速巴士预订助手详解【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill本文围绕 k-skill 仓库中的高速巴士고속버스预订能力展开以 express-bus-booking 功能文档 为主体结合配套的 指令文件、会话级端点探测笔记 与 Python 辅助脚本完整讲解如何仅用官方 HTTP 流程完成 KOBUS 线路解析、时刻表/余票/票价查询、临时占座与官方支付页移交并理解其中每一步的底层实现与边界约束。读完本文读者可以掌握一套可复现的“HTTP 优先、浏览器兜底”的巴士预订辅助方案以及临时占座temporary hold的生命周期管理方法。一、功能定位这个 skill 能做什么根据 功能文档express-bus-booking提供以下五类能力KOBUS 高速巴士的终端터미널与线路노선候选确认配车时刻表배차 시간표、巴士等级、剩余座位数与票价查询判断某一候选班次的“座位选择阶段”是否可进入在用户需要时先执行临时座位占位임시 선점再把用户移交到官方支付信息输入页面若用户决定不继续则解除临时占位。在 k-skill 仓库中该 skill 位于 express-bus-booking 目录由SKILL.mdCLI stub、instruction.md完整指令、skill.json元数据与references/、scripts/子目录组成。需要特别注意的是instruction.md 明确说明该 skill 与 시외버스市外巴士/Tmoney刻意分离——KOBUS 的终端代码、线路结构与结账页面均与 Tmoney 시외버스 不同시외버스 流程应使用同仓库的intercity-bus-bookingskill。二者终端代码不可混用这是后文“注意事项”中反复强调的要点。适用场景摘自 instruction.md 的 “When to Use”用户提到고속버스 예매高速巴士预订、고속버스 시간표时刻表、프리미엄 고속버스、우등 고속버스等关键词线路明确属于 KOBUS 高速巴士或用户点名 KOBUS/코버스/고속버스통합예매用户希望在座位选择、临时占座或支付入口链接层面获得辅助。明确不适用시외버스/Tmoney 线路、未经明确窄范围确认的最终刷卡提交、以及在未尝试官方 HTTP 流程之前的“盲目浏览器自动化”。二、前置条件与边界约定功能文档 的“먼저 필요한 것首先需要的东西”一节给出了三条前置约定这也是整个 skill 的设计前提基础查询与座位阶段不需要单独的用户账号/密码。探测笔记 的实测结论印证了这一点在 2026-05-08 的会话验证中线路查询、时刻表查询、座位选择页进入、临时占座、结账入口页展示均无需登录。页面 HTML 中虽然可能出现登录或grecaptchaToken表单但这些并不阻塞已验证的查询/座位阶段路径。支付由用户在官方 KOBUS 页面手动完成。skill 的定位是 assisted checkout辅助式结账最多推进到“支付信息输入页面”这一官方直前步骤绝不代替用户提交卡号。优先使用https://www.kobus.co.kr官方 HTTP 流程而非浏览器自动化。instruction.md 将其列为核心原则保持 cookie jar 并复用 referer无状态的单次 POST 可靠性更差探测阶段若 HTTP/2 下服务器行为异常优先使用桌面端 User-Agent 与 HTTP/1.1浏览器工具只用于发现端点变更或验证最终用户可见行为。辅助脚本 kobus_express_booking.py 的实现与这些原则一一对应第 25–26 行固定BASE_URL https://www.kobus.co.kr与桌面端 Chrome User-AgentMozilla/5.0 (Macintosh; ...) Chrome/125opener() 函数 构建http.cookiejar.CookieJar并挂载HTTPCookieProcessor保证整条流程的 cookie 会话连续性第 6–7 行 docstring 直接声明脚本“绝不提交卡字段或最终支付”It never submits card fields or final payment。三、输入值功能文档 定义了发起一次查询所需的五项输入输入说明出发终端KOBUS 终端代码需先经端点确认见下文第 4.2 节不能凭空猜测到达终端同上注意 KOBUS 终端名不保证唯一应优先采用代码确认的线路日期YYYYMMDD格式对应deprDtm字段期望时间段脚本默认全天timeLinkMin00到timeLinkMax23人数与座位偏好决定占座时的selSeatCnt/selAdltCnt及具体座号辅助脚本的命令行参数与这些输入直接对应main() 函数--depart-code、--arrive-code、--date为必填--select-index默认 1、--hold-first-seat/--hold-seat、--output-dir、--limit默认 20、--timeout默认 20 秒为可选。四、官方 HTTP 流程全解析这一节是 功能文档 “기본 흐름基本流程”七个步骤的展开。所有端点与参数均已在 探测笔记 中经 2026-05-08 会话验证并于 2026-05-13 对 서울→광주 线路做了二次复核。4.1 步骤 1建立会话先用启用 cookie 的方式请求主页或线路页开启会话GET https://www.kobus.co.kr/main.do GET https://www.kobus.co.kr/mrs/rotinf.do脚本中的 search() 函数 正是先访问/main.do再发起查询且后续请求都带上以/main.do为起点的Refererrequest() 函数 负责附加User-Agent与Referer头。4.2 步骤 2线路与终端候选确认POST /mrs/readRotLinInf.ajax该端点返回 JSON探测笔记 记录了观察到的键tfrLen、tfrInfList、len、codeYn、rotInfList。其中一次探测在rotInfList中返回了约1,208 条线路记录。工程含义终端显示名如“서울”并不唯一正确做法是先通过该端点把用户口语化的终端名解析为代码再用于后续查询。instruction.md 也强调“优先采用代码确认的线路而非显示名匹配”。验证过的实例서울경부 的代码是010부산 是700서울→광주 的验证线路为센트럴시티(서울)代码021→광주(유·스퀘어)代码500见 instruction.md。4.3 步骤 3时刻表查询与fnSatsChc解析POST /mrs/alcnSrch.do典型 POST 字段如下摘自 探测笔记deprCd010 # 出发终端代码示例서울경부 arvlCd700 # 到达终端代码示例부산 pathDvssngl # 路径方式单程 pathStep1 # 路径步骤 deprDtmYYYYMMDD # 出发日期 busClsCd0 # 巴士类别过滤0 表示全部 rtrpChc1 timeLinkMin00 # 时段下限 timeLinkMax23 # 时段上限这些字段与脚本中 search() 的查询体 完全一致。返回 HTML 中每一班可预订的候选都携带一个fnSatsChc(...)onclick 调用这是进入下一步的关键凭证。探测笔记 给出了实测样例fnSatsChc(20260509,003000,003000,010,700,3,07,0,Y,N,010,700,N,N,N,N)脚本用正则 FN_SATS_RE 与 ARG_RE 提取每个调用的引号参数再由 seat_stage_fields() 按下标映射到下一步需要的字段名a[1]→deprTime、a[2]→alcnDeprTime、a[3]→alcnDeprTrmlNo、a[4]→alcnArvlTrmlNo、a[5]→indVBusClsCd、a[6]→cacmCd、a[7]→dcDvsCd、a[8]→prvtBbizEmpAcmtRt、a[12]→chldSftySatsYn、a[13]→dsprSatsYn。解析候选后脚本还会在fnSatsChc匹配点前后约 900 字符的上下文里用正则抽取运营公司...고속等模式、巴士等级심야우등|우등|프리미엄|고속与余票文本잔여 N석或N / N组装成Schedule数据结构第 36–43 行。实测观察서울경부(010)→부산(700)、2026-05-09 的查询返回了 42 个班次链接/卡片、25 段可选座位片段第一个可选班次为00:30 / 천일고속 / 심야우등 / 余 10 席。同时注意mrsPsbYnN或等效标记表示该班次禁止预订应予以跳过instruction.md。4.4 步骤 4进入座位/票价阶段POST /mrs/satschc.do请求体 原始alcnSrchFrm隐藏字段 从上一步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总座位就是候选列表展示所需的三项核心数据。脚本的 parse_form() 负责按id定位表单并抽取全部input字段SEAT_RE 则筛选出nameseatBoxDtl且未disabled、有value的座位输入框形成可选座号列表。4.5 步骤 5临时占座POST /mrs/setPcpy.ajax提交satsChcFrm隐藏字段加上座位/人数选择字段。脚本在 hold() 函数 中强制写入selSeatNum选中座号、selSeatCnt1、selAdltCnt1、selAdltDcCnt0、prmmDcDvsCd缺省0。成功响应的判定标记为MSG_CDS0000 pcpyNoAll # 占座编号 satsNoAll # 座位编号 ESTM_AMT # 估算金额 DC_AMT # 折扣金额 TISSU_AMT # 出票金额脚本仅当raw.get(MSG_CD) S0000时才认为占座成功第 193 行否则返回successFalse的Hold对象并附原始响应。2026-05-13 的复核记录서울→광주2026-05-20 00:45 중앙고속 심야우등1 号座显示setPcpy.ajax返回MSG_CDS0000、satsNoAll01、TISSU_AMT36900。占座是短命的instruction.md 要求把 hold 视为短时效资源测试后、用户不继续、或改选新座位时都必须显式释放。4.6 步骤 6解除临时占座POST /mrs/cancPcpy.ajax使用同样的相关表单字段加上返回的pcpyNoAll与satsNoAll成功时响应同样返回MSG_CDS0000。脚本会把释放所需的完整字段快照保存到--output-dir下的kobus-cancel-fields.txthold() 函数便于事后清理任何被废弃的测试占座都应以该文件中的字段调用cancPcpy.ajax释放。4.7 结账入口移交handoffPOST /mrs/stplcfmpym.do # 移动端友好变体 POST /mrs/stplcfmpym.do?keep/mrs/pay仅有一个官方结账 URL 是不够的——KOBUS 期望 POST 体中包含所选班次、座位、票价与占座标识。因此实际的用户面模式是四步instruction.md通过setPcpy.ajax在服务端建立临时占座生成一个短小的 helper 页面自动向官方 KOBUS 结账端点提交 POST 表单把 helper 链接发给用户用户在官方 KOBUS 页面手动完成卡号/支付。POST 体在原座位表单字段基础上追加返回的占座值pcpyNoAll、satsNoAll、estmAmt、dcAmt、tissuAmt非会员结账流程时加nonMbrsYnY。脚本 hold() 的后半段 自动化了这一过程先把占座返回值回填到字段中随后向/mrs/stplcfmpym.do?keep/mrs/pay发出请求并保存响应 HTMLkobus-checkout-response.html再生成一个自动提交表单的kobus-payment-autosubmit.html其中表单指向/mrs/stplcfmpym.do?keep/mrs/pay页面提示“공식 KOBUS 결제정보 입력 페이지로 이동합니다. 결제는 직접 진행하세요.”最后输出Hold结果并附带payment_note明确说明“最终卡号填写/支付仍为手动”。五、辅助脚本的完整用法instruction.md 给出了经首尔→光州线路验证的完整调用示例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参数含义--depart-code 021/--arrive-code 500센트럴시티(서울) → 광주(유·스퀘어)即验证笔记中复核通过的 KOBUS 线路--date 20260520YYYYMMDD日期--select-index 1取第 1 个候选班次脚本默认值为 1--hold-first-seat选中该班次第一个可选座位并执行临时占座也可用--hold-seat 座号指定具体座位--output-dir /tmp/kobus-hold占座产物输出目录缺省时脚本自动创建kobus-hold-*临时目录。脚本默认模式只做时刻表查询输出 JSONroute代码日期、count候选总数、items前--limit个候选的departure_time、company、bus_class、remaining_text、raw_args。加上占座参数后JSON 会多出hold对象pcpy_no_all、sats_no_all、seat、estm_amt、dc_amt、tissu_amt及三个本地产物路径与payment_note。从源码看--output-dir下最终生成三个文件kobus-payment-autosubmit.html用户可打开的自动提交 helper、kobus-checkout-response.html官方结账页响应快照、kobus-cancel-fields.txt释放占座所需字段。六、移动端重定向陷阱与?keep/mrs/pay技巧这是 功能文档 “注意KOBUS 모바일 페이지는 좁은 화면에서/mblIdx.do로 리다이렉트할 수 있어”背后的具体机制。instruction.md 的 Mobile Redirect Caveat 一节 解释了原因KOBUS 的公共 JavaScript 在窄屏/移动端环境下会把location.href中不含“移动允许路径片段”的请求重定向到移动主页/mblIdx.do而向/mrs/stplcfmpym.do?keep/mrs/pay发起 POST 时可以保留完全相同的结账 POST 体同时让最终浏览器 URL 包含/mrs/pay从而避开该客户端重定向条件因此面向 Discord/移动端用户应使用?keep/mrs/pay变体但仍需与用户确认——应用内浏览器in-app browser可能自带额外怪癖如果移动端最终仍落到主页建议用户改用外部普通浏览器或桌面浏览器打开 helper 链接不要无限重试占座而应取消失效的旧占座。探测笔记 的结论一致KOBUS 移动端行为比桌面端不稳定公共 JS 可能把窄屏重定向到移动主页故移动端统一使用?keep/mrs/pay变体。七、注意事项与常见陷阱功能文档 的四条注意事项是硬性边界不包含支付自动化——这是 assisted checkout 流程最多辅助到官方页面的“支付直前阶段”移动端/mblIdx.do重定向——helper 链接需使用第 6 节所述的 caveat 变体KOBUS 终端代码与 Tmoney 시외버스 代码不同严禁混用维持 cookie 与 referer 的有状态流程比无状态 POST 更稳定。探测笔记 的 “Interpretation” 一节补充了三条实现事实已验证流程中登录不是必需条件页面中出现的登录/grecaptchaToken表单未阻塞查询与座位阶段最终支付必须保持手动且经明确确认的阶段。在此基础上instruction.md 的 Common Pitfalls 列出六个常见陷阱混用 KOBUS 与 Tmoney 代码终端代码体系完全不同误以为存在购物车——已验证的 KOBUS Web 流程没有购物车式占座列表现实的 UX 就是“临时座位占座 结账入口移交”忽略占座清理——测试占座与被放弃的占座一律用cancPcpy.ajax取消把查询成功当作支付许可——查询、座位阶段进入、临时占座都不构成提交支付的授权移动主页重定向——移动端务必使用?keep/mrs/pay变体过早使用浏览器自动化——先走直连 HTTP浏览器工具只用于发现变更后的端点或验证最终用户可见行为。此外 SKILL.md 给出了无 CLI 时也必须遵守的三条硬规则未经用户临场明确批准绝不执行支付、消息/邮件发送、最终提交、取消或公开发布绝不索取、打印或在聊天/文件/Shell 参数中存储明文凭据绝不绕过法律、实体在场、CAPTCHA、身份核验或电子签名边界。完整的韩国法免责与使用限制含引用的判例与法条边界、个人非组织性查询限制见 references/DISCLAIMER.md。八、交付前验证清单instruction.md 提供了一份可直接用作验收标准的 checklist线路/终端代码来自 KOBUS 解析而非猜测时刻表查询使用了 cookie 与真实 User-Agent候选输出包含日期、出发/到达终端、时间、可用的等级/运营公司、票价与余票尝试占座前座位阶段响应中已包含预期的隐藏字段发送结账 helper 链接前已用MSG_CDS0000确认临时占座成功失效/测试占座已用cancPcpy.ajax取消除非用户明确确认卡号/支付字段保留给用户发送到移动端平台时helper 链接使用/mrs/pay标记变体。同时instruction.md 的 Suggested Output Format 建议保持候选列表简洁可操作고속버스 서울경부 → 부산 / 2026-05-09 1. 00:30 심야우등 / 천일고속 / 잔여 10석 / 성인 47,600원 2. 13:50 우등 / ...创建占座/结账 helper 时应明确告知用户“下一步将打开官方 KOBUS 支付页支付仍为手动”面向 Discord/移动端时链接应以普通文本链接而非代码块形式给出方便直接点按。九、相关文件索引文件内容docs/features/express-bus-booking.md本 skill 的功能概览文档能力、输入、七步基本流程、注意事项express-bus-booking/instruction.md完整操作指令核心原则、端点流程、helper 用法、移动端陷阱、陷阱与验证清单express-bus-booking/references/kobus-http-flow.md2026-05 会话验证的端点探测笔记字段样例、成功标记、复核记录express-bus-booking/scripts/kobus_express_booking.py查询 临时占座 Python 辅助脚本cookie 会话、fnSatsChc解析、helper 页生成express-bus-booking/SKILL.mdCLI 入口说明与法律免责/硬规则express-bus-booking/references/DISCLAIMER.md韩国法背景下的使用限制与免责声明intercity-bus-booking/SKILL.md시외버스/Tmoney 流程的对应 skill代码体系不同勿混用【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价