iros-registry-automation

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

인터넷등기소 등기부등본 자동화

互联网登记处(IROS)登记簿副本自动化

What this skill does

本Skill的功能

대법원 인터넷등기소(IROS,
https://www.iros.go.kr
)에서 법인/부동산 등기부등본(등기사항증명서) 을 여러 건 발급해야 할 때, 원 저작자
challengekim
의 참고 구현
challengekim/iros-registry-automation
(MIT)을 기준으로 안전한 작업 순서와 로컬 실행 방식을 안내한다.
  • 법인등기부등본: 법인등록번호 또는 상호명으로 장바구니에 담고, 사용자가 직접 결제한 뒤 열람·저장한다.
  • 부동산등기부등본: 주소/동호수 목록으로 장바구니에 담되, 결제·열람·다운로드는 인터넷등기소 웹 UI에서 수동으로 처리하는 것을 기본 권장한다.
  • TouchEn nxKey, 공동인증서/간편인증, 카드 결제처럼 사용자 PC·인증수단이 필요한 준비사항을 체크한다.
  • 발급 파일과 입력 목록에 들어가는 개인정보/민감정보를 저장소 밖에서 다루도록 안내한다.
当需要从大法院互联网登记处(IROS,
https://www.iros.go.kr
)批量申请**法人/不动产登记簿副本(登记事项证明书)**时,将基于原作者
challengekim
的参考实现
challengekim/iros-registry-automation
(MIT协议),介绍安全的操作流程与本地运行方式。
  • 法人登记簿副本:通过法人登记编号或公司名称添加至购物车,用户自行完成支付后进行查看、保存。
  • 不动产登记簿副本:通过地址/房号列表添加至购物车,默认建议用户在互联网登记处Web UI中手动完成支付、查看、下载操作。
  • 检查用户PC及认证手段的准备情况,如TouchEn nxKey、公共认证证书/简易认证、银行卡支付等。
  • 指导用户在代码仓库外处理申请文件及输入列表中的个人信息/敏感信息。

Hard limits

硬性限制

  • 로그인은 사용자가 브라우저에서 직접 한다. ID/PW, 공동인증서 비밀번호, 간편인증, OTP, 보안카드, 카드번호를 에이전트가 입력·저장하지 않는다.
  • 결제는 사용자가 직접 한다. 카드 승인, 결제 확인, 결제 실패 대응은 사람이 브라우저에서 처리한다.
  • 법률 자문, 권리관계 해석, 제출/발급 결과의 법적 유효성 보장은 하지 않는다. 이 스킬은 참고용 자동화 가이드다.
  • IROS 보안 프로그램(TouchEn nxKey 등)이 요구되면 먼저 설치하고 브라우저/PC를 재시작한 뒤 다시 시작한다.
  • 법인 결제는 upstream 문서 기준 페이지당 10건 단위 제약을 전제로 안내한다. 그 이상은 사용자가 10건 단위로 반복 결제한다.
  • 부동산은 인터넷등기소가 로그인 상태에서 10만원 미만 일괄 결제와 일괄열람출력/일괄저장 UI를 제공하므로, v1에서는 장바구니 반복 작업만 자동화 가치가 큰 영역으로 본다.
  • 登录需用户在浏览器中手动完成。Agent不会输入或存储账号密码、公共认证证书密码、简易认证信息、OTP、安全卡、银行卡号。
  • 支付需用户手动完成。银行卡授权、支付确认、支付失败处理均由用户在浏览器中操作。
  • 不提供法律咨询、权利关系解读、申请/发放结果的法律效力保障。本Skill仅为参考性自动化指南。
  • 若IROS要求安装安全程序(如TouchEn nxKey等),需先完成安装并重启浏览器/PC后再启动流程。
  • 法人支付将以上游文档的每页10件限制为前提进行说明,超出数量需用户按10件为单位重复支付。
  • 互联网登记处在登录状态下为不动产提供10万韩元以下的批量支付及批量查看打印/批量保存UI,因此v1版本仅将购物车重复操作视为具有自动化价值的环节。

Prerequisites

前置条件

  • Chrome/Chromium 실행 가능한 환경
  • Python 3.10+
  • Playwright / Chromium 설치 가능 환경
  • IROS 로그인 수단(아이디, 공동인증서, 간편인증 등)
  • 결제 카드
  • TouchEn nxKey 사전 설치
  • upstream 참고 구현 clone 또는 사용자가 관리하는 로컬 사본. 실행 전 반드시 이 스킬 저장소의
    iros-registry-automation/scripts/upstream.pin
    에 적힌 reviewed SHA로 고정한다.
