registrar certIssuer ip asn …)을 다룬다.
이 문서는 그 문서 §7 「지금 안 뽑는데 뽑을 수 있는 것」에 후보로만 올라 있던 축들과,
§8 「image — 현황과 제안」이 「가설이며 실측 근거가 하나도 없다」고 적어둔 이미지 축이
실제로 검정된 결과를 담는다.운영자가 «산» 것은 축이 되지 못하고, 운영자가 «만든» 것만 축이 된다. 이 한 줄이 이번 검정의 결론이고, 축을 새로 고를 때의 기준이다.
| 구분 | 무엇인가 | 예 | 왜 그런가 | 검정 결과 |
|---|---|---|---|---|
| 상품 축 | 시중에서 사서 쓰는 것. 누구나 같은 것을 고를 수 있다 | registrar · certIssuer · server · 도메인 나이 |
선택지가 좁아 배경 점유가 높다. registrar 1068 하나가 홀드아웃의 16.4% |
전부 실패 |
| 제작 축 | 사이트를 만들 때 딸려 나오는 흔적. 고르는 것이 아니라 도구가 남긴다 | robots 해시 · 헤더 순서 · style 해시 · TXT 형식 · 이미지 인코더 | 어떤 빌더든 고객 사이트에 같은 껍데기를 심는다. 값이 저절로 뭉치고, 빌더 이름을 미리 알 필요가 없다 | 묶임률 39% |
172.67.* 104.21.* 는 전부 Cloudflare 대역이다. IP 가 다른 게 아니라 같은 CDN 의 다른 엣지 노드였고, robots 해시가 같은 것도 Cloudflare 가 심는 기본 파일이기 때문이다(§2.1). 원문 서술은 기록으로 남긴다 —| 호스트 | robots 해시 | IP |
|---|---|---|
deadairsol.pro | d53d5a75c141 | 172.67.181.163 |
rollheadsol.pro | d53d5a75c141 | 104.21.69.211 |
boxboy.pro | d53d5a75c141 | 104.21.89.46 |
voidwizard.pro | d53d5a75c141 | 172.67.185.231 |
채움% = 홀드아웃 응답 2,987건 중 값이 실제로 온 비율. 등급은 website-image 와 같은 체계를 쓴다.
robots 와 style 은 원본이 길어서(1,000자 이상) md5 앞 12자로 줄여 저장한다 —
우리가 알고 싶은 것은 「무엇이 적혀 있나」가 아니라 「이 사이트와 저 사이트가 같은가」뿐이기 때문이다.
hdr·txt·이미지 는 원본이 짧아 값을 그대로 저장한다.d53d5a75c141 96호스트를
「같은 도구로 만든 군집」이라 며칠 믿었는데, 내용을 직접 받아보니 Cloudflare 기본 파일이었다(§2.1).
원본 앞부분을 함께 남겨야 한다 — §5 참조./robots.txt 는 「어느 경로를 긁어도 되는가」를 크롤러에게 알리는 평문 파일이다(RFC 9309).
강제가 아니라 권고이고 없어도 정상이다. 빌더가 템플릿으로 자동 생성하고 운영자가 거의 안 고쳐서 지문이 된다 —
고 봤으나 실제로는 CDN 기본값이 대부분이었다.
| 원본 내용 (주석 제외) | 저장 값 | 호스트 | 예 |
|---|---|---|---|
User-agent: *Content-Signal: search=yes,ai-train=no,use=referenceAllow: /User-agent: Amazonbot …(21줄) |
d53d5a75c141 | 96 | deadairsol.pronebraskaexaminer.com 🔴 |
User-agent: GooglebotAllow: /User-agent: BingbotAllow: / … |
871166c9f7c9 | 103 | knowyourrmeme.comusms.live |
User-agent: *Allow: / — 2줄. 가장 흔한 최소형 |
c28e573a1f36 | 49 | xbotrewards.comkoranews.org |
User-agent: *Allow: /LLM-Policy: /llms.txtSitemap: /sitemap.xml |
3e4171c83c46 | 15 | dogmode.xyztryblessed.com |
| 🔴 내용이 전부 주석 → 정규화 후 0줄 | d41d8cd98f00빈 문자열의 md5 | 103 | foboterminal.com서로 무관한 103개 |
헤더의 값이 아니라 이름이 나온 순서다. 같은 서버·프레임워크면 순서가 같다 — TLS 의 JA3 지문과 같은 발상. 해시하지 않고 값 그대로 저장한다. ⚠️ 실제로는 호스팅 이름이 헤더에 그대로 박혀 있다.
| 저장 값 (= 원본) | 호스트 | 예 | 정체 |
|---|---|---|---|
access-control-allow-origin|age|cache-control|content-disposition|content-type|date|etag|last-modified|server|strict-transport-security|x-vercel-cache|x-vercel-id|connection|transfer-encoding |
331 | svmscope.vercel.app | 🔴 Vercel |
cache-control|content-length|content-type|date|server|strict-transport-security|x-vercel-error|x-vercel-id|connection |
213 | gustacio.site | 🔴 Vercel 오류 페이지 |
access-control-allow-origin|age|…|x-nextjs-prerender|x-nextjs-stale-time|x-vercel-cache|x-vercel-id|… |
175 | rentapi.org | 🔴 Next.js on Vercel |
date|content-type|transfer-encoding|connection|cf-cache-status|cache-control|… |
76 | foboterminal.com | 🔴 Cloudflare |
x-vercel-* 를 포함한다.
이 축이 잡는 것은 운영자가 아니라 호스팅이다.<head> 안 <style> 내용만 본다. 외부 CSS 파일은 URL 만 봐도 같은지 알 수 있어 지문이 필요 없다.
빌더가 밀어넣는 리셋 CSS 가 고객마다 동일해서 지문이 된다 — 고 봤으나 공용 테마도 같이 묶인다.
| 원본 내용 (앞부분) | 저장 값 | 호스트 | 예 |
|---|---|---|---|
*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui…1,197자 · 두 호스트 완전 동일 |
1ceb4de319a7 | 62 | nebraskaexaminer.comcornishstuff.com 🔴 둘 다 일반 뉴스 |
body { background-color: #f5f5f5; margin-top: 8%; color: #5d5d5d; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Robo…1,072자 |
625c33d31053 | 21 | gigagaga.topansemup.pro |
DNS 의 TXT 레코드를 값이 아니라 종류로 축약한다. 값을 그대로 쓰면 인증 토큰이 전부 달라 아무것도 안 묶인다. 해시하지 않고 값 그대로 저장한다.
| 저장 값 | 호스트 | 원본이 무엇이었나 |
|---|---|---|
none | 1,523 (51%) | TXT 레코드 자체가 없다 — 절반이 같은 값이라 묶는 데 못 쓴다 |
spf | 687 | v=spf1 include:… ~all — 메일 발신 정책만 |
other,spf,verify | 286 | 위 + google-site-verification=… 같은 소유 확인 |
spf,verify | 233 | 〃 |
verify | 180 | 소유 확인만 |
도메인을 사면 「이 도메인 질문은 어느 서버에게 물어봐라」를 지정한다. 그게 NS 레코드다. 기본값은 등록대행사 것이고, Cloudflare·Vercel 을 쓰면 그쪽으로 바꾼다. 해시하지 않고 값 그대로 저장한다. r3 스캔이 이미 751/751 받아놨다.
hdr 축이 160호스트를 전부 「Cloudflare」로
뭉뚱그린 그 구간을 NS 가 유일하게 가른다.| 저장 값 (= 원본) | 호스트 | 무엇을 뜻하나 |
|---|---|---|
arushi.ns.cloudflare.com, giancarlo.ns.cloudflare.com | 14 | 같은 Cloudflare 계정 14개 도메인 |
dalary.ns.cloudflare.com, donovan.ns.cloudflare.com | 9 | 다른 계정 |
edna.ns.cloudflare.com, elliott.ns.cloudflare.com | 9 | 또 다른 계정 |
ns1.vercel-dns.com, ns2.vercel-dns.com | 112 | 🔴 전 고객이 같은 값 — 계정을 못 가른다 |
dns1.registrar-servers.com, dns2.registrar-servers.com | 111 | 🔴 Namecheap 기본 — 〃 |
curitiba.ns.porkbun.com, fortaleza… | 24 | 🔴 Porkbun 기본 — 〃 |
| 제공자 | 호스트 | NS 종류 | 종류/호스트 | 판정 |
|---|---|---|---|---|
| cloudflare.com | 160 | 123 | 0.77 | 개별 할당 |
| domaincontrol.com GoDaddy | 58 | 31 | 0.53 | 혼재 |
| nsone.net | 26 | 9 | 0.35 | 혼재 |
| dns-parking.com Hostinger | 38 | 9 | 0.24 | 혼재 |
| vercel-dns.com | 112 | 1 | 0.01 | 공유 기본값 |
| registrar-servers.com | 111 | 1 | 0.01 | 공유 기본값 |
| name.com | 35 | 4 | 0.11 | 공유 기본값 — ns1hwy·ns1cny 처럼 무작위로 보이나 서버 풀 배정이라 계정 단위가 아니다 |
| porkbun.com | 24 | 1 | 0.04 | 공유 기본값 |
토큰 이미지 앞 4KB 만 받아 어떤 도구로 만들었나를 읽는다.
image.match_key(같은 이미지인가)와 다르다 — 이쪽은 다른 이미지라도 같은 도구를 잡는다.
해시하지 않고 값 그대로 저장한다.
| 저장 값 | 호스트 | 예 | 판정 |
|---|---|---|---|
PNG:1254x1254:caBX: | 7 | lifeisagamble.lolsimonsaysape.lol | 인코더까지 보인다 |
PNG:1254x1254:pHYs: | 1 | felicetterobinhood.fun | 〃 다른 인코더 |
JPEG|PNG:508x504:IDAT: | 1 | uotf.site | 〃 |
WEBP | 22 | cornishstuff.comnews4sanantonio.com | 포맷 이름뿐 |
JPEG | 19 | claynosaurzstrategy.funakitainuelon.org | 〃 |
IHDR(크기·색심도) 뒤에 선택적 청크가 온다.
어떤 것을 어떤 순서로 넣을지는 인코더 구현이 정하고 사용자는 건드리지 않는다.
그래서 같은 도구로 만든 이미지는 내용이 달라도 이 자리가 같다. 형식은 RFC 2083 으로 고정이라 앞 4KB 만 받으면 판정된다.각 축에서 가장 많이 뭉친 값과 그 값을 가진 호스트를 나란히 놓았다. 서로 무관한 사이트가 같은 값을 갖는다면 그 값은 운영자 지문이 아니다.
| 해시 | 호스트 | 실제 내용 | 같이 묶인 것 | 판정 |
|---|---|---|---|---|
d53d5a75c141 | 96 | User-agent: *Content-Signal: search=yes,ai-train=no,use=referenceAllow: / …(주석 뺀 21줄) |
deadairsol.pro (밈코인)foolslife.online (밈코인)nebraskaexaminer.com (미국 지역신문) |
Cloudflare 기본 |
871166c9f7c9 | 103 | User-agent: Googlebot / Allow: /User-agent: Bingbot / Allow: / … |
knowyourrmeme.comusms.live |
확인 필요 |
d41d8cd98f00 | 103 | 🔴 빈 문자열의 md5. foboterminal.com 은 25줄이 전부 주석이라 정규화 후 0줄이 됐다 |
서로 무관한 103개 | 버그 — null 이어야 |
| 해시 | 호스트 | 실제 내용 (앞부분) | 같이 묶인 것 | 판정 |
|---|---|---|---|---|
1ceb4de319a7 | 62 | *{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui… (1,197자, 두 호스트 완전 동일) |
nebraskaexaminer.comcornishstuff.com둘 다 일반 뉴스 사이트 |
공용 테마 |
625c33d31053 | 21 | body { background-color: #f5f5f5; margin-top: 8%; color: #5d5d5d; font-family: -apple-system… (1,072자) |
gigagaga.topansemup.pro |
확인 필요 |
| 호스트 | 헤더 이름 순서 (앞부분) | 예 | 판정 |
|---|---|---|---|
| 331 | access-control-allow-origin|age|cache-control|content-disposition|… |
svmscope.vercel.app | Vercel |
| 213 | cache-control|content-length|content-type|date|server|strict-transport… |
gustacio.site | 확인 필요 |
| 113 | date|content-type|transfer-encoding|connection|cache-control|strict-tr… |
usms.live | Cloudflare |
| 76 | date|content-type|transfer-encoding|connection|cf-cache-status|… |
foboterminal.com | Cloudflare |
none 이라 변별력이 거의 없다| 값 | 호스트 | 뜻 |
|---|---|---|
none | 1,523 (51%) | TXT 레코드가 없다 — 절반이 같은 값이라 묶는 데 못 쓴다 |
spf | 687 | 메일 발신 정책만 설정 |
other,spf,verify | 286 | 소유 확인까지 — 실제 조직일 가능성 |
spf,verify | 233 | 〃 |
| 값 | 호스트 | 예 | 판정 |
|---|---|---|---|
WEBP | 22 | cornishstuff.com, news4sanantonio.com | 포맷만 — 인코더 정보 없음 |
JPEG | 19 | claynosaurzstrategy.fun | 〃 |
PNG:1254x1254:caBX: | 7 | lifeisagamble.lol, simonsaysape.lol | 인코더 지문 성립 |
JPEG|PNG:508x504:IDAT: | 1 | uotf.site | 〃 |
| 축 | 있음 | 채움률 |
|---|---|---|
hdr | 2,700 | 90.4% |
txt (none 아닌 것) | 1,464 | 49.0% |
rob | 1,381 | 46.2% |
style | 952 | 31.9% |
rob·style 조합 | 호스트 | 비율 |
|---|---|---|
| 둘 다 있음 | 580 | 19.4% |
| 하나만 | 1,173 | 39.3% |
| 둘 다 없음 | 1,234 | 41.3% — 변별력 0 |
null 로 바꾼다 — d41d8cd98f00 103호스트가 가짜로 묶여 있다.지문은 「같은 운영자면 같은 값」이어야 쓸모가 있다.
그런데 발행자가 사이트마다 디자인을 바꾸면 그 축은 매번 값이 달라져 아무것도 못 묶는다.
실제로 그런지 쟀다. 결과는 예상과 달랐다 — style 만이 아니라 rob 도 불안정하다.
전용 IP(비 CDN)에 3호스트 이상 올라와 있는 무리 32개를 「같은 운영자일 가능성이 높은 집합」으로 봤다. CDN·PaaS 는 고객끼리 IP 를 돌려쓰므로 ASN 으로 제외했다(§4 와 같은 처리). 그 무리 안에서 각 축의 값이 몇 종류인지 세면, 축이 운영자를 따라가는지 사이트를 따라가는지 갈린다.
| 축 | 무리 안에서 하나로 유지 | 호스트마다 전부 다름 | 무엇에 흔들리나 |
|---|---|---|---|
ns | 이번 32무리 측정에 안 넣었다 — r3 스캔에만 있고 홀드아웃 스캔에서 안 받았다 | 디자인·호스팅과 독립 도메인 설정이라 사이트를 다시 만들어도 그대로. 바꾸려면 등록대행사에서 직접 손대야 한다 | |
txt | 17 (53%) | 2 (6%) | 디자인과 무관 DNS 설정이라 사이트를 다시 만들어도 그대로 간다 |
style | 11 (34%) | 10 (31%) | 🔴 디자인을 바꾸면 바뀐다 리셋 CSS 뿐 아니라 색·여백 같은 디자인 값이 같은 <style> 에 들어 있다 |
rob | 10 (31%) | 11 (34%) | 🔴 가장 불안정하다 「빌더 기본이라 안 변한다」고 봤으나 실측은 반대다 — 무리의 34% 가 호스트마다 다르다 |
hdr | 9 (28%) | 7 (22%) | 호스팅을 옮기면 통째로 디자인엔 안 흔들리나, 같은 IP 안에서도 응답 경로(캐시 적중·오류)에 따라 갈린다 |
| 전용 IP | 호스트 | style 종류 | 읽는 법 |
|---|---|---|---|
147.93.159.47 CT-47 | 11 | 1 | 템플릿 고정 11개 사이트가 CSS 가 완전히 같다 — style 이 잘 듣는다 |
185.41.148.2 | 6 | 1 | 〃 |
194.58.68.59 | 6 | 1 | 〃 |
93.188.163.111 HG-111 | 10 | 9 | 매번 바꾼다 같은 서버·같은 운영자인데 CSS 가 사이트마다 다르다 |
34.149.87.45 | 9 | 9 | 전부 다름 |
38.46.220.132 | 45 | 15 | 부분 45호스트가 style 로는 15조각으로 쪼개진다 |
txt 하나뿐이고(유지 53% · 전부다름 6%), 그마저 51% 가 none 이라 변별력이 낮다.
style(31%)·rob(34%)·hdr(22%) 은 같은 운영자 안에서도 갈린다.style 만 디자인에 흔들리나 — 우리가 <head> 안 <style> 을
통째로 해시하기 때문이다. 거기에는 빌더가 심은 리셋 CSS 와 운영자가 고른 색·여백이 섞여 있다.
실제 값을 보면 드러난다 —body { background-color: #f5f5f5; margin-top: 8%; color: #5d5d5d; font-family: -apple-system…background-color 하나만 바꿔도 해시가 통째로 달라진다.
리셋 부분만 떼어내 해시하면 안정성이 올라갈 수 있으나 아직 안 해봤다(§6).md5('') 하나가 103호스트를 가짜로 묶은 것도 같은 원인이다.원 실험(2026-08-24~26 창)의 규칙을 홀드아웃 창(08-26~09-01)에 적용했다. 응답 2,987 호스트, 이 호스트들을 건 토큰 4,991 이 모수다.
| 축 조합 | 4축 보유 | 군집 | 묶인 호스트 | 덮는 토큰 |
|---|---|---|---|---|
| r3 원본 4축 robots+헤더+style+TXT | 374 (13%) | 4 | 17 | 38 |
| TXT 제거 | 540 (18%) | 10 | 54 | 75 |
| robots+헤더+NS ← 채택 | 1,137 (38%) | 25 | 131 (4.4%) | 291 (5.8%) |
style(채움 31.8%)과 TXT 다.TXT 는 축이 아니다. 고유값이 13개뿐이고 spf 하나가 46.9% 를 덮는다
(엔트로피 2.11 bits). 4중 AND 의 한 자리를 차지하면서 정보는 거의 주지 않고
보유율만 49% 로 깎는다. NS 로 교체하면 7.10 bits · 채움 92.2% 다.
| 축 | 채움 | 고유값 | 최빈값 점유 | 엔트로피 |
|---|---|---|---|---|
| style | 31.8% | 770 | 6.5% | 9.02 bits |
| robots | 42.5% | 955 | 8.0% | 8.91 bits |
| 헤더 이름 순서 | 92.7% | 1,007 | 12.4% | 7.65 bits |
| DNS NS | 92.2% | 922 | 16.5% | 7.10 bits |
| DNS TXT | 49.0% | 13 | 46.9% | 🔴 2.11 bits |
rawHeaders 수정은 군집을 바꾸지 않았다. axios 의 정규화 객체는 실제로
호스트의 93.6% 에서 헤더를 떨구지만(content-encoding 등),
엔트로피는 7.63 → 7.65 bits, 군집 결과는 25개로 동일했다.
정확성 수정이지 성능 개선이 아니다.
묶였다고 다 같은 운영자가 아니다. NS 가 계정별로 개별 할당되는가로 갈린다 (§2.2 의 제공자별 비율).
| 등급 | 군집 | 호스트 | 토큰 | 근거 |
|---|---|---|---|---|
| 강 | 8 | 28 | 55 (1.1%) | NS 가 개별 할당 — Cloudflare, 645호스트 → 504종(0.78). NS 자체가 계정 지문 |
| 약 | 14 | 90 | 226 (4.5%) | 공용 NS + IP 1종. name.com 0.04 · registrar-servers 0.01 — NS 는 신호가 아니고 IP 1종만 남는다 |
knowyourrmeme.com 과 ansemfartdust.com 이 같이 들어 있다.
같은 IP · 같은 name.com NS 인데, name.com 은 NS 를 계정별로 주지 않는다.
「전용 IP」인지 「공용 호스팅 IP」인지는 이 3,108 호스트 안에서는 판정할 수 없다 —
그 IP 에 우리가 안 본 도메인이 몇 개나 더 있는지 모르기 때문이다.
확정하려면 IP 역방향 조회가 필요하다.확실한 것들도 있다. 방법이 옳게 작동한다는 증거로 참 양성 두 개가 잡혔다 —
x.com+twitter.com, 그리고 Sinclair 계열 지역방송
news4sanantonio.com+local12.com. 둘 다 실제로 같은 운영자다.
밈코인 쪽에서는 averagejoecoin.lol+simonsaysape.lol+farticusmaximus.fun,
rufussolan.top+blazesolana.top+beefysolana.top 같은 묶음이 나온다.
지금 축만으로는 토큰의 1.1%(강) ~ 5.8%(강+약) 다.
원 실험이 시사한 37% 와는 자릿수가 다르다. 격차의 원인은 셋이고, 전부 채움률이다 —
style 31.8%, robots 42.5%, 그리고 아직 못 뚫은 이미지 인코더 축(24%).
이미지 축은 r3 의 L2 1차 분할자였고, IPFS 게이트웨이 차단 때문에 비어 있다.
같은 창에서 검정했고 전부 부정이었다. 다시 파지 말 것.
| 축 | 가설 | 결과 | 무너진 지점 |
|---|---|---|---|
registrar + certIssuer + server |
지문 조합이 재등장하면 같은 운영자가 옮긴 것 | 변별력 없음 | 매치에 linktr.ee 와 Steam 상점이 들어왔다. registrar 1068 배경 점유 16.4% |
| 도메인 나이 | 공장은 갓 산 도메인을 쓴다 | 리프트 1.2배 | 군집 <7일 53% vs 비군집 44%. 군집의 29% 가 1년 넘은 도메인이라 신생 규칙은 3분의 1을 놓친다 |
| 도메인 등록일 배칭 | 한 번에 사두면 등록일이 뭉친다 | 배경과 무구분 | 뭉친 4군집이 전부 08-25·08-26 인데 그 이틀이 배경 최다 등록일(238·231건)이었다 |
| IP 단독 | 같은 IP = 같은 운영자 | 정밀도 없음 | 19군집 중 11개가 공유 플랫폼 — Cloudflare Spectrum · Wix · WordPress.com · SEDO 파킹 |
social-af-signal/pitfalls.md P24 에 사례로 남겼다.정규화 규칙을 한 줄만 고쳐도 과거 해시가 전부 무의미해진다. 그런데 값은 여전히 「있기」 때문에 아무도 눈치채지 못하고, 군집만 어긋난다.
data.shell = {
v: 1, // 규칙이 바뀌면 2 로 올린다. 다른 v 끼리는 비교하지 않는다
rob, hdr, style, txt,
proto: 'h1', // HTTP/2 는 헤더 표현이 달라 비교가 성립하지 않는다
}
| 축 | 정규화 규칙 (v1) |
|---|---|
rob | 줄마다 # 뒤 제거 · trim · 소문자 → 빈줄 제거 → \n 결합 → 공백 축약 → md5 앞 12자 |
hdr | res.rawHeaders 의 이름만 순서대로 | 결합. ⚠️ axios 의 정규화 객체를 쓰면 개수가 달라진다(실측 10 vs 11) |
style | <head> 안 모든 <style> 내용 → 공백 축약 → | 결합 → md5 앞 12자 |
txt | 각 TXT 를 spf/dmarc/verify/dkim/other 로 축약 → 정렬 결합. 없으면 none |
| 이미지 | PNG:{W}x{H}:{IHDR 다음 청크명}: · JPEG · WEBP. 여러 형식이면 정렬해 | 결합 |
d53d5a75c141 96호스트를 「같은 도구로 만든 군집」이라 며칠 믿었는데,
내용을 직접 받아보니 Cloudflare 기본 파일이었다. 해시는 「같은가」는 답하지만 「무엇인가」는 못 답한다.
data.shell = {
v: 1,
rob: 'd53d5a75c141',
robHead: 'User-agent: * / Content-Signal: search=yes,ai-train=no…', // 앞 120자
style: '1ceb4de319a7',
styleHead: '*{box-sizing:border-box;margin:0;padding:0}html{line-…', // 앞 120자
hdr, txt, proto: 'h1',
}
호스트당 240자가 늘지만, 이것이 없으면 플랫폼 기본값을 운영자 지문으로 착각한 채 계속 간다.저장 위치는 contents.data 하위다. 최상위는 쿼리·정렬 축만 두는 것이 이 레포 규약이고,
지문은 조회 축이 아니라 비교 대상이다. 인덱스는 지금 만들지 않는다 — 실제로 도는 쿼리가 생긴 뒤에 판단한다.
ns 수집(채움 92.2%)과 빈 해시 null 화(103→0),
rawHeaders 원본 순서 저장을 shellscan.js 에 반영하고 3,108호스트를 재실측했다.
그 결과가 §3 이다. TXT 는 축에서 제외하고 NS 로 교체했다.| 항목 | 상태 | 무엇이 필요한가 |
|---|---|---|
| 이미지 인코더 축 채움률 | 🔴 24% (69/287) | 공개 IPFS 게이트웨이가 막혀 있다 — ipfs.io·nftstorage.link 403(우리 출구 IP 차단, 공개 hello-world CID 도 동일),
4everland 는 Cloudflare 챌린지가 오르내린다. ipfs.filebase.io 가 안정적이었으나 3회만 재봤다 |
| 수집 시점 1회 캡처 | 미착수 | 「필요할 때 다시 받는다」가 아니라 토큰 수집 시점에 한 번 받아 저장해야 외부 의존이 1회로 끝난다.
scanner-data T7(첫 관측 후 갱신 안 함)이 지문에는 맞는 성질이나, 첫 수집 실패 시 영구 결손이라 재시도 경로가 함께 필요하다 |
style 을 리셋 CSS 만으로 좁히면 안정될까 | 미검증 | 지금은 <style> 전체를 해시해 디자인 값이 섞인다(§2.2). 리셋·유틸 부분만 떼어 해시하면 무리 안 유지율이 34%보다 오를 수 있다 |
| 「약」 등급이 전용 IP 인가 | 🔴 판정 불가 | 14군집·90호스트·토큰 226(4.5%)이 여기 걸려 있다. 공용 NS + IP 1종인데, 그 IP 에 우리가 안 본 도메인이 몇 개 더 있는지 모른다. IP 역방향 조회(passive DNS)가 있어야 「전용」과 「공용 호스팅」이 갈린다 |
robots·style 채움률 | ✅ 42.5% · 31.8% | 측정했다(§3). 이 둘이 규모의 병목이다 — r3 4축을 전부 가진 호스트가 13%뿐인 이유 |
| favicon | 만들지 않는다 | website-image §7 이 후보로 올렸으나, 원 실험도 751호스트 전부 null 이었다. 실제로 쓰인 적이 없는 축이다 |
docs/experiments/web-deploy-cohorts/runs/2026-09-01-r3-replication.mddocs/experiments/web-deploy-cohorts/runs/2026-08-27-recent3d-clustering.htmldocs/experiments/web-deploy-cohorts/scripts/{shellscan,imgsig,l1l2}.js · 원자료 runs/data/2026-09-01-*.jsondocs/drafts/website-fingerprint-gaps.md (설명 페이지: -explainer.html)docs/experiments/web-deploy-cohorts/scripts/{shellscan,imgsig,l1-strict,hosttok}.jsdocs/experiments/social-af-signal/pitfalls.md P23~P26
(P26 이 이 문서 §3 의 철회 사유다)