Telegram 가드 — 재사용은 어떻게 일어나고, 우리 관측은 어디서 어긋나나

실측 근거 · 표본 69개 채널 라이브 조사(2026-07-31) + 수집 데이터 telegram 362건
관련 문서

telegram.html — 이 조사가 반영된 객체별 필드 통합표(4객체 · 50필드 · 최종 결정 박스). 이 문서는 그 판정의 근거다.

index.html — 소셜 7종 audit 전체

한 문장 요약

토큰이 거는 텔레그램 링크는 절반이 가드 포털이고, 진짜 커뮤니티는 그 뒤에 있어 우리가 못 본다. 그리고 그 포털은 세 가지 방식으로 재사용된다 — 그중 하나(username 이관)는 같은 주소가 시간이 지나면 다른 채널을 가리키게 만든다.

① 구조 — 우리가 보는 것과 못 보는 것

■ 관측 가능 ■ 관측 불가 (검증 뒤) 토큰 소셜 필드 telegram: t.me/seelprotocol 포털 채널 — 우리가 fetch 하는 대상 title = "SEEL Protocol" subscribers = 7 ← 커뮤니티 아님 #1 2026-07-16T23:51:31 Channel created #2 2026-07-16T23:51:33 가드 설정 └ 2초 = 자동화 스크립트 본문에 verify 링크: t.me/CollabLandlBot?start=-1004328168353 ↑ 사칭 봇 67% ↑ 가드 대상 id(추정) 사람이 검증(30초) 실제 커뮤니티 — 우리는 못 본다 chat id = -1004328168353 ← 이것만 안다 멤버수 ✗ (예: 1,377명) 메시지 ✗ 그룹 생성일 ✗ ← 포털 생성일과 다른 값 t.me/c/{id} 시도 → og:title 빈 문자열(실측) 그래서 생기는 착시 우리가 "텔레그램 구독자 7명" 이라고 저장하지만, 실제 커뮤니티는 전혀 다른 규모일 수 있다. 유일하게 양쪽을 다 본 사례: 포털 486 subscribers 그룹 1,377 members → 2.8배 차이 · 비율은 케이스마다 다름 표본 69개의 실제 분포 가드 포털 36 (52%) 빈껍데기 21 (30%) 비공개 5 ( 7%) 활성 채널 4 ( 6%) 저활동 3 ( 4%) 현재 코드는 이 다섯을 전부 sourceType = tg_channel 하나로 저장한다 — 소비처가 구분할 방법이 없다 실측 근거: 표본 69개 라이브 조사(2026-07-31) · 수집 데이터 telegram 362건

② 재사용 3종 — 어떻게 일어나나

① 같은 포털을 여러 토큰이 쓴다 — 실측 5건 토큰 A (06-25) 토큰 B (06-26) 포털 t.me/bondrbet 그룹 -1004257565477 포털 1개 = 그룹 1개 (36/36 실측). 재사용은 그 위층 — 한 포털이 여러 토큰에 붙는다 ② 오래 전에 만들어 둔 채널을 나중에 쓴다 — 실측 3건 2025-06-18 채널 domonation 생성 2026-06 토큰 2개가 이 채널을 링크 약 12개월 방치 ③ username 이관 — 같은 주소가 다른 채널을 가리키게 된다 · 실측 2건 2026-06-24 토큰이 t.me/seelprotocol 링크 → 그때의 채널 X 를 가리킴 그 사이 채널 X 삭제 / 이름 변경 → username 이 풀린다 2026-07-16 채널 Y 생성 + 같은 이름 획득 → 지금 fetch 하면 Y 가 나온다

2-1. 같은 포털을 여러 토큰이 씀

포털과 목적지는 1:1이다(36개 포털 → 고유 chat id 36종, 중복 0). 재사용은 그 위층에서 일어난다 — 하나의 포털에 여러 토큰이 붙는다.

포털 채널가드 대상 id채널 생성일토큰 수관측된 기간
bridlelayer-10043229839352026-06-24206-24~27 한 주
seelprotocol-10043281683532026-07-16206-24~27 한 주
bondrbet-10042575654772026-06-25206-24~27 한 주
aegisprivacy-10043587020862026-06-24206-19~21 + 06-22~24 두 주
flybubbleman-10043385789902026-07-15206-19~21 한 주
aegisprivacy서로 다른 주에 걸쳐 있다 — 한 번 만든 커뮤니티를 시차를 두고 다시 쓴 것이다. 나머지 4건은 같은 주 안이라 동시 다중 발행에 가깝다.

2-2. 오래 묵힌 채널

포털 채널채널 생성일가드 대상 id토큰 수방치 기간
beep_pump2025-05-17-10025185710541약 13개월
domonation2025-06-18-10044919862442약 12개월
toad_pump2025-07-01-10027954509931약 12개월