bash
git clone https://github.com/challengekim/iros-registry-automation.git
cd iros-registry-automation
git checkout 7c6924b2ff88d693a12556659188cb91041e5097
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium
cp config.json.example config.json
업스트림 핀 업데이트는 로그인·인증·결제 인접 브라우저 자동화의 신뢰 경계를 바꾸는 작업이다.
scripts/upstream.pin
값을 바꾸기 전에는 새 upstream diff를 검토하고, 설치 예시의
git checkout
SHA와 함께 같은 PR에서 갱신한다.
  • 可运行Chrome/Chromium的环境
  • Python 3.10+
  • 可安装Playwright / Chromium的环境
  • IROS登录手段(账号、公共认证证书、简易认证等)
  • 支付银行卡
  • 提前安装TouchEn nxKey
  • 克隆上游参考实现或用户管理的本地副本。运行前必须固定为本Skill仓库
    iros-registry-automation/scripts/upstream.pin
    中记录的已审核SHA值。
bash
git clone https://github.com/challengekim/iros-registry-automation.git
cd iros-registry-automation
git checkout 7c6924b2ff88d693a12556659188cb91041e5097
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium
cp config.json.example config.json
上游版本更新属于会改变登录·认证·支付相关浏览器自动化信任边界的操作。修改
scripts/upstream.pin
值前,需检查新上游代码的差异,并在同一个PR中更新安装示例中的
git checkout
SHA值。

Workflow

工作流程

1. 입력 파일을 저장소 밖 안전한 폴더에 준비한다

1. 在仓库外的安全文件夹中准备输入文件

발급 대상에는 법인등록번호, 상호명, 주소, 동호수 등 민감할 수 있는 정보가 들어간다. 공개 저장소, PR, 테스트 로그에 넣지 않는다.
bash
workdir="$(mktemp -d "${TMPDIR:-/tmp}/iros-registry.XXXXXX")"
chmod 700 "$workdir"
mkdir -p "$workdir/downloads" "$workdir/logs" "$workdir/output" "$workdir/tmp-downloads"
법인등록번호 기반 입력은 upstream repo
data/
가 아니라
$workdir/corp-input.json
같은 저장소 밖 파일에 둔다. 실제 법인등록번호/주소 원문을 upstream
data/
디렉터리, git 저장소, PR 첨부, 테스트 로그에 넣지 않는다.
iros_download.py
는 결제 후 열람·저장 단계에서
companies_list
를 열어 저장 파일명을 맞춘다. 법인등록번호 흐름을 쓰더라도 결제 전
$workdir/companies-input.json
을 함께 만들어 둔다.
bash
cat > "$workdir/corp-input.json" <<'JSON'
{
  "1101111234567": "예시 주식회사",
  "1101117654321": "샘플 주식회사"
}
JSON

python3 - "$workdir" <<'PY'
import json
import pathlib
import sys

workdir = pathlib.Path(sys.argv[1])
corp_input = json.loads((workdir / "corp-input.json").read_text())
companies = list(corp_input.values())
(workdir / "companies-input.json").write_text(
    json.dumps(companies, ensure_ascii=False, indent=2) + "\n"
)
PY
부동산 주소 기반 입력 예시는 동/호수까지 필요한 경우가 있으므로
data/iros_realties.json
형식을 upstream README에서 확인하되, 실제 주소 원문은
$workdir/realty-input.json
같은 로컬 파일에만 둔다.
사업자번호 조회나 종합 리포트 마법사 흐름에서 쓰는 고객 Excel도 upstream repo
data/
가 아니라
$workdir/customer-list.xlsx
같은 저장소 밖 파일에 둔다. 실제 고객 목록을 upstream
data/고객리스트.xlsx
에 복사하지 않는다.
config.json
도 저장소에 커밋하지 않는 로컬 파일로 두고, 민감 입력·로그·산출물 경로를 모두
$workdir
아래로 돌린다.
bash
python3 - "$workdir" <<'PY'
import json
import pathlib
import sys

