ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

没有公开API的法院拍卖网站,k-skill 如何让 Agent 查询不动产拍卖公告

没有公开API的法院拍卖网站,k-skill 如何让 Agent 查询不动产拍卖公告 没有公开API的法院拍卖网站k-skill 如何让 Agent 查询不动产拍卖公告【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill韩国法원경매정보法院拍卖信息站点courtauction.go.kr没有公开 Open API还按 IP 激进地拦截自动化流量。k-skill 仓库里的court-auction-notice-search却把它变成了一个 Agent 能直接调用的只读不动产拍卖公告查询技能。这种在重墙上挖出一条窄门的做法正是这套设计最值钱的部分。 它能答什么、不能答什么不动产拍卖公告查询的边界先把能力边界说清楚免得误用。它能回答的是一类问题今天或明天哪里有不动产开拍首尔中央地方法院某一天发布了哪些 매각공고拍卖公告只挑 기일입찰期日投标或 기간입찰期间投标某条公告里所有案件号、用途、地址、감정평가액评估价展开给我案件号2024타경100001现在进展到哪江南区最低拍卖价 5 亿以下、流拍过一次的物件以及法院事务所代码表。它不能做的同样明确动产汽车、工程机械拍卖不在 v1 范围内一次查某拍卖日全部法院的日程那是另行立项的议题物件照片前街景/概况/内部的 URL物件明细书、现状调查书、评估书的 PDF 下载以及任何自动填写或自动提交投标书——投标必须由人在法院现场完成。这条边界写进了技能的 instruction.md也是它作为参考用工具的自我定位。 为什么作者把「慢」当第一原则Agent 调用政府站点的防封禁设计这里有个坑很多人会先踩这个站点按 IP 做机器人拦截大约 16 次请求砸在 30 秒内就会换来一次约 1 小时的封锁。你会发现作者整套设计都是围绕这个事实倒推出来的而不是事后补的补丁。因果链是这样的。既然站点对突发流量这么敏感客户端就不能来者不拒。于是传输层CourtAuctionHttpClient在构造时就把三条保守值写死为默认两次请求之间至少睡 2000ms再叠加 0~1000ms 的随机 jitter避免请求落在整齐的节拍上、每会话最多放行 10 次调用、单请求超时 15 秒。这三条在 http.js 的ensureBudget里落地预算超了就抛BUDGET_EXCEEDED不让你继续打jitter 的等待则在每次postJson前扣掉已流逝的时间补够差额再发。更狠的一条是封禁检测。只要响应里出现data.ipcheck false客户端立刻抛BLOCKED并停下绝不做自动重试——因为重试只会延长封禁。被封的 IP 大约 1 小时后自然恢复期间要么换网络要么由人工用浏览器把站点的解封画面走完。换句话说慢不是性能妥协而是把不连累调用方 IP当作最高优先级来做的结果。三条查询路径法院拍卖公告、案件号直查、按条件筛物件入口函数都集中在门面 index.js分别对应三类用户问题。某天哪些法院开拍——公告到物件展开。入口是searchSaleNotices({ date, courtCode, bidType })。参数date必填接受YYYY-MM/YYYYMM或YYYY-MM-DD/YYYYMMDD注意站点真实的搜索按钮只按月YYYYMM查所以传具体某天时它会先按月查、再在结果里把那天过滤出来。courtCode留空表示全部法院传值则必须是B000210这种格式B加 6 位数字。bidType取date기일입찰代码000331或period기간입찰代码000332留空两种都查。用户选中某张卡片后把卡片对象或它的raw原样喂给getSaleNoticeDetail(notice)返回的items[]带caseNumber、usage、address、appraisedPrice、minimumSalePrice、remarks。之所以要原样传入是因为请求体里的jdbnCd是列表响应返回的加密令牌外部无法凭空构造——buildNoticeDetailBody优先就是从raw里把它捞出来的。这个案件号现在进行到哪——案件号直查。入口是getCaseByCaseNumber({ courtCode, caseNumber })。caseNumber推荐2024타경100001但2024-100001、2024_100001这类写法会被normalizeCaseNumber自动归一。命中时返回caseInfo案件名·受理日·请求金额·裁判部·进行状态、items[]目的物—地址/分配请求终期、schedule[]各拍卖日的最低价/评估价/结果、claimDeadline、relatedCases、stakeholders若found:false、status:204多半是案件不存在或未公开此时应让用户核对案件号格式与法院。按地区/价格筛物件——自由条件检索。入口是searchProperties()。几个约束值得单独讲因为它们最容易在本地就被拦下参数约束为什么pageSize只能10/20/50/100默认10上游 PGJ151 下拉框只认这几个值传1会让 live endpoint 直接回 HTTP 400flbdCount{ min, max }仅限整数流拍次数是次数不是连续量region{ sido, sigungu, dong }给了区域走 지번주소 搜索cortStDvs:2不给则走公告模式cortStDvs:1시군구/읍면동 没有静态表直接传 raw 代码如11680priceRange/area韩元/㎡ 的{ min, max }允许小数数值校验价格与面积可带小数响应items[]会把一堆韩文 raw 列翻成英文键方便消费例如saNo→caseNumber、gamevalAmt/minmaePrice→appraisedPrice/minimumSalePrice、yuchalCnt→flbdCount、boCd/jiwonNm→courtCode/courtName。这套映射在 normalize.js 的normalizePropertySearchRow里逐一实现同一字段还会给别名键如flbdCount与failedBidCount。代码表走的是fail-open设计遇到不认识的用途名不会硬猜而是原样透传让上游报错。注意resolveUsageCode对同名用途做了保护——比如输入아파트只存在于别的层级时不会错手返回同名代码而是透传原文避免静默污染请求体。 被 WAF 拦下之后三层传输架构与浏览器 fallback前两条路径正常时压根不需要浏览器直接 HTTP 就通。只有第三条searchProperties可能撞上 WAF于是作者设计了一条递进的退路。第一层直连 HTTP 打底。每次postJson前先发一次 warmup GET 建立会话 Cookiewarmup 就是先敲一扇门拿令牌的意思随后 POST 内部 XHR endpoint。第二层遇 WAF 型 400 才升级浏览器。只有两种情况会激活 fallback一是UPSTREAM_ERROR且statusCode 400典型的 WAF 拦截特征二是BLOCKED且调用方显式传了fallbackOnBlocked:true。想彻底关掉传{ fallback:false }即可。第三层浏览器内部再分级。激活后优先连用户已打开的 runtime 浏览器——通过k-skill-browser-runtime自动探测macOS 上依次试 Aside、BrowserOS、Chrome/Chromium 的 CDPCDP 是 Chrome DevTools Protocol浏览器对外暴露的自动化调试通道其它平台先试 BrowserOS够不着才落回本地chromium.launch({ headless })起一个浏览器这一步依赖rebrowser-playwright或playwright-core都是可选依赖见 playwright.js。这条链路上有一道明确的安全边界连到 runtime 的浏览器是用户自己的fallback 结束时只清理 adapter 建出来的 page/context/tab并用runtime.disconnectBrowser断开自动化客户端绝不关闭 BrowserOS/Aside/Chrome 的 profile本地 launch 的浏览器因为是包自己起的才会连 browser 一起关。而PLAYWRIGHT_UNAVAILABLE模块没装与UNKNOWN_PROVIDERprovider 名写错会 fail-closed 立即抛错UNAVAILABLE/探测失败则自动降级到本地 launch。️ 动手跑一遍法院拍卖公告查询的 Node.js 与 CLI 用法包安装后即可require下面这段在原文示例基础上重排并加了错误处理更完整的 API 一览见 READMEconst { searchSaleNotices, getSaleNoticeDetail, getCaseByCaseNumber } require(court-auction-notice-search); async function run() { const notices await searchSaleNotices({ date: 2026-04-27, courtCode: B000210, bidType: date }); for (const n of notices.items) { const detail await getSaleNoticeDetail(n); for (const it of detail.items) { console.log(${it.caseNumber} | ${it.usage} | 감정 ${it.appraisedPrice}원 / 최저 ${it.minimumSalePrice}원); console.log( ${it.address}); } } const c await getCaseByCaseNumber({ courtCode: B000210, caseNumber: 2024-100001 // 会被规范化成 2024타경100001 }); console.log(c.found ? 매각기일 ${c.schedule.length}회 : 사건 없음, 번호 확인); } run().catch((e) { if (e.code BLOCKED) console.error(1시간 대기 후 다른 IP로 재시도); else console.error(e); process.exitCode 1; });想要更保守的客户端直接构造并注入new CourtAuctionHttpClient({ minDelayMs: 3000, jitterMs: 2000, maxCallsPerSession: 5, timeoutMs: 30000 })再把它作为client传进任一函数即可。CLI 与 npm 包同名全局标志有--json默认、--pretty、--include-rawfalse、--timeout-ms、--min-delay-ms、--max-calls。四条代表性命令# 法院事务所代码表 court-auction-notice-search codes courts --pretty | head -40 # 拍卖公告列表按月查 court-auction-notice-search notices --date 2026-04 --court-code B000210 --bid-type date --pretty # 案件号直查 court-auction-notice-search case --court-code B000210 --case-number 2024타경100001 --pretty # 自由条件检索 court-auction-notice-search search --sido 서울특별시 --sigungu 11680 --usage-large 건물 \ --price-min 100000000 --price-max 500000000 --sale-from 2026-05-01 --sale-to 2026-05-20 --prettysearch子命令还吃--region 시도[:시군구raw[:읍면동raw]]、--usage 대[:중[:소]]、--appraised-min/max、--area-min/max、--flbd-min/max、--page、--page-size 10|20|50|100等参数。 出错怎么自救错误码白话归因错误对象的构造集中在 http.js。按先看到什么、多半为什么、下一步做什么重排成一张表错误码白话归因下一步UPSTREAM_ERROR多半是会话 Cookie 过期或jdbnCd传错了从 warmup 重新走一遍别硬重试NETWORK_ERROR超时或连接失败原始异常在error.cause里查网络必要时调大--timeout-msBLOCKEDdata.ipcheck false站点按 IP 封了约 1 小时立即停手换 IP 或等约 1 小时别自动重试BUDGET_EXCEEDED本包自己设的安全阀防你手抖打爆 IP确有理由才用--max-calls 20同时提示封禁风险PLAYWRIGHT_UNAVAILABLE想走浏览器 fallback但 Playwright 模块没装npm i rebrowser-playwright或npm i playwright-core交付前要过四道关诚实框架与完成判定这套技能要求每次交互都向用户交代清楚把这些当成自检清单用第二人称逐项过告诉用户数据是法원경매정보 站点公开信息的原样转述实际投标前必须回法院原始公告复核——它是参考用工具不是权威数据源。确认价格감정평가액·최저매각가격、拍卖日期、拍卖场所都以公告时点为准可能因 정정/취하/연기更正/撤回/延期变化可提示响应里的correctionCount、cancellationCount字段。说明IP 封禁风险快速连查会触发约 1 小时封锁被封后同 IP 要等约 1 小时并强调这是 read-only 技能不自动投标。守住红线未经用户明确即时批准不碰支付、消息/邮件投递、最终提交、取消、公开张贴遇到登录/CAPTCHA/电子签名等边界完成最远合法步骤后把下一步官方操作精确打开/准备好交给用户绝不绕过。收尾时还要做到两条遇到BLOCKED不自动重试、立即停止任务结束后向用户说明剩余调用预算明确后续是否还有查询余量。这几条写进了 SKILL.md 的 Hard rules是 Agent 与用户之间的信任底线。把保守设计 结构化输出 明确边界拆开看其实是一套可复用的政务/金融数据查询范式用直接 HTTP 降低对浏览器的依赖用分层 fallback 保住 WAF 场景的可用性用限流/预算/封禁即停的三重防护护住调用方 IP用 fail-open 代码表避免静默错误再用 read-only 与诚实框架守住合规底线。想继续深挖建议按instruction.md→ 包README.md→src/index.js→transport/http.js与normalize.js→codetables/index.js的顺序读一遍再跑npm run lint与npm run test验证。这套组合拳几乎可以直接搬到下一个无公开 API 又爱封 IP的政府或金融站点上。【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表