telegram.html — 이 조사가 반영된 객체별 필드 통합표(4객체 · 50필드 · 최종 결정 박스). 이 문서는 그 판정의 근거다.
index.html — 소셜 7종 audit 전체
토큰이 거는 텔레그램 링크는 절반이 가드 포털이고, 진짜 커뮤니티는 그 뒤에 있어 우리가 못 본다. 그리고 그 포털은 세 가지 방식으로 재사용된다 — 그중 하나(username 이관)는 같은 주소가 시간이 지나면 다른 채널을 가리키게 만든다.
포털과 목적지는 1:1이다(36개 포털 → 고유 chat id 36종, 중복 0). 재사용은 그 위층에서 일어난다 — 하나의 포털에 여러 토큰이 붙는다.
| 포털 채널 | 가드 대상 id | 채널 생성일 | 토큰 수 | 관측된 기간 |
|---|---|---|---|---|
bridlelayer | -1004322983935 | 2026-06-24 | 2 | 06-24~27 한 주 |
seelprotocol | -1004328168353 | 2026-07-16 | 2 | 06-24~27 한 주 |
bondrbet | -1004257565477 | 2026-06-25 | 2 | 06-24~27 한 주 |
aegisprivacy | -1004358702086 | 2026-06-24 | 2 | 06-19~21 + 06-22~24 두 주 |
flybubbleman | -1004338578990 | 2026-07-15 | 2 | 06-19~21 한 주 |
aegisprivacy 는 서로 다른 주에 걸쳐 있다 — 한 번 만든 커뮤니티를 시차를 두고 다시 쓴 것이다. 나머지 4건은 같은 주 안이라 동시 다중 발행에 가깝다.| 포털 채널 | 채널 생성일 | 가드 대상 id | 토큰 수 | 방치 기간 |
|---|---|---|---|---|
beep_pump | 2025-05-17 | -1002518571054 | 1 | 약 13개월 |
domonation | 2025-06-18 | -1004491986244 | 2 | 약 12개월 |
toad_pump | 2025-07-01 | -1002795450993 | 1 | 약 12개월 |
1년 전에 만들어 둔 채널이 2026-06 토큰에 붙었다. “도메인을 미리 사 두는” 것과 같은 축이다.
seelprotocol 2026-06-24~27 수집 토큰이 링크 · 채널 생성일 2026-07-16
flybubbleman 2026-06-19~21 수집 토큰이 링크 · 채널 생성일 2026-07-156월에 참조된 채널의 생성일이 7월이다. 6월 시점의 그 채널은 이미 없고, 같은 username 을 다른 채널이 차지했다. 지금 fetch 하면 그 새 채널이 나온다.
Telegram 은 공개 username 을 놓으면 다른 사람이 가져갈 수 있다 — X 핸들과 같고 Reddit(영구 불변)과 반대다.
위 다이어그램의 근거가 된 모든 케이스다. 토큰 주소를 누르면 우측에 gmgn 차트가 뜬다. 그때 관측한 title/subs 는 6월 수집 당시 값이고, 채널 생성일 은 2026-07-31 라이브 조사 값이라 시점이 다르다.
| 채널 · 유형 | 채널 생성일 / 가드 id | 토큰 주소 | 수집 기간 | 그때 관측한 title | subs |
|---|---|---|---|---|---|
bridlelayerPORTAL토큰 2 | 생성 2026-06-24-1004322983935 | 06-24~27 | BRIDLE || Portal | 32 | |
| 〃 | 06-24~27 | BRIDLE || Portal | 32 | ||
seelprotocolPORTAL토큰 2 | 생성 2026-07-16 ⚠-1004328168353 | 06-24~27 | Seel Chat | 24 | |
| 〃 | 06-24~27 | Seel Chat | 24 | ||
bondrbetPORTAL토큰 2 | 생성 2026-06-25-1004257565477 | 06-24~27 | bondrbet | — | |
| 〃 | 06-24~27 | bondrbet | — | ||
aegisprivacyPORTAL토큰 2 | 생성 2026-06-24-1004358702086 | 06-19~21 | AEGIS Portal | 49 | |
| 〃 | 06-22~24 | aegisprivacy | 4 | ||
flybubblemanPORTAL토큰 2 | 생성 2026-07-15 ⚠-1004338578990 | 06-19~21 | The BubbleMan | 45 | |
| 〃 | 06-19~21 | The BubbleMan | 45 | ||
beep_pumpPORTAL · 묵힘토큰 1 | 생성 2025-05-17-1002518571054 | 06-24~27 | BEEP | 3 | |
domonationPORTAL · 묵힘토큰 1 | 생성 2025-06-18-1004491986244 | 06-22~24 | DomoNation Entry | 60 | |
toad_pumpPORTAL · 묵힘토큰 1 | 생성 2025-07-01-1002795450993 | 06-22~24 | Toad | 5 | |
kotonmaster빈껍데기토큰 10 | 생성 2026-06-22 가드 없음 → id 없음 | 06-24~27 | KOTON | 43 | |
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
| 〃 | 06-24~27 | KOTON | 43 | ||
meetbigears빈껍데기토큰 6 | 생성 2026-06-17 가드 없음 → id 없음 | 06-19~21 | Big Ears | 27 | |
| 〃 | 06-19~21 | Big Ears | 27 | ||
| 〃 | 06-19~21 | Big Ears | 27 | ||
| 〃 | 06-19~21 | Big Ears | 27 | ||
| 〃 | 06-19~21 | Big Ears | 27 | ||
| 〃 | 06-19~21 | Big Ears | 27 | ||
leagueofmeme_sol비공개토큰 4 | 생성 — 가드 없음 → id 없음 | 06-24~27 | PORTAL LEAGUE OF MEME $… | 15 | |
| 〃 | 06-24~27 | PORTAL LEAGUE OF MEME $… | 15 | ||
| 〃 | 06-24~27 | PORTAL LEAGUE OF MEME $… | 15 | ||
| 〃 | 06-24~27 | PORTAL LEAGUE OF MEME $… | 15 | ||
gibglue활성토큰 3 | 생성 2026-06-29 가드 없음 → id 없음 | 06-24~27 | GlueOS | 199 | |
| 〃 | 06-24~27 | GlueOS | 199 | ||
| 〃 | 06-24~27 | GlueOS | 199 |
① seelprotocol·flybubbleman 은 채널 생성일이 토큰 수집 기간보다 뒤다(⚠ 표시) — 그 사이 username 이 다른 채널로 넘어갔다.
② aegisprivacy 는 두 관측 사이에 값이 실제로 바뀌었다 — title AEGIS Portal → aegisprivacy, subs 49 → 4. 같은 username 인데 관측 시점마다 다른 값이 나온다는 실증이다.
leagueofmeme_sol 의 저장된 title 이 PORTAL LEAGUE OF MEME $… 다 — HTML 엔티티가 디코드되지 않았다. 현재 fetcher 의 decode() 가 $(달러) 를 처리하지 않는 버그다.토큰이 링크를 건 시점과 우리가 fetch 하는 시점 사이에 대상 자체가 바뀔 수 있다. 필드별로 무엇이 변하고 무엇이 안 변하는지가 조인키 선택을 결정한다.
| 값 | 성격 | 무슨 일이 일어나나 | 쓸모 |
|---|---|---|---|
username (t.me/{name}) | mutable | 🔴 소유자가 바꿀 수 있고, 놓으면 남이 가져간다. 실측 2건에서 이관 확인 | 조인키로 부적합 |
guardChatId (-100…) | immutable | 그 방이 살아있는 한 절대 안 변한다. 포털 이름을 갈아끼워도 그대로 | 조인키로 적합 |
title | mutable | 언제든 변경. 현재 코드가 fixed 로 표기한 건 버그 | 라벨용 |
| 채널 생성일 (메시지 #1) | immutable | Channel created 타임스탬프. 채널이 살아있는 한 고정 | 재사용·이관 탐지의 기준선 |
subscriberCount | mutable | 게다가 포털이면 커뮤니티가 아니다 (중앙 7명) | as-of 필요 |
| 실제 그룹 멤버수 | 관측 불가 | 봇이 그룹 멤버여야 얻는다 | — |
username 은 가리키는 대상이 바뀌는 주소이고, guardChatId(-100…)는 대상 그 자체의 번호다. 포털 이름을 갈아끼워도 이 번호는 따라오지 않는다.-100… 은 정확히 무엇인가Telegram 내부(MTProto)에서 채널과 슈퍼그룹은 같은 객체 타입이다 — 둘 다 channel 생성자로 표현되고 broadcast / megagroup 플래그로만 갈린다. ID 풀이 하나라서 둘 다 -100 접두를 쓴다.
→ -100… 만 보고는 채널인지 그룹인지 구분할 수 없다. 그래서 필드명은 guardChatId 가 정확하다.
다만 개별 사례는 화면으로 판별된다 — $OGDOGE PORTAL 은 subscribers(=broadcast 채널), $OGDOGE on SOL 은 members + online + Video Chat(=megagroup) 이었다.
| 할 일 | 가능? | 왜 |
|---|---|---|
| 같은 값인지 비교 (등가 판정) | 가능 | 값 비교만 하면 된다 — 재사용·지문 용도가 여기 해당 |
| 이름 · 멤버수 · 설명 조회 | 불가 | Bot API getChat 은 봇이 그 방 멤버여야 동작 |
| 방 생성일 | 불가 | 어떤 무료 경로로도 안 나온다 |
| 메시지 읽기 | 불가 | 동일 |
| 접근 링크 만들기 | 불가 | t.me/c/{id} 는 멤버만 열리고(실측 og:title 빈 문자열), 초대링크는 관리자가 따로 발급하는 별개 객체라 id 에서 유도할 수 없다 |
| MTProto 로 우회 | 불가 | InputChannel 이 channel_id + access_hash 를 함께 요구한다. access_hash 는 username 해석·검색·같은 방 소속 등 사전 상호작용으로만 얻고, 계정·세션 간 재사용도 안 된다 — 스팸 방지를 위한 의도된 설계 |
확정 방법 — 그 방 안에서 메시지 링크를 복사해 t.me/c/{id}/… 의 숫자가 일치하는지 보면 된다.
봇 username 은 추가 요청이 없다 — 포털 본문의 verify 링크에 이미 들어 있다. 봇 상세(설명·MAU)는 t.me/{bot} 를 따로 받아야 하지만, 봇은 토큰마다 다른 게 아니라 몇 종뿐이라 차원 테이블로 캐시하면 된다 — 실측 포털 36개 → 고유 봇 4종.
| 봇 | 건수 | 판정 | 근거 |
|---|---|---|---|
@CollabLandlBot | 16 | 🔴 사칭 확정 | 공식명 collablandbot 에 소문자 l 삽입 |
@safeguard | 12 | ⚠️ 판정 불가 | 공식 봇 목록을 못 찾았다. 짧은 프리미엄 username · 실제 설명 · MAU 25.3만 → 정황은 진짜 쪽 |
@Collab_Land_Media_bot | 7 | 🔴 사칭 확정 | 공식명이 아니다 |
@coIIab_Iands_bot | 1 | 🔴 사칭 확정 | 대문자 I 로 l 을 위장(homoglyph) |
Collab.Land 는 공식 문서가 “정확히 collablandbot 이 아니면 사칭” 이라고 못박아 둬서 판정이 됐다. Safeguard 는 그런 공식 목록을 찾지 못했다 — 표본의 12/36(33%) 이 판정 공백으로 남는다.
보안 업체들이 “Fake Safeguard” 라는 공격 계열을 문서화해 뒀다(SlowMist 등). 수법은 클립보드 주입 — verify 를 누르면 악성 명령이 클립보드에 복사되고, 사용자가 Run/터미널에 붙여넣으면 PowerShell 이 RAT(Remcos)을 내려받아 지갑 파일·개인키를 턴다. ⚠️ 다만 원문은 봇 username 을 하나도 특정하지 않고 진짜/가짜 판별 기준도 제시하지 않는다 — @safeguard 자체가 그 가짜인지 사칭당하는 진짜인지는 확인되지 않았다.
보안 문헌의 공통 지표는 “정상 인증은 지갑 연결이나 명령어 붙여넣기를 요구하지 않는다” 인데, 그건 verify 를 눌러봐야 알 수 있어 우리 수집 범위 밖이다.
토큰 주소를 확보하지 못해 §③ 표와 분리한다. 셋 다 @safeguard 포털이다.
| 포털 | 채널 생성 | 생성→가드 | 구독자 | 조회수 | 조회/구독 | 봇 | chat id | 특기 |
|---|---|---|---|---|---|---|---|---|
hyperbullsol | 2026-07-16T19:57:11 | 161초 | 513 | 3.42K | 6.7배 | @safeguard | -1004498747915 | 외부 링크 2개 — hyperbullsol.com · x.com/hyperbullsol. 본문에 티커 $HBULL·$ANSEM |
AlbemarlePortal | 2026-07-01T16:13:30 | 76초 | 340 | 1.59K | 4.7배 | @safeguard | -1004303211499 | 설명 WALO 🇺🇸. 메시지 번호가 #2 → #4 — #3 삭제됨 |
Dogecoin_OGSOL | 2026-04-22T23:19:12 | 10분 | 486 | 6.83K | 14.1배 | @safeguard | -1003511959847 | 유일하게 실제 방을 본 사례 — 1,377 members(포털의 2.8배) |
| 후보 | 무엇 | 왜 쓸모 있나 | 상태 |
|---|---|---|---|
| 포털 본문의 외부 링크 | hyperbullsol.com · x.com/hyperbullsol | 소셜 필드에 없어도 여기서 나온다. 그리고 채널명과 도메인·핸들이 일치하는지가 자기 프로젝트 여부 판정이 된다 — website 의 discoveredLinks 가 남의 계정을 긁어와 폐기된 것과 방향이 반대다 | 미검증 |
| 메시지 번호 갭 | AlbemarlePortal 은 #2 → #4 | max(messageId) − 보이는 메시지 수 = 삭제 건수. 지운 흔적이 남는다 | 미검증 |
텔레그램은 공식 API 를 안 쓴다 — t.me HTML 을 정규식으로 파싱한다. 내가 조사에 쓴 t.me/s/{name} 도 같은 방식이다.
| 소셜 | 실제 호출 | 비용 | 비고 |
|---|---|---|---|
| telegram | t.me/{name} HTML 스크래핑 | 무료 | 공식 API 아님 — 정규식 파싱 |
| website | rdap.org + 페이지 GET + urlscan.io/api/v1 | 무료 | 3소스 독립 best-effort |
| github | api.github.com | 무료 | 공식 REST |
| youtube | googleapis.com/youtube/v3 | 무료 티어 | 공식 Data API v3 |
| x | api.twitterapi.io | 유료 | 비공식 3rd party 래퍼 |
| tiktok | Apify clockworks~tiktok-scraper | 유료 | actor |
Apify apify~instagram-scraper | 유료 | actor | |
Apify harshmaur~reddit-scraper | 유료 | actor |
가드가 없는 채널도 여러 토큰에 쓰인다. 이쪽은 chat id 가 없어 username 말고는 묶을 방법이 없다.
| 채널 | 생성일 | 토큰 수 | 정체 |
|---|---|---|---|
kotonmaster | 2026-06-22 | 10 | 빈껍데기 — 메시지가 Channel created·Channel photo updated 뿐 |
meetbigears | 2026-06-17 | 6 | 빈껍데기 |
leagueofmeme_sol | — | 4 | 비공개 — 프리뷰 자체가 없음 |
gibglue | 2026-06-29 | 3 | 활성 채널(메시지 20건) |
kotonmaster 는 메시지가 서비스 메시지 2건뿐인 빈 채널인데 토큰 10개가 이걸 커뮤니티로 걸었다. 6/22 에 만들어 며칠 안에 10번 쓴 것이다.| 항목 | 상태 |
|---|---|
| 표본 69개 | 고유 채널 307개 중 22%. 공유 채널 35개는 전량 포함했고 나머지는 무작위 — 공유 쪽이 과대표집돼 있다 |
| 라이브 시점 | 2026-07-31 관측. 수집 시점(6월)과 다르다 — §2-3 의 이관을 발견한 것도 이 시차 덕이지만, 다른 항목도 같은 시차를 안고 있다 |
| 커뮤니티 규모 대조 | 포털 vs 실제 방을 둘 다 본 사례가 1건뿐(486 vs 1,377). 비율을 일반화할 수 없다 |
| 토큰 발행일 부재 | §5 의 이관 탐지는 토큰 발행일이 있어야 성립하는데 이 레포엔 없다 — 수집 기간(split)으로 대체해 추정했다 |
chat id 의 의미 | 포털이 verify 링크에 적어둔 값일 뿐, 실제로 그 방에 입장되는지 직접 확인하지 않았다(§⑥). 딥링크 페이로드는 봇이 임의로 정한다 |
@safeguard 판정 | 공식 봇 목록을 찾지 못해 진짜/사칭을 가르지 못했다 — 표본의 33%. Fake Safeguard 공격 계열은 문서화돼 있으나 원문이 봇 username 을 특정하지 않는다 |
| 신호 후보 미검증 | §8-1 의 외부 링크·메시지 갭, 조회수/구독자 비율은 라벨로 검정한 적이 없다. 3건 관측일 뿐이다 |
| 가드 봇 사칭 판정 | Collab.Land 공식 문서가 collablandbot 하나만 공식이라고 명시하고 직접 사칭 경고를 한다. 표본의 24개(67%)가 비공식 이름이나, 개별 봇이 실제 악성인지는 확인하지 않았다 |