workdir = pathlib.Path(sys.argv[1])
config = json.loads(pathlib.Path("config.json").read_text())
config.update({
    "corpnum_list": str(workdir / "corp-input.json"),
    "companies_list": str(workdir / "companies-input.json"),
    "realty_list": str(workdir / "realty-input.json"),
    "excel_path": str(workdir / "customer-list.xlsx"),
    "save_dir": str(workdir / "downloads"),
    "realty_save_dir": str(workdir / "downloads" / "realty"),
    "pdf_dir": str(workdir / "downloads"),
    "report_output": str(workdir / "output" / "corp-report.xlsx"),
    "extract_output": str(workdir / "output" / "corp-extract.json"),
    "bizno_cache": str(workdir / "logs" / "bizno-cache.json"),
    "bizno_results": str(workdir / "logs" / "bizno-results.json"),
    "realty_cart_log": str(workdir / "logs" / "cart-realty-log.json"),
    "realty_download_log": str(workdir / "logs" / "download-realty-log.json"),
    "cart_log": str(workdir / "logs" / "cart-log.json"),
    "cart_corpnum_log": str(workdir / "logs" / "cart-corpnum-log.json"),
    "download_log": str(workdir / "logs" / "download-log.json"),
    "download_temp": str(workdir / "tmp-downloads"),
})
pathlib.Path("config.json").write_text(json.dumps(config, ensure_ascii=False, indent=2) + "\n")
PY
申请对象包含法人登记编号、公司名称、地址、房号等可能敏感的信息。请勿将其放入公开仓库、PR、测试日志中。
bash
workdir="$(mktemp -d "${TMPDIR:-/tmp}/iros-registry.XXXXXX")"
chmod 700 "$workdir"
mkdir -p "$workdir/downloads" "$workdir/logs" "$workdir/output" "$workdir/tmp-downloads"
基于法人登记编号的输入文件应放在仓库外的文件中(如
$workdir/corp-input.json
),而非上游仓库的
data/
目录。请勿将实际法人登记编号/地址原文放入上游
data/
目录、git仓库、PR附件或测试日志中。
iros_download.py
在支付后的查看·保存阶段会读取
companies_list
来匹配保存文件名。即使使用法人登记编号流程,也需在支付前创建
$workdir/companies-input.json
文件。
bash
cat > "$workdir/corp-input.json" <<'JSON'
{
  "1101111234567": "示例股份有限公司",
  "1101117654321": "样本股份有限公司"
}
JSON

python3 - "$workdir" <<'PY'
import json
import pathlib
import sys

workdir = pathlib.Path(sys.argv[1])
corp_input = json.loads((workdir / "corp-input.json").read_text())
companies = list(corp_input.values())
(workdir / "companies-input.json").write_text(
    json.dumps(companies, ensure_ascii=False, indent=2) + "\n"
)
PY
基于不动产地址的输入示例如需包含楼栋/房号,可参考上游README中的
data/iros_realties.json
格式,但实际地址原文仅能放在本地文件(如
$workdir/realty-input.json
)中。
用于经营者编号查询或综合报告向导流程的客户Excel文件,也需放在仓库外的文件(如
$workdir/customer-list.xlsx
)中,而非上游仓库的
data/
目录。请勿将实际客户列表复制到上游
data/고객리스트.xlsx
中。
config.json
也需作为不提交到仓库的本地文件,将所有敏感输入·日志·输出文件的路径设置为
$workdir
下的目录。
bash
python3 - "$workdir" <<'PY'
import json
import pathlib
import sys

workdir = pathlib.Path(sys.argv[1])
config = json.loads(pathlib.Path("config.json").read_text())
config.update({
    "corpnum_list": str(workdir / "corp-input.json"),
    "companies_list": str(workdir / "companies-input.json"),
    "realty_list": str(workdir / "realty-input.json"),
    "excel_path": str(workdir / "customer-list.xlsx"),
    "save_dir": str(workdir / "downloads"),
    "realty_save_dir": str(workdir / "downloads" / "realty"),
    "pdf_dir": str(workdir / "downloads"),
    "report_output": str(workdir / "output" / "corp-report.xlsx"),
    "extract_output": str(workdir / "output" / "corp-extract.json"),
    "bizno_cache": str(workdir / "logs" / "bizno-cache.json"),
    "bizno_results": str(workdir / "logs" / "bizno-results.json"),
    "realty_cart_log": str(workdir / "logs" / "cart-realty-log.json"),
    "realty_download_log": str(workdir / "logs" / "download-realty-log.json"),
    "cart_log": str(workdir / "logs" / "cart-log.json"),
    "cart_corpnum_log": str(workdir / "logs" / "cart-corpnum-log.json"),
    "download_log": str(workdir / "logs" / "download-log.json"),
    "download_temp": str(workdir / "tmp-downloads"),
})
pathlib.Path("config.json").write_text(json.dumps(config, ensure_ascii=False, indent=2) + "\n")
PY