1년 전에 만들어 둔 채널이 2026-06 토큰에 붙었다. “도메인을 미리 사 두는” 것과 같은 축이다.

2-3. 🔴 username 이관 — 가장 중요한 것

실측 2건에서 시간이 거꾸로 흐른다.
seelprotocol   2026-06-24~27 수집 토큰이 링크   ·   채널 생성일 2026-07-16
flybubbleman   2026-06-19~21 수집 토큰이 링크   ·   채널 생성일 2026-07-15

6월에 참조된 채널의 생성일이 7월이다. 6월 시점의 그 채널은 이미 없고, 같은 username 을 다른 채널이 차지했다. 지금 fetch 하면 그 새 채널이 나온다.

Telegram 은 공개 username 을 놓으면 다른 사람이 가져갈 수 있다 — X 핸들과 같고 Reddit(영구 불변)과 반대다.

③ 실측 케이스 전량 — 토큰 주소

위 다이어그램의 근거가 된 모든 케이스다. 토큰 주소를 누르면 우측에 gmgn 차트가 뜬다. 그때 관측한 title/subs 는 6월 수집 당시 값이고, 채널 생성일 은 2026-07-31 라이브 조사 값이라 시점이 다르다.

채널 · 유형채널 생성일 / 가드 id토큰 주소수집 기간그때 관측한 titlesubs
bridlelayer
PORTAL토큰 2
생성 2026-06-24
-1004322983935
06-24~27BRIDLE || Portal32
06-24~27BRIDLE || Portal32
seelprotocol
PORTAL토큰 2
생성 2026-07-16 ⚠
-1004328168353
06-24~27Seel Chat24
06-24~27Seel Chat24
bondrbet
PORTAL토큰 2
생성 2026-06-25
-1004257565477
06-24~27bondrbet
06-24~27bondrbet
aegisprivacy
PORTAL토큰 2
생성 2026-06-24
-1004358702086
06-19~21AEGIS Portal49
06-22~24aegisprivacy4
flybubbleman
PORTAL토큰 2
생성 2026-07-15 ⚠
-1004338578990
06-19~21The BubbleMan45
06-19~21The BubbleMan45
beep_pump
PORTAL · 묵힘토큰 1
생성 2025-05-17
-1002518571054
06-24~27BEEP3
domonation
PORTAL · 묵힘토큰 1
생성 2025-06-18
-1004491986244
06-22~24DomoNation Entry60
toad_pump
PORTAL · 묵힘토큰 1
생성 2025-07-01
-1002795450993
06-22~24Toad5
kotonmaster
빈껍데기토큰 10
생성 2026-06-22
가드 없음 → id 없음
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
06-24~27KOTON43
meetbigears
빈껍데기토큰 6
생성 2026-06-17
가드 없음 → id 없음
06-19~21Big Ears27
06-19~21Big Ears27
06-19~21Big Ears27
06-19~21Big Ears27
06-19~21Big Ears27
06-19~21Big Ears27
leagueofmeme_sol
비공개토큰 4
생성
가드 없음 → id 없음
06-24~27PORTAL LEAGUE OF MEME $…15
06-24~27PORTAL LEAGUE OF MEME $…15
06-24~27PORTAL LEAGUE OF MEME $…15
06-24~27PORTAL LEAGUE OF MEME $…15
gibglue
활성토큰 3
생성 2026-06-29
가드 없음 → id 없음
06-24~27GlueOS199
06-24~27GlueOS199
06-24~27GlueOS199
표에서 바로 읽히는 것 두 가지

seelprotocol·flybubbleman채널 생성일이 토큰 수집 기간보다 뒤다(⚠ 표시) — 그 사이 username 이 다른 채널로 넘어갔다.

aegisprivacy두 관측 사이에 값이 실제로 바뀌었다 — title AEGIS Portalaegisprivacy, subs 49 → 4. 같은 username 인데 관측 시점마다 다른 값이 나온다는 실증이다.

leagueofmeme_sol 의 저장된 title 이 PORTAL LEAGUE OF MEME $… 다 — HTML 엔티티가 디코드되지 않았다. 현재 fetcher 의 decode()$(달러) 를 처리하지 않는 버그다.

④ 그래서 무엇이 “업데이트”되나

토큰이 링크를 건 시점과 우리가 fetch 하는 시점 사이에 대상 자체가 바뀔 수 있다. 필드별로 무엇이 변하고 무엇이 안 변하는지가 조인키 선택을 결정한다.

