KYC가 필요 없는 서비스 Top 4
요약
KYC가 필요 없는 서비스 데이터를 스크래핑 대신 API, JSON, RSS 등 기계 친화적인 방식으로 활용하는 방법을 소개합니다. LessKYC, XMRList, KYCnot.me, Monerica 등 4가지 데이터 소스를 통해 효율적인 데이터 기반 도구를 구축하는 가이드를 제공합니다.
핵심 포인트
- 스크래핑 대신 JSON, RSS, API 등 구조화된 데이터 활용 권장
- LessKYC: 속도 제한 없는 정적 JSON API 제공
- XMRList: 파싱이 용이한 RSS 및 사이트맵 제공
- KYCnot.me: 데이터 보강에 적합한 v1 엔드포인트 제공
- Monerica: GitHub를 통한 오픈 소스 데이터 모델 활용 가능
몇 주마다 누군가는 제휴 링크가 90%이고 복사해서 붙여넣은 내용이 10%인 "KYC가 필요 없는 거래소 Top 10" 리스트를 게시하곤 합니다. 개발자로서 그런 형식은 정말 짜증이 납니다. 저는 발행되는 날 바로 구식이 되어버리는, 누군가 수동으로 선별한 Top 10을 원하는 것이 아닙니다. 저는 데이터셋 (dataset)을 원합니다.
그래서 저는 제가 실제로 소비할 수 있는 방식 — 즉, 스크래핑 (scraping)해야 하는 <div> 지옥 대신 JSON, RSS, 또는 문서화된 엔드포인트 (endpoint) — 으로 데이터를 공개하는 KYC 미필요 디렉토리들을 찾아 나섰습니다. 알고 보니 몇몇 곳은 그렇게 하고 있었고, 이들을 블로그 포스트가 아닌 API로 취급하면 진정으로 유용한 것들을 만들 수 있습니다. 예를 들어 "이걸 Monero로 결제할 수 있을까?"를 확인하는 체커, 본인이 사용하는 벤더 리스트를 위한 개인정보 보호 점수 린터 (linter), 또는 의존하고 있는 서비스가 조용히 KYC를 추가했을 때 경고를 보내주는 봇 같은 것들 말이죠.
이 포스트에서는 제가 사용하는 네 가지 소스와 그들이 반환하는 실제 데이터 형태, 그리고 이를 기반으로 구축한 작은 Node 빌드에 대해 설명합니다. 스크래핑도, Selenium도, 쓸데없는 짓도 없습니다.
기계 친화적인 순서대로 나열한 네 가지 소스
1. LessKYC — 깔끔한 정적 JSON API. 이 포스트를 쓰게 만든 장본인입니다. LessKYC는 점수를 매긴 모든 서비스에 대해 KYC 레벨, 0~10점 사이의 점수, 통화, 네트워크, 그리고 라벨링된 속성(attributes)을 포함한 전체 내역이 담긴 무료 정적 JSON 파일을 공개합니다. 정적 JSON은 속도 제한(rate limits)이 없고, 인증(auth)이 필요 없으며, 캐시 친화적(cache-friendly)이라는 것을 의미합니다. 두 개의 엔드포인트가 있습니다:
GET https://lesskyc.com/api/services.json # 모든 서비스 + 점수
GET https://lesskyc.com/api/attributes.json # 모든 속성 + 개수
2. XMRList — RSS + 사이트맵 (sitemap). XMRList는 Monero 전용 가맹점 디렉토리입니다 ("실제로 XMR을 받는 곳은 어디인가?"). JSON API는 없지만, 깔끔한 RSS 피드와 XML 사이트맵을 제공하며, 둘 다 아주 쉽게 파싱(parse)할 수 있습니다:
GET https://xmrlist.com/rss/feed.xml
GET https://xmrlist.com/sitemap.xml
3. KYCnot.me — 문서화된 v1 엔드포인트. 베테랑 오픈 소스 디렉토리입니다. 단일 서비스 조회를 위한 실제 쿼리 엔드포인트를 공개하고 있어, 데이터 보강 (enrichment)에 완벽합니다 (슬러그(slug)를 가지고 있고, 전체 레코드를 원하는 경우):
POST https://kycnot.me/api/v1/service/get
body: { "slug": "..." } | { "id": ... } | { "serviceUrl": "..." }
4. Monerica — RSS + 오픈 소스 (open source). Monerica는 광범위한 "Monero 순환 경제" 디렉토리입니다. RSS 피드와 프로젝트 전체가 GitHub(monerica-project)에 공개되어 있으므로, 가공되지 않은 데이터 모델 (raw data model)을 원한다면 소스 코드를 읽어볼 수 있습니다.
이 중 두 곳(LessKYC 및 KYCnot.me)은 API를 기반으로 서비스를 구축할 경우 데이터 소스로서 자신들을 명시(credit)할 것을 명시적으로 요구합니다. 이는 무료로 구조화된 데이터 (structured data)를 사용하는 것에 대한 공정한 거래입니다. 출력 결과에 출처 표기 문자열 (attribution string)을 포함하고 계속 진행하면 됩니다.
중요한 형태: LessKYC services.json
수정되지 않은 실제 레코드는 다음과 같습니다:
{
"slug": "mullvad",
"name": "Mullvad",
...
kycLevel이 핵심 필드이며, 0~4 사이의 서수 (ordinal)로 표현됩니다:
0— 신원 확인 불필요 (identity-free)1— KYC 언급 없음2— 드문 KYC 발생3— "샷건 (shotgun)" KYC (자동 플래그에 의해 걸릴 수 있음)4— 필수 신원 확인 (mandatory ID)
attributes[].kind는 good 또는 bad 중 하나이며, 이를 통해 산문 (prose)을 파싱할 필요 없이 자신만의 점수를 계산하거나 빨간색/초록색 칩 (chips)을 렌더링하는 것이 매우 간단해집니다.
빌드: 약 25줄로 만드는 "KYC 불필요, Monero 결제 가능" 탐색기
Node 18+ 버전에는 fetch가 내장되어 있어 의존성 (dependencies)이 전혀 필요 없습니다.
// findServices.js — Node 18+
const API = "https://lesskyc.com/api/services.json";
...
실행하면 별도의 리스트 기사 (listicle) 없이도 실시간 순위 목록을 얻을 수 있습니다:
Source: Data by LessKYC — https://lesskyc.com
...
9.0 Mullvad VPN
...
필터를 바꾸면 다른 도구가 됩니다. 자산을 동결할 수 있는 수탁형 (custodial) 서비스이면서 동시에 피해야 할 모든 서비스를 찾고 싶다면, attributes를 기준으로 필터링하세요:
const risky = services.filter((s) =>
s.attributes.some((a) => a.kind === "bad" && /custodial|freeze/i.test(a.label))
);
데이터가 실제로 말해주는 것
리스트 기사들은 분포 (distribution)를 절대 보여주지 않습니다. 하지만 데이터셋은 보여줍니다. 현재의 services.json을 가져오면 (제가 실행한 날 기준 108개 서비스):
- 108개 서비스 중 74개가 KYC 레벨 0 — 완전히 신원 확인이 필요 없는 상태입니다. "no-KYC"라는 라벨은 대부분 유효합니다. 레벨 1~2에 해당하는 롱테일(long tail)은 적으며, 엄격한 신분증(ID)을 요구하는 경우는 거의 없습니다.
- 108개 서비스 중 42개가 Monero를 수락 — 약 39%입니다. 단일 프라이버시 코인임에도 불구하고, 프라이버시를 존중하는 서비스 10개 중 4개에서 결제가 가능하다는 점은 이곳에서 결제 계층(settlement layer)으로서 XMR이 갖는 역할에 대한 확실한 신호입니다.
- 높은 점수를 받은 서비스들은 동일한 속성들에 집중되어 있습니다:
No registration(등록 불필요),Strict no-log policy(엄격한 로그 미보관 정책),Open source(오픈 소스),Independently audited(독립적 감사 완료). 만약 프라이버시 제품을 만들고 있다면, 이것이 바로 사용자들이 보상하는 요소들의 체크리스트입니다.
다섯 줄 정도의 집계 코드로 직접 KYC 레벨 히스토그램(histogram)을 확인할 수 있습니다:
const hist = services.reduce((acc, s) => {
acc[s.kycLevel] = (acc[s.kycLevel] ?? 0) + 1;
return acc;
...
이것이 제휴 게시물(affiliate posts)이 제공할 수 없는 부분입니다. 매주 코드를 다시 실행하여 차이점(diff)을 비교할 수 있습니다. 서비스의 레벨이 0에서 3으로 떨어지는 것은 크론 잡(cron job)이 반드시 포착해야 할 바로 그런 변화입니다.
KYCnot.me를 통한 정보 보강
특정 서비스에 대해 제2의 의견을 듣고 싶다면, 슬러그(slug)를 이용해 KYCnot.me를 조회하세요. 해당 서비스는 자체적인 kycLevel, verificationStatus, categories, serviceUrls, 그리고 결정적으로 검토한 서비스 약관을 추적하는 tosUrls를 반환합니다:
curl -X POST https://kycnot.me/api/v1/service/get \
-H "Content-Type: application/json" \
-d '{"slug": "mullvad"}'
두 개의 독립적인 디렉토리를 교차 참조(cross-referencing)하는 것이 핵심입니다. LessKYC가 레벨 0이라고 말하고 KYCnot.me도 이에 동의한다면, 이는 한 사이트의 마케팅 문구보다 훨씬 강력한 신호입니다. 만약 두 곳의 의견이 다르다면, 이는 사람이 직접 확인해 볼 가치가 있는 경고 신호이며, 대시보드에 노출하기에 완벽한 요소입니다.
어디에서 사용할 수 있을까? XMRList의 RSS 파싱하기
LessKYC와 KYCnot.me는 _무엇이 프라이버시를 보장하는지_를 알려줍니다. XMRList는 _누가 Monero를 받는지_를 알려줍니다 — 기프트 카드, 호스팅, VPN, 전자제품 등 다양한 분야의 300개 이상의 업체들이 있으며, 각 업체는 상태(Verified / Admitted / Questionable / Scam)와 실제 사용자 리뷰를 보유하고 있습니다. JSON은 없지만, RSS는 단순한 XML입니다:
// Node: npm i fast-xml-parser
import { XMLParser } from "fast-xml-parser";
...
이것을 Monerica의 피드(https://monerica.com/rss/feed.xml)로도 지정하면, Slack이나 정적 사이트(static site)로 파이프라인을 연결할 수 있는 "최신 Monero 결제 지원 서비스" 통합 스트림을 구축할 수 있습니다.
보너스: 사이드 프로젝트에서 실제로 Monero 결제 받기
개발자라면, 이러한 디렉토리의 "반대" 측에 서는 것, 즉 직접 XMR을 결제받는 것이 더 흥미로운 움직임일 것입니다. 결제 프로세서(payment processor)나 KYC가 완료된 가맹점 계정(merchant account)은 필요하지 않습니다. 본인의 지갑에 대해 monero-wallet-rpc를 실행하고 이를 폴링(poll)하세요. JSON-RPC는 일반적인 HTTP입니다:
curl http://127.0.0.1:18083/json_rpc \
-d '{"jsonrpc":"2.0","id":"0","method":"get_transfers","params":{"in":true}}' \
-H 'Content-Type: application/json'
각 고객에게 고유한 하위 주소(subaddress, create_address)를 부여하고, get_transfers를 통해 해당 주소로 입금되는 결제를 모니터링한 뒤, 컨펌(confirm)되면 주문을 이행하세요. 이것이 전체 패턴입니다. 차지백(chargeback)도 없고, 중간 관리자도 없으며, Monero는 온체인(on-chain)에 신원을 노출하지 않기 때문에 고객의 신원이 귀하의 시스템에 절대 들어오지 않습니다. 서비스가 활성화되면 XMRList에 직접 등록하여 루프를 완성하세요.
출처 표기 및 현실적인 점검
두 가지 솔직한 참고 사항을 전달합니다:
- 출처를 밝히세요. LessKYC와 KYCnot.me는 구조화된 데이터(structured data)를 제공하며 출처 표기만을 요구합니다.
attribution필드는 LessKYC 페이로드(payload)에 바로 포함되어 있으니, 이를 출력하세요. - "No-KYC"는 스펙트럼이며, 정책은 변합니다. 오늘 레벨 0(level-0) 점수를 받은 서비스가 이용 약관 업데이트 이후 "플래그(flag)가 지정될 경우 본인 확인을 요청할 수 있음"으로 변경될 수 있습니다. 이것이 바로 스냅샷(snapshot)을 신뢰하는 대신 정기적으로 데이터를 쿼리(query)해야 하는 이유입니다. 또한, 이 모든 것이 귀하가 거주하는 지역의 법률을 무시해도 된다는 면허는 아닙니다. 프라이버시(privacy)와 컴플라이언스(compliance)는 서로 반대되는 개념이 아닙니다.
만약 이러한 것들을 활용해 무언가를 구축하고자 한다면, 알아둘 가치가 있는 디렉토리로는 LessKYC (이 포스트가 참고하고 있는 JSON API 및 스코어링 루브릭), XMRList (Monero 가맹점 데이터), KYCnot.me (오픈 소스 기반의 제2의 의견 조회 서비스), 그리고 Monerica (가장 폭넓은 경제 관점 제공)가 있습니다. 이들을 절대적인 진리(gospel)가 아닌 데이터로 취급하십시오. 데이터를 비교(diff)하고 교차 검증(cross-check)하여, 단순한 'Top 10' 리스트보다 더 나은 무언가를 만들어내시기 바랍니다.
no-KYC 데이터셋을 기반으로 무엇을 만들 수 있을까요? 저는 제가 의존하는 종속성(dependency)의 KYC 수준이 변경될 때 이슈(issue)를 생성하는 GitHub Action을 만들어보고 싶다는 생각이 듭니다. 혹시 저보다 먼저 구현하신 분이 있다면 알려주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기