2. TouchEn nxKey와 로그인 수단을 먼저 확인한다

2. 先确认TouchEn nxKey及登录手段

  1. 인터넷등기소 로그인 페이지를 브라우저로 직접 연다.
  2. TouchEn nxKey 설치 안내가 나오면 설치 후 브라우저 또는 PC를 재시작한다.
  3. 공동인증서/간편인증/아이디 로그인 중 사용자가 선택한 방식으로 직접 로그인한다.
  4. 카드 결제가 가능한지 확인한다.
  1. 用户手动在浏览器中打开互联网登记处登录页面。
  2. 若出现TouchEn nxKey安装提示,完成安装后重启浏览器或PC。
  3. 用户选择公共认证证书/简易认证/账号登录中的任意方式手动完成登录。
  4. 确认银行卡支付功能可用。

3. 법인등기부등본 장바구니 담기

3. 添加法人登记簿副本至购物车

법인등록번호를 알고 있으면 정확도가 높은 upstream
iros_cart_by_corpnum.py
흐름을 우선한다. 상호명만 있으면
iros_cart.py
를 사용하되 사명변경·특수문자 때문에 실패할 수 있어 실패분은 법인등록번호로 재시도한다.
bash
python iros_cart_by_corpnum.py
若已知法人登记编号,优先使用准确率更高的上游
iros_cart_by_corpnum.py
流程。若仅知道公司名称,可使用
iros_cart.py
,但可能因名称变更·特殊字符导致失败,失败部分需通过法人登记编号重新尝试。
bash
python iros_cart_by_corpnum.py

또는

python iros_cart.py

완료되면 브라우저의 결제대상목록으로 이동한다. 사용자는 브라우저에서 페이지당 10건 단위로 직접 카드 결제를 완료하고, 터미널에는 결제가 끝난 뒤 Enter를 입력한다.
python iros_cart.py

完成后跳转到浏览器中的支付对象列表页面。用户在浏览器中按每页10件的单位手动完成银行卡支付,支付完成后在终端中按Enter键。

4. 법인 결제 후 열람·저장

4. 法人支付后的查看·保存

결제가 끝난 법인 등기부등본은 upstream
iros_download.py
또는 마법사 메뉴의 법인 열람·저장 흐름으로 저장한다.
bash
python iros_download.py
저장 경로는
config.json
save_dir
로 관리하되, 위 예시처럼
$workdir/downloads
를 사용하고 공개 저장소 하위 경로를 사용하지 않는다.
companies_list
$workdir/companies-input.json
을 가리키는지 결제 전에 확인하면 결제 후
iros_download.py
FileNotFoundError
로 중단되는 일을 피할 수 있다.
已完成支付的法人登记簿副本可通过上游
iros_download.py
或向导菜单中的法人查看·保存流程进行保存。
bash
python iros_download.py
保存路径由
config.json
save_dir
管理,建议使用上述示例中的
$workdir/downloads
,不使用公开仓库下的路径。支付前确认
companies_list
指向
$workdir/companies-input.json
,可避免支付后
iros_download.py
FileNotFoundError
中断。

5. 부동산등기부등본 장바구니 담기

5. 添加不动产登记簿副本至购物车

부동산은 주소 목록 반복 입력과 장바구니 담기까지만 자동화를 우선 권장한다.
bash
python iros_cart_realty.py
결제, 열람, 다운로드는 인터넷등기소 웹 UI에서 사용자가 직접 일괄 결제·일괄열람출력·일괄저장을 수행하는 것이 보통 더 빠르고 안전하다. 필요할 때만
iros_download_realty.py
를 검토한다.
不动产流程优先建议仅自动化地址列表重复输入及添加至购物车的环节。
bash
python iros_cart_realty.py
支付、查看、下载操作由用户在互联网登记处Web UI中手动进行批量支付·批量查看打印·批量保存通常更快更安全。仅在必要时考虑使用
iros_download_realty.py

6. 마법사 경로

6. 向导流程

