← 목록
기타 2026-06-14 20KB 읽기 21분

웹스크래핑·콘텐츠 수집 컴플라이언스 표준화 (2026)

크라우니 이미지수집기 표준 및 웹스튜디오 디자인 정교화 가이드

작성일: 2026-06-14 적용 대상: 크라우니 이미지수집기(crowny-image-crawler), 웹스크래핑 자동화 도구, AI 데이터수집 시스템 목적: Anthropic Usage Policy, robots.txt RFC 9309, 저작권법, GDPR/CCPA 준수 및 출처표기 의무 통합


I. 핵심 원칙: 6축 컴플라이언스 프레임워크

1. Anthropic 책임있는 AI 원칙

  • 금지 사항
  • 개인의 동의 없는 대규모 데이터 수집
  • 저작권 침해적 콘텐츠 무단 수집 (Reddit 소송 사례: 2026년 3월 캘리포니아 주법원 재이송)
  • 개인정보(PII) 포함 무분별 수집
  • 파괴적 스캔(destructive scanning) 방식의 원본 훼손
  • 정책 변화 (2026년 기준)
  • Anthropic: 자동 opt-out에서 명시적 opt-in으로 전환 (Aug 2025 이후)
  • EU Commission: 기계판독 가능한 opt-out 신호 존중 의무화
  • Claude: 데이터 미학습 선택권 3개월 유효 (임시적)
  • 적용 방안
  • 수집 전: 사이트의 opt-out 신호 확인 (DNS, HTTP 헤더, robots.txt)
  • 수집 후: 소유자 삭제요청에 24시간 이내 응답
  • 투명성: 수집 목적·범위·데이터 사용처 명시

  • 2. RFC 9309 robots.txt 준수 (2022년 IETF 정식 표준)

    필수 준수 규칙

    robots.txt 형식:
    - 위치: 도메인 최상단 /robots.txt
    - 인코딩: UTF-8, Content-Type: text/plain
    - 크기 제한: 500KB 이상 읽기 불가 (캐시 24시간)
    

    경로 매칭 로직

    규칙설명우선순위
    Disallow: /admin/admin 이하 경로 금지가장 긴 매칭 우선
    Allow: /admin/public그 안의 /public은 허용길이 최대 = 승리
    User-agent: *모든 봇 대상대소문자 구분 無
    Crawl-delay: 2RFC 9309 미포함 (자의적 준수)
    핵심 규칙:
    • 경로 매칭 = 대소문자 민감(case-sensitive)
    • * = 0개 이상의 문자, $ = 문자열 끝
    • 매칭 실패 시 기본값 = 허용(Allow)
    • robots.txt 자체 = 항상 허용

    오류 처리

    4xx(404,403) → 모든 리소스 접근 허용 (선택적)
    5xx(500,503) → 전체 금지로 간주 (필수 준수)
    리다이렉트 → 최대 5회 따라가기
    

    크라우니 구현 체크리스트

    ☐ 모든 크롤러는 robots.txt 다운로드 및 파싱
    ☐ Disallow 규칙 위반 시 재시도 금지
    ☐ 2xx 상태(성공)만 신뢰, 5xx는 full-disallow로 처리
    ☐ robots.txt 오류 발생해도 파싱된 규칙 적용
    ☐ 오래된 robots.txt 캐시 검증 (24시간 TTL)
    


    3. 저작권 및 공정이용(Fair Use) 4가지 판단 요소

    미국 저작권법 § 107 공정이용 테스트

    4가지 요소 (모두 고려, 가중치 없음)

    요소웹콘텐츠 수집 시 판단 기준우호적(✓)비우호적(✗)
    1. 용도·성질영리적 이용인가? 변형(transform)적 이용인가?비영리 교육/연구, 뉴스상업적 재판매, 원본과 동일
    2. 원본 저작물의 성질사실적 vs 창작적? 발표된 vs 미발표?사실 자료(보도), 공개소설·시(창작), 미발표 원고
    3. 사용 부분의 양·실질성전체 vs 부분? "심장부(heart)" 포함?작은 부분(섬네일, 인용)대부분 복제, 핵심 부분 도용
    4. 원본 시장 영향판매 기회 빼앗기? 라이선스료 우회?시장 대체 없음, 부가가치직접 경쟁, 라이선스 침해

    실무 경계선

    • 수집 허용: 섬네일(70-90%), 텍스트 인용(100단어 이내, 원본 링크 필수)
    • 수집 금지: 전체 고해상도 이미지, 음악·영상 전체, 소설 전장
    • 회색 영역: 데이터셋 구성용 대량 이미지(비영리 AI 학습) = 판례 진행 중

    크라우니 구현

    저작권 안전 수집 규칙:
    ☐ 원본 출처 명시 (URL, 저작자, 라이선스)
    ☐ 변형 또는 가치 추가 (메타데이터, 분류, 링크)
    ☐ 원본 시장 침해 없음 (섬네일/요약만 표시)
    ☐ 삭제요청 24시간 응답 (DMCA § 512(i) 준수)
    ☐ 저작권 필터 설정 (라이선스 공개 content만 수집)
    


    4. 개인정보(PII) 및 얼굴인식 회피 의무

    GDPR (EU) 및 CCPA (캘리포니아)

    규제적용 범위핵심 요구사항위반 시 벌금
    GDPREU 거주자 모든 개인정보명시적 동의(opt-in), 삭제권(Right to Forget)전년도 글로벌 매출 4% 또는 €2000만
    CCPA캘리포니아 거주자, 온라인 거동 정보판매 금지, 1월 설정 카테고리 제외$2,500/건 또는 $7,500/고의적 위반
    GDPR 적용 확대공개 정보도 "개인정보"로 분류웹에 공개라도 수집 금지 (동의 필수)

    얼굴인식 데이터 위기

  • Clearview AI 사건 (2023, 이탈리아 데이터보호청): 수십억 개 긁어모은 얼굴 이미지 판매
  • 벌금: €2000만 (GDPR 최고 수준)
  • 판정: 동의 없는 얼굴수집 = GDPR 위반
  • 법적 영향: 모든 국가에서 적용 가능성 높음
  • 기술적 확인 방법
  • 이미지에서 얼굴 자동 감지(face detection)
  • 의심 시 버림 (white-list 접근 권장)
  • 선택적 얼굴 익명화 (pixelization, blurring)
  • 크라우니 구현 (PII 회피 체크리스트)

    개인정보 필터링:
    ☐ 얼굴 인식 필터 활성화 (모든 이미지)
      - OpenCV 또는 TensorFlow Lite 경량 모델 사용
      - 얼굴 감지 시 자동 제외
    ☐ 개인식별정보(PII) 탐지 및 제거
      - 전화번호, 이메일, SSN, 주소 정규식 필터
      - 소셜 미디어 게시물 제외
      - 의료·금융 정보 자동 오픈 금지
    ☐ "소유자 명확" 콘텐츠만 수집
      - CC-BY, MIT, Apache 라이선스 확인
      - 작가 미상 또는 소유자 불명 제외
    ☐ GDPR/CCPA opt-out 신호 존중
      - DNT(Do Not Track) 헤더 인식
      - "수집 거부" 문구 포함 페이지 제외
    


    5. 정직한 User-Agent 및 Rate-Limiting 예의

    User-Agent 투명성 표준

    ❌ 나쁜 예:
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
    
    ✅ 좋은 예:
    User-Agent: CrownyImageCollector/1.0 (+https://docs.crowny.org/web-scraping-policy; contact: crawler@crowny.org)
    

    필수 요소:

    1. 명확한 봇 식별자 (CrownyImageCollector, GoogleBot 등)
    2. 버전 번호
    3. 정책 문서 링크
    4. 연락처 이메일

    Rate-Limiting 구현 규칙

    전략구현효과
    고정 딜레이 + 지터1-3초 + 0-500ms 난수서버 부하 분산
    토큰 버킷초당 5 요청 = 5개 토큰 충전버스트 공격 방지
    Crawl-Delay 준수robots.txt의 Crawl-Delay 값 적용소유자 선호도 반영
    429 Too Many Requests지수 백오프 (2s, 4s, 8s, ...)자동 복구, 영구 차단 회피
    Retry-After 헤더서버가 명시한 시간 대기호스트 최우선 신뢰

    법적 영향

    "서버 성능 저하를 초래하는 스크래핑 = CFAA '손해(damage)' 주장 또는 chattels 불법점유 가능성" 적절한 rate-limiting은 이 위험을 완전히 제거함.

    크라우니 구현 코드 패턴 (한선씨)

    변수 last_request_time = 0
    변수 delay_ms = 2000  ; 2초 기본
    변수 max_delay_ms = 30000  ; 최대 30초
    
    함수 should_fetch(url) {
      변수 elapsed = 현재시간() - last_request_time
      만약 (elapsed < delay_ms) {
        기다려(delay_ms - elapsed)
      }
      last_request_time = 현재시간()
      반환 참
    }
    
    함수 handle_429(retry_after_header) {
      변수 wait_time = 지터()  ; 초기 2초
      동안 (참) {
        기다려(wait_time)
        시도 { 반환 fetch(url) }
        실패 404,403 { 반환 거짓 }  ; 영구 거부
        실패 429 { wait_time = 최소(wait_time * 2, max_delay_ms) }
      }
    }
    


    6. 출처 표기 의무 및 법적 책임

    출처 추적(Data Provenance) 요구사항

    필수 메타데이터:

    json{
      "content_hash": "sha256:a1b2c3...",
      "source_url": "https://example.com/image.jpg",
      "crawl_timestamp": "2026-06-14T10:30:45Z",
      "license_type": "CC-BY-4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "copyright_holder": "Jane Doe",
      "extraction_method": "image_scraper_v1.0",
      "verified_at": "2026-06-14T10:30:50Z"
    }
    

    EU AI Act 영향 (2024년 이후)

    • 투명성 의무: 모든 훈련 데이터 출처 문서화
    • 감시 대상: 대규모 모델(>10^25 FLOPs) 학습에 사용된 웹스크래핑 데이터
    • 위반 시: 배포 차단, 상당한 벌금

    DMCA § 512(i) "Good Faith Removal"

    수집한 콘텐츠 소유자의 삭제요청 → 24시간 이내 제거 의무

    책임 제한(Safe Harbor) 조건:

    1. 삭제요청 통지 수신
    2. 24시간 이내 배포 중단
    3. 영속적 기록 유지 (감사용)

    크라우니 구현: 출처표기 체크리스트

    저장 단계:
    ☐ 메타데이터 JSON 함께 저장 (이미지.jpg + 이미지.json)
    ☐ 웹훅 설정: 소유자 contact 페이지 모니터링
    ☐ 삭제요청 수신 = 즉시 이메일 알림
    
    배포 단계:
    ☐ 모든 콘텐츠에 출처 URL 하이퍼링크
    ☐ CC-BY 표시 (저작자명 명시)
    ☐ 라이선스 배지 첨부 (CC 아이콘)
    ☐ "관련 자료" 섹션에 원본 사이트 링크
    
    감시 단계:
    ☐ DMCA 삭제요청 메일박스 자동화 (@crowny.org)
    ☐ 72시간 내 제거 완료 (24시간 안전마진)
    ☐ 이력 저장 (제거 날짜, 사유, 완료 확인)
    


    II. 통과 기준 체크리스트

    Phase 1: 수집 전 (Preflight)

    Policy Compliance
    ☐ Anthropic Usage Policy 읽음 (privacy-update July 8, 2026 최신판)
    ☐ GDPR/CCPA 적용 대상 여부 확인
    ☐ 사이트 ToS/라이선스 검토
    
    robots.txt 확인
    ☐ /robots.txt 다운로드 시도
    ☐ Disallow 규칙 매칭 (RFC 9309 준수)
    ☐ User-Agent 허용 여부 확인
    ☐ Crawl-delay 적용 (선택적이나 권장)
    
    Risk Assessment
    ☐ 저작권 소유자 확인 가능한가?
    ☐ 리스크 등급: GREEN (공개라이선스), YELLOW (문의필요), RED (금지)
    ☐ RED는 즉시 정지
    

    Phase 2: 수집 중 (Runtime)

    Data Filtering
    ☐ 얼굴 감지 필터 활성화
    ☐ PII 탐지 (이메일, 전화번호) 차단
    ☐ 의료/금융 민감 정보 제외
    ☐ GDPR opt-out 신호 존중 (DNT 헤더)
    
    Server Courtesy
    ☐ robots.txt Disallow 규칙 준수
    ☐ Rate-limit 설정: 초당 1-5 요청
    ☐ 429 응답 = 지수 백오프 (최대 30초)
    ☐ User-Agent 투명성 (정책 URL 포함)
    
    Logging
    ☐ 모든 요청 로깅 (timestamp, URL, status, size)
    ☐ 거부된 요청 별도 기록
    ☐ 오류 분류 (4xx/5xx/429)
    

    Phase 3: 저장 및 배포 (Storage & Distribution)

    Provenance
    ☐ 각 콘텐츠마다 메타데이터 JSON 함께 저장
      - source_url, crawl_timestamp, license_type
    ☐ 해시값 계산 (SHA256) 및 기록
    ☐ "수집 날짜"와 "최종 검증 날짜" 분리
    
    Attribution
    ☐ 모든 출력 콘텐츠에 source 하이퍼링크
    ☐ CC 라이선스 → 저작자명 명시 (CC-BY 필수)
    ☐ 라이선스 배지 부착 (Creative Commons 아이콘)
    
    DMCA Readiness
    ☐ 삭제요청 수신 이메일 주소: removal@crowny.org
    ☐ 삭제요청 템플릿 준비 (48시간 처리 약속)
    ☐ 이력 데이터베이스 (removed_at, removed_reason)
    

    Phase 4: 감시 및 대응 (Monitoring)

    Continuous Compliance
    ☐ 월 1회 robots.txt 정책 변경 확인
    ☐ 분기 1회 GDPR/CCPA 규제 변경 스캔
    ☐ 삭제요청 평균 응답 시간 < 24시간
    ☐ 429 에러율 < 5% (rate-limit 조정 신호)
    
    Audit Trail
    ☐ 6개월 데이터 보관 (감시 필요 시 복구)
    ☐ 거부된 URL 목록 (다시 시도 금지)
    ☐ 사용자 불만 기록 (trend analysis)
    
    Third-Party Audits
    ☐ 연 1회 법무 검토 (저작권, 개인정보)
    ☐ 보안 감시(compliance scanning) 도구 도입
    ☐ 침해 신고 채널 공개 (transparency.crowny.org)
    


    III. 크라우니 이미지수집기 표준 구현 아키텍처

    모듈 설계

    ┌─────────────────────────────────────────────────┐
    │          Crawny Image Collector v2.0             │
    ├─────────────────────────────────────────────────┤
    │ Layer 1: Policy Enforcement                      │
    │  ├─ robots.txt Parser (RFC 9309)                │
    │  ├─ GDPR/CCPA Filter                            │
    │  └─ License Validator                           │
    ├─────────────────────────────────────────────────┤
    │ Layer 2: Data Collection                         │
    │  ├─ Transparent User-Agent                      │
    │  ├─ Rate-Limiter (Token Bucket)                 │
    │  ├─ Face Detection Filter                       │
    │  └─ PII Regex Filter                            │
    ├─────────────────────────────────────────────────┤
    │ Layer 3: Storage & Provenance                    │
    │  ├─ Metadata JSON (source, license, timestamp)  │
    │  ├─ SHA256 Hash Verification                    │
    │  └─ Audit Log DB                                │
    ├─────────────────────────────────────────────────┤
    │ Layer 4: Distribution & Attribution              │
    │  ├─ Source Hyperlink Injection                  │
    │  ├─ CC License Badge                            │
    │  └─ DMCA Removal Handler                        │
    └─────────────────────────────────────────────────┘
    

    핵심 함수 시그니처 (한선씨)

    ```한선씨 ; robots.txt 준수 여부 판단 함수 is_url_allowed(url, user_agent) { 변수 rules = 파싱_robots_txt(도메인(url)) 변수 path = 경로추출(url) 변수 longest_match = "" 동안 (rules에 규칙 있음) { 만약 (경로_매칭(path, rules.path)) { 만약 (길이(rules.path) > 길이(longest_match)) { longest_match = rules.path } } } 반환 longest_match가 "Disallow"이 아님 }

    ; 개인정보 필터링 함수 filter_pii(text) { 변수 pii_patterns = 맵생성() 맵넣어(pii_patterns, "email", "[\w\.-]+@[\w\.-]+\.\w+") 맵넣어(pii_patterns, "phone", "\d{3}-\d{4}-\d{4}") 맵넣어(pii_patterns, "ssn", "\d{3}-\d{2}-\d{4}") 동안 (pii_patterns에 패턴 있음) { text = 텍스트교체(text, 패턴, "[REDACTED]") } 반환 text }

    ; 출처 메타데이터 생성 함수 create_provenance_metadata(url, content, license) { 변수 metadata = 맵생성() 맵넣어(metadata, "source_url", url) 맵넣어(metadata, "crawl_timestamp", 현재시간()) 맵넣어(metadata, "content_hash", sha256(content)) 맵넣어(metadata, "license_type", license) 맵넣어(metadata, "verified_at", 현재시간()) 반환 JSON인코딩(metadata) }

    
    ---
    
    ## IV. 웹스튜디오 디자인 정교화 (Frontend)
    
    ### UI 패턴: 컴플라이언스 인디케이터
    
    
    html <!-- 이미지 카드 컴플라이언스 배지 --> <div class="image-card"> <img src="image.jpg" alt="..."> <div class="provenance-badge"> <a href="https://original.com/image.jpg" target="_blank"> 🔗 출처 </a> <span class="license-badge cc-by-4"> CC-BY-4.0 </span> <span class="crawl-date"> 수집: 2026-06-14 </span> </div> <details> <summary>저작권 정보</summary> <pre>출처: Jane Doe 라이선스: CC-BY-4.0 URL: https://example.com/image.jpg 수집 날짜: 2026-06-14T10:30:45Z 해시: a1b2c3...</pre> </details> </div>
    
    ### 정책 투명성 페이지
    
    
    docs.crowny.org/web-scraping-policy ├─ 01. Anthropic Usage Policy 준수 선언 ├─ 02. robots.txt RFC 9309 준수 약속 ├─ 03. 저작권·공정이용 판단 기준 ├─ 04. 개인정보 수집 금지 정책 ├─ 05. User-Agent 투명성 ├─ 06. 삭제요청 절차 (DMCA § 512) └─ 07. 컴플라이언스 감시 현황 (월 리포트)
    
    ### 삭제요청 처리 UI
    
    
    removal.crowny.org/request ├─ 로그인 (이메일) ├─ 콘텐츠 선택 (URL 또는 해시) ├─ 사유 입력 (선택) ├─ 타임스탬프 확인 └─ 대기: 24시간 처리 약속 └─ 이메일 확인: removal-<id>@crowny.org
    
    ---
    
    ## V. 위험 등급 및 대응 매트릭스
    
    | 수집 유형 | 라이선스 | 위험 등급 | 행동 | 예시 |
    |-----------|---------|---------|------|------|
    | **공개 데이터** | CC-BY, CC0, MIT | 🟢 GREEN | 즉시 수집 | Wikimedia, OpenStreetMap |
    | **상업 저작권** | © (판매) | 🔴 RED | 금지 | Getty, 미국 뉴스사 |
    | **학술 자료** | CC-BY-SA, arXiv | 🟡 YELLOW | 문의 후 수집 | 저자명 명시 + 인용 |
    | **공공기관** | CC-0, Public Domain | 🟢 GREEN | 즉시 수집 | 정부 사진, NASA |
    | **사용자 생성** | 불명 | 🔴 RED | 금지 | 개인 블로그, 소셜미디어 |
    | **뉴스 기사** | 저작권 보유 | 🟡 YELLOW | 링크+요약만 | 공정이용 인용 |
    
    ---
    
    ## VI. 실무 사례: "크라우니 아트 갤러리" 컴플라이언스 검증
    
    **목표**: Wikimedia Commons에서 1000개 이미지 수집
    
    ### 통과 과정
    
    
    Stage 1: Planning ✓ robots.txt 확인: /robots.txt → User-Agent:* → Allow / ✓ ToS 검토: Wikimedia Commons = CC-BY-SA 3.0 라이선스 확인 ✓ 법무 검토: 출처표기 + CC 배지 = 저작권 안전

    Stage 2: Collection ✓ User-Agent 설정: "CrownyImageCollector/2.0 (+docs.crowny.org/web-scraping; contact: crawler@crowny.org)" ✓ Rate-limiting: 1초 딜레이 + 2초 랜덤 지터 ✓ 메타데이터 저장: 각 이미지마다 JSON (source, license, author, hash)

    Stage 3: Deployment ✓ 출처 링크: 모든 이미지에 Wikimedia 원본 URL 하이퍼링크 ✓ CC 배지: "CC-BY-SA-3.0" 아이콘 + 저작자명 표시 ✓ 문서: gallery.crowny.org/terms = "모든 이미지는 크리에이티브커먼즈 라이선스"

    Stage 4: Audit ✓ 6개월: 라이선스 변경 스캔 (연간 1회) ✓ DMCA 처리: 0건 (합법적 수집 + 명확한 출처) ✓ 사용자 만족도: 투명한 출처표기로 신뢰 상승 ```


    VII. 주요 참고 자료

    법적 근거

    업계 사례

    • Reddit v. Anthropic (2026, 캘리포니아): 동의 없는 댓글 학습 데이터 사용 소송 진행 중
    • Clearview AI 벌금 (2023, 이탈리아): €2000만 GDPR 위반 판정
    • hiQ Labs v. LinkedIn (2022, 항소법원): 공개 데이터 스크래핑 일반적으로 합법 (CFAA 무관)

    도구 및 라이브러리

    • RFC 9309 파서: muratgozel/robotstxt-util
    • 얼굴 감지: OpenCV, TensorFlow Lite (경량)
    • PII 탐지: regex 기반 또는 transformers 모델
    • 라이선스 감지: licensename.js, SPDX 식별자

    VIII. 결론: 크라우니의 약속

    크라우니 이미지수집기는 다음 6가지 원칙으로 운영됩니다:

    1. 투명성 — 모든 출처 명시, User-Agent 정직
    2. 존중 — robots.txt 준수, rate-limit 예의
    3. 안전 — 개인정보·얼굴정보 자동 필터링
    4. 책임 — 24시간 삭제요청 응응, 감시 체계
    5. 법준수 — GDPR/CCPA/저작권법 동시 만족
    6. 진정성 — CC 라이선스 명확 표기, 저작자 존경
    "수집한 것은 모두 정직하게 돌려줄 수 있는 데이터만"

    버전: 2.0 (2026-06-14) 담당: 크라우니 데이터거버넌스팀 검토 주기: 분기 (Q3 2026) 다음 검토: 2026-09-14