성격무슨 일이 일어나나쓸모
username (t.me/{name})mutable🔴 소유자가 바꿀 수 있고, 놓으면 남이 가져간다. 실측 2건에서 이관 확인조인키로 부적합
guardChatId (-100…)immutable그 방이 살아있는 한 절대 안 변한다. 포털 이름을 갈아끼워도 그대로조인키로 적합
titlemutable언제든 변경. 현재 코드가 fixed 로 표기한 건 버그라벨용
채널 생성일 (메시지 #1)immutableChannel created 타임스탬프. 채널이 살아있는 한 고정재사용·이관 탐지의 기준선
subscriberCountmutable게다가 포털이면 커뮤니티가 아니다 (중앙 7명)as-of 필요
실제 그룹 멤버수관측 불가봇이 그룹 멤버여야 얻는다
결론username가리키는 대상이 바뀌는 주소이고, guardChatId(-100…)는 대상 그 자체의 번호다. 포털 이름을 갈아끼워도 이 번호는 따라오지 않는다.

⑤ 이관은 탐지할 수 있다

이관은 스스로 흔적을 남긴다 — 채널 생성일이 토큰 발행일보다 뒤면 그 사이에 바뀐 것 시간 → 채널 생성 토큰 발행 정상 — 채널이 먼저 토큰 발행 채널 생성 이상 — 채널이 나중에 생겼다 = 그 username 이 다른 채널로 넘어갔다 단, 지금은 이 판정을 할 수 없다 채널 생성일(메시지 #1)을 안 받고 있고, 토큰 발행일도 이 레포에는 없다 — 두 값이 모여야 성립한다

⑥ 이 -100… 은 정확히 무엇인가

먼저 용어를 바로잡는다 — "그룹 id" 라고 부르면 안 된다.

Telegram 내부(MTProto)에서 채널과 슈퍼그룹은 같은 객체 타입이다 — 둘 다 channel 생성자로 표현되고 broadcast / megagroup 플래그로만 갈린다. ID 풀이 하나라서 둘 다 -100 접두를 쓴다.

-100… 만 보고는 채널인지 그룹인지 구분할 수 없다. 그래서 필드명은 guardChatId 가 정확하다.

다만 개별 사례는 화면으로 판별된다 — $OGDOGE PORTALsubscribers(=broadcast 채널), $OGDOGE on SOLmembers + online + Video Chat(=megagroup) 이었다.

6-1. 이 id 로 할 수 있는 것과 없는 것

할 일가능?
같은 값인지 비교 (등가 판정)가능값 비교만 하면 된다 — 재사용·지문 용도가 여기 해당
이름 · 멤버수 · 설명 조회불가Bot API getChat봇이 그 방 멤버여야 동작
방 생성일불가어떤 무료 경로로도 안 나온다
메시지 읽기불가동일
접근 링크 만들기불가t.me/c/{id} 는 멤버만 열리고(실측 og:title 빈 문자열), 초대링크는 관리자가 따로 발급하는 별개 객체라 id 에서 유도할 수 없다
MTProto 로 우회불가InputChannelchannel_id + access_hash 를 함께 요구한다. access_hash 는 username 해석·검색·같은 방 소속 등 사전 상호작용으로만 얻고, 계정·세션 간 재사용도 안 된다 — 스팸 방지를 위한 의도된 설계
요약등가 비교는 열려 있고 속성 조회는 막혀 있다. 우리가 쓰려던 건 전자(같은 방이 여러 토큰에 쓰였나)라 실용상 손해는 작다. 다만 커뮤니티 규모·나이 기반 필터는 만들 수 없다 — 텔레그램 축의 성격이 “어떤 커뮤니티인가”가 아니라 “이 팀이 어떻게 셋업했나”로 바뀐다.
검증되지 않은 부분 — 이 값은 포털이 자기 verify 링크에 적어둔 값이다. 딥링크 페이로드는 봇이 임의로 정하는 문자열(최대 64자)이라 Telegram 이 의미를 강제하지 않는다. “여기로 입장한다”는 강한 추론이지만 직접 확인은 못 했다.

확정 방법 — 그 방 안에서 메시지 링크를 복사해 t.me/c/{id}/… 의 숫자가 일치하는지 보면 된다.

⑦ 가드봇 — 무료로 얻지만 판정에 공백이 있다

봇 username 은 추가 요청이 없다 — 포털 본문의 verify 링크에 이미 들어 있다. 봇 상세(설명·MAU)는 t.me/{bot} 를 따로 받아야 하지만, 봇은 토큰마다 다른 게 아니라 몇 종뿐이라 차원 테이블로 캐시하면 된다 — 실측 포털 36개 → 고유 봇 4종.

건수판정근거
@CollabLandlBot16🔴 사칭 확정공식명 collablandbot 에 소문자 l 삽입
@safeguard12⚠️ 판정 불가공식 봇 목록을 못 찾았다. 짧은 프리미엄 username · 실제 설명 · MAU 25.3만 → 정황은 진짜 쪽
@Collab_Land_Media_bot7🔴 사칭 확정공식명이 아니다
@coIIab_Iands_bot1🔴 사칭 확정대문자 Il 을 위장(homoglyph)
화이트리스트 방식의 한계

Collab.Land 는 공식 문서가 “정확히 collablandbot 이 아니면 사칭” 이라고 못박아 둬서 판정이 됐다. Safeguard 는 그런 공식 목록을 찾지 못했다 — 표본의 12/36(33%) 이 판정 공백으로 남는다.

보안 업체들이 “Fake Safeguard” 라는 공격 계열을 문서화해 뒀다(SlowMist 등). 수법은 클립보드 주입 — verify 를 누르면 악성 명령이 클립보드에 복사되고, 사용자가 Run/터미널에 붙여넣으면 PowerShell 이 RAT(Remcos)을 내려받아 지갑 파일·개인키를 턴다. ⚠️ 다만 원문은 봇 username 을 하나도 특정하지 않고 진짜/가짜 판별 기준도 제시하지 않는다@safeguard 자체가 그 가짜인지 사칭당하는 진짜인지는 확인되지 않았다.

보안 문헌의 공통 지표는 “정상 인증은 지갑 연결이나 명령어 붙여넣기를 요구하지 않는다” 인데, 그건 verify 를 눌러봐야 알 수 있어 우리 수집 범위 밖이다.

⑧ 추가 관측 — 최신 링크 3건

토큰 주소를 확보하지 못해 §③ 표와 분리한다. 셋 다 @safeguard 포털이다.

포털채널 생성생성→가드구독자조회수조회/구독chat id특기
hyperbullsol2026-07-16T19:57:11161초5133.42K6.7배@safeguard-1004498747915외부 링크 2개hyperbullsol.com · x.com/hyperbullsol. 본문에 티커 $HBULL·$ANSEM
AlbemarlePortal2026-07-01T16:13:3076초3401.59K4.7배@safeguard-1004303211499설명 WALO 🇺🇸. 메시지 번호가 #2 → #4 — #3 삭제됨
Dogecoin_OGSOL2026-04-22T23:19:1210분4866.83K14.1배@safeguard-1003511959847유일하게 실제 방을 본 사례 — 1,377 members(포털의 2.8배)
조회수 > 구독자가 3건 전부(4.7~14.1배). 포털은 구독하지 않고 지나가는 통로라는 해석과 맞는다 — 구독자수보다 조회수가 실제 유입에 가까울 수 있다. (3건은 표본이 아니다.)

8-1. 여기서 새로 보인 신호 후보 2개

후보무엇왜 쓸모 있나상태
포털 본문의 외부 링크hyperbullsol.com · x.com/hyperbullsol소셜 필드에 없어도 여기서 나온다. 그리고 채널명과 도메인·핸들이 일치하는지가 자기 프로젝트 여부 판정이 된다 — website 의 discoveredLinks 가 남의 계정을 긁어와 폐기된 것과 방향이 반대미검증
메시지 번호 갭AlbemarlePortal#2 → #4max(messageId) − 보이는 메시지 수 = 삭제 건수. 지운 흔적이 남는다미검증

⑨ 지금 무엇으로 수집하고 있나

텔레그램은 공식 API 를 안 쓴다 — t.me HTML 을 정규식으로 파싱한다. 내가 조사에 쓴 t.me/s/{name} 도 같은 방식이다.

소셜실제 호출비용비고
telegramt.me/{name} HTML 스크래핑무료공식 API 아님 — 정규식 파싱
websiterdap.org + 페이지 GET + urlscan.io/api/v1무료3소스 독립 best-effort
githubapi.github.com무료공식 REST
youtubegoogleapis.com/youtube/v3무료 티어공식 Data API v3
xapi.twitterapi.io유료비공식 3rd party 래퍼
tiktokApify clockworks~tiktok-scraper유료actor
instagramApify apify~instagram-scraper유료actor
redditApify harshmaur~reddit-scraper유료actor
공식 API 는 github·youtube 둘뿐이다. telegram 은 스크래핑, x 는 비공식 3rd party 래퍼, 나머지 셋은 Apify actor 다 — 스크래핑·actor 는 상대가 페이지 구조를 바꾸면 조용히 깨진다.

⑩ 곁다리 — 포털이 아닌 재사용도 있다

가드가 없는 채널도 여러 토큰에 쓰인다. 이쪽은 chat id 가 없어 username 말고는 묶을 방법이 없다.

채널생성일토큰 수정체
kotonmaster2026-06-2210빈껍데기 — 메시지가 Channel created·Channel photo updated
meetbigears2026-06-176빈껍데기
leagueofmeme_sol4비공개 — 프리뷰 자체가 없음
gibglue2026-06-293활성 채널(메시지 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%)가 비공식 이름이나, 개별 봇이 실제 악성인지는 확인하지 않았다