처음 쓰는 사용자는 upstream
iros_wizard.py
메뉴가 가장 안전하다.
bash
python iros_wizard.py
메뉴 요약:
  • 법인등기부등본 — 장바구니 담기
  • 법인등기부등본 — 결제 후 열람·저장
  • 부동산등기부등본 — 장바구니 담기
  • 부동산등기부등본 — 결제 후 열람·저장
  • 사업자번호 → 법인정보 조회 (
    excel_path
    $workdir/customer-list.xlsx
    )
  • 다운로드된 법인 PDF → 종합 리포트 엑셀 생성 (
    excel_path
    pdf_dir
    는 저장소 밖 경로)
首次使用的用户优先选择上游
iros_wizard.py
菜单,安全性最高。
bash
python iros_wizard.py
菜单摘要:
  • 法人登记簿副本 — 添加至购物车
  • 法人登记簿副本 — 支付后查看·保存
  • 不动产登记簿副本 — 添加至购物车
  • 不动产登记簿副本 — 支付后查看·保存
  • 经营者编号 → 法人信息查询(
    excel_path
    $workdir/customer-list.xlsx
  • 已下载的法人PDF → 生成综合报告Excel(
    excel_path
    pdf_dir
    为仓库外路径)

Response policy

响应规则

  • 먼저 “로그인과 결제는 사용자가 직접”이라고 말한다.
  • 법인과 부동산을 구분해 권장 자동화 범위를 설명한다.
  • TouchEn nxKey 사전 설치와 브라우저 재시작 가능성을 안내한다.
  • 발급 대상 목록, PDF, Excel, 보고서에는 개인정보/민감정보가 있을 수 있으므로 저장소 밖 비공개 폴더를 사용하게 한다.
  • 법률 자문이나 권리관계 해석으로 보일 수 있는 표현을 피하고, 등기부등본 발급 보조와 파일 정리까지만 돕는다.
  • 원 저작자/참고 구현 링크를 문서나 답변에 남긴다:
    challengekim/iros-registry-automation
    https://github.com/challengekim/iros-registry-automation
  • 首先说明“登录与支付需用户手动完成”。
  • 区分法人与不动产,说明推荐的自动化范围。
  • 告知用户需提前安装TouchEn nxKey及可能需要重启浏览器的情况。
  • 提醒用户申请对象列表、PDF、Excel、报告中可能包含个人信息/敏感信息,需使用仓库外的私有文件夹。
  • 避免出现可能被视为法律咨询或权利关系解读的表述,仅协助完成登记簿副本申请及文件整理。
  • 在文档或回复中保留原作者/参考实现链接:
    challengekim/iros-registry-automation
    https://github.com/challengekim/iros-registry-automation

Verification

验证

로그인 없이 가능한 검증:
  • upstream 저장소 clone
  • pip install -r requirements.txt
  • playwright install chromium
  • python iros_wizard.py
    실행 후 메뉴/입력 파일 안내가 정상 표시되는지 확인
로그인 세션이 필요한 최종 smoke:
  1. 사용자가 직접 IROS에 로그인한다.
  2. 테스트용 1건을 장바구니에 담는다.
  3. 사용자가 직접 결제한다.
  4. 열람·저장 경로가 PDF를 저장하는지 확인한다.
  5. 산출물 경로와 개인정보를 PR/로그에 남기지 않는다.
无需登录即可进行的验证:
  • 克隆上游仓库
  • 执行
    pip install -r requirements.txt
  • 执行
    playwright install chromium
  • 运行
    python iros_wizard.py
    后,确认菜单/输入文件提示正常显示
需要登录会话的最终冒烟测试:
  1. 用户手动登录IROS。
  2. 将1件测试对象添加至购物车。
  3. 用户手动完成支付。
  4. 确认查看·保存路径可正常保存PDF。
  5. 确保输出路径及个人信息未被提交至PR/日志中。

Done when

完成标准

  • 법인/부동산 대상 유형과 입력 형식이 구분됐다.
  • 로그인, 인증, 결제를 사람이 직접 처리한다는 안내가 명확하다.
  • TouchEn nxKey와 페이지당 10건 결제 제약이 안내됐다.
  • 원 저작자
    challengekim
    과 참고 구현 링크가 포함됐다.
  • 已区分法人/不动产对象类型及输入格式。
  • 明确告知用户登录、认证、支付需手动处理。
  • 已说明TouchEn nxKey及每页10件支付限制。
  • 已包含原作者
    challengekim
    及参考实现链接。