5P by GN⁺ 11시간전 | ★ favorite | 댓글 4개
  • Cloudflare가 Browser Rendering의 새로운 /crawl 엔드포인트를 공개 베타로 제공, 단 한 번의 API 호출로 전체 웹사이트를 크롤링할 수 있음
  • 시작 URL을 제출하면 페이지를 자동으로 탐색하고 헤드리스 브라우저로 렌더링, 결과를 HTML, Markdown, JSON 형식으로 반환
  • Workers AI 기반의 구조화된 JSON 출력, 크롤링 깊이, 페이지 수 제한, 와일드카드 패턴 등 범위 제어 기능과 증분 크롤링, 정적 모드 등 다양한 기능 제공
  • robots.txt 규칙을 준수하며, 비정상적 트래픽을 방지하는 crawl-delay도 지원
  • 모델 학습, RAG 파이프라인 구축, 사이트 전반의 콘텐츠 리서치 및 모니터링에 활용 가능

/crawl 엔드포인트 개요

  • Cloudflare의 Browser Rendering 서비스에 새로 추가된 /crawl 엔드포인트는 단일 API 호출로 전체 웹사이트를 탐색하고 콘텐츠를 수집하는 기능 제공
    • 사용자는 시작 URL을 제출하면, 시스템이 자동으로 링크를 따라가며 페이지를 렌더링하고 결과를 반환
    • 반환 형식은 HTML, Markdown, 구조화된 JSON 중 선택 가능
  • 이 기능은 공개 베타(open beta) 상태로 제공되며, Workers Free 및 Paid 플랜 모두에서 사용 가능
  • 크롤 작업은 비동기(asynchronous) 방식으로 수행됨
    • URL을 제출하면 job ID를 받으며, 이후 처리 완료 시점에 결과를 조회할 수 있음
    • 페이지는 순차적으로 처리되며, 완료된 결과를 단계적으로 확인 가능

주요 기능

  • 다중 출력 형식 지원
    • HTML, Markdown, JSON 등 다양한 형식으로 결과 반환
    • JSON 형식은 Workers AI를 통해 구조화된 데이터로 제공
  • 크롤 범위 제어(crawl scope controls)
    • 크롤 깊이(depth), 페이지 수 제한, URL 패턴 포함/제외 설정 가능
  • 자동 페이지 탐색(automatic page discovery)
    • 사이트맵(sitemap), 페이지 링크, 또는 두 가지 모두를 기반으로 URL 자동 탐색
  • 증분 크롤링(incremental crawling)
    • modifiedSincemaxAge 파라미터를 사용해 변경되지 않은 페이지를 건너뛰어 시간과 비용 절감
  • 정적 모드(static mode)
    • render: false 설정 시 브라우저를 실행하지 않고 정적 HTML만 가져오기, 정적 사이트의 빠른 크롤링 가능
  • 정상적인 봇 동작(well-behaved bot)
    • robots.txt의 지침을 준수하며, crawl-delay 설정도 인식

활용 및 참고 문서

  • 이 엔드포인트는 모델 학습 데이터 수집, RAG 파이프라인 구축, 사이트 콘텐츠 연구 및 모니터링에 유용
  • 사용자는 crawl endpoint 문서를 참고해 설정 가능
  • 자신의 사이트를 크롤링 대상으로 설정할 경우, robots.txt 및 sitemap 모범 사례를 검토해야 함

사용 가능 플랜

  • Workers Free 및 Paid 플랜 모두에서 사용 가능

가볍게 써봤는데 봇차단은 못 뚫는 것 같아요, 전 아직까진 apify 나 zyte 를 애용하게 될듯..ㅎㅎ

이거 Cloudflare 봇 차단 기능 도 뚫나요?
창도 팔고 방패도 파는건가??
뭔가 이상해요 ㅎ

ㅋㅋㅋㅋ뭔가 웃기네요

Hacker News 의견들
  • 내 경험상 Cloudflare로 보호된 페이지에서는 이게 작동하지 않음
    아쉽게도, 문제를 스스로 만들고 다시 해결책을 파는 셈이 됨

    • Azure의 bot protection만 통과하면 괜찮을지도 모름
  • Cloudflare가 프록시를 사용하는 웹사이트의 미리 스크랩된 버전을 호스팅하지 않는 게 의외임
    예를 들어 https://www.example.com/cdn-cgi/cached-contents.json 같은 형태로 제공할 수도 있을 텐데, 이미 캐시에 콘텐츠가 있으니까 굳이 스크래핑 서비스나 API를 거칠 필요가 없다고 생각함
    물론 그렇게 하지 않는 이유도 있겠지만, 기본 옵션으로 제공하지 않는 게 놀라움

    • 이런 캐시 덤프를 공개하는 건 원본의 프라이버시와 저작권 가정을 완전히 깨뜨림
      접근 제어를 걸 수도 있겠지만, 그건 결국 아무도 원하지 않은 복잡한 CDN API를 새로 만드는 셈이고, 법적 문제도 생김
      “편리한 JSON”에서 “AI 스크래퍼에게 사이트 전체를 넘기는” 건 한 끗 차이임
    • JSON 변환은 CPU를 쓰고, 결과를 저장하면 캐시 공간이 두 배로 늘어남
      요청이 있을 때만 변환하면 원본 요청을 줄이면서도 캐시 효율을 유지할 수 있음
      내가 CDN에서 일할 때는 캐시 히트율을 높이기 위해 ‘second hit caching’을 썼음 — 두 번째 요청이 들어올 때만 캐시에 저장하는 방식임
    • 완전히 같은 건 아니지만, Cloudflare는 이미 비슷한 기능을 제공 중임
      Markdown for Agents 기능을 켜면, AI 시스템이 text/markdown을 요청할 때 HTML을 실시간으로 Markdown으로 변환해줌
    • 사실 내부적으로는 이미 이런 식으로 공개 콘텐츠를 캐시 기반으로 제공하고 있을 가능성도 있음
    • 단, 이런 방식은 단순한 사이트에는 통하겠지만, SPA 같은 복잡한 사이트는 여전히 브라우저 렌더링이 필요한 스크래핑 서비스가 필요함
  • Cloudflare가 스크래핑 방어책을 팔면서 동시에 스크래핑 서비스를 파는 게 마치 조직폭력배 같음
    인터넷 전반에 걸친 영향력 덕분에 가능한 일임

    • 그렇지 않음. 공식 문서에 설명되어 있음
    • 무료 DNS는 전체의 일부일 뿐이고, 진짜 힘은 캐싱·라우팅·DDoS 방어 서비스에 있음
      DNS는 데이터 수집과 ‘착한 이미지’용임
    • 단순히 스크래핑 방어를 판 게 아니라, 웹 기반 DDoS 방어를 판 것임
    • Cloudflare는 퍼블리셔와 AI 기업 사이의 중개자 역할을 하려는 듯함
      퍼블리셔가 Cloudflare 뒤에 있고, AI 기업이 데이터를 원하면 Cloudflare를 통해 유료로 접근하게 만드는 구조임
      일반 사용자가 아니라, AI 기업이 주요 고객층임
    • /crawl 엔드포인트는 robots.txt를 존중함
      즉, 크롤링 금지된 URL은 응답에 "status": "disallowed"로 표시됨
  • 구조화된 crawl endpoint를 노출하는 건 robots.txtsitemap의 자연스러운 진화처럼 느껴짐
    더 많은 사이트가 이런 기계 판독용 진입점을 제공하면, 인덱싱이 훨씬 효율적일 것임
    지금은 크롤러들이 같은 구조를 계속 재탐색하느라 낭비가 많음

    • REST를 계속 썼다면 인덱싱 낭비가 훨씬 줄었을 것 같음
      나는 API를 사람 중심으로 설계하고, LLM 제공자가 그 위에서 최적화하도록 하는 쪽을 선호함
    • 사실 semantic HTML이 이미 그 역할을 하고 있음
      HTML과 DOM은 본질적으로 기계가 읽기 위한 구조
      새로운 걸 발명할 필요 없이, 기존 기술을 제대로 활용하면 됨
    • 비효율적인 크롤링으로 이득을 보는 건 anti-bot 솔루션 업체뿐
    • 하지만 이런 구조는 공급망 공격을 악화시킬 수도 있음
      사람에게는 정상 페이지를, 봇에게는 다른 페이지를 보여주는 식으로 악용될 수 있음
    • 결국 크롤러와 사람에게 다른 콘텐츠를 보여주는 건 근본적인 문제를 낳음
  • 웹 아카이빙 용도로 쓸 수 있었을 텐데, WARC 포맷 지원이 없는 게 아쉬움
    기자나 연구자에게 유용했을 것임

  • 원본 서버는 여전히 Cloudflare의 Browser Rendering 요청을 감지하고 차단할 수 있음
    CF-Worker 헤더로 구분 가능하고, WAF 규칙이나 미들웨어에서 필터링 가능함
    다만 이 요청들은 Cloudflare ASN 13335에서 오며 낮은 bot score를 가지므로, 단순한 점수 기반 방어는 통하지 않음
    결국 애플리케이션 레벨의 속도 제한과 행위 분석이 더 효과적임
    구조적 충돌은 존재하지만, 검색엔진이 웹마스터 도구를 제공하는 것과 비슷한 상황임

    • 그들은 robots.txt를 따르니, 그게 가장 간단한 방법임
  • 크롤러가 bot 차단 로직 앞에서 동작하는지 뒤에서 동작하는지 궁금했음

  • 내 사이트의 잘 크롤된 버전을 제공할 수 있으면 좋겠다고 생각했음
    사이트 관리자에게 그런 기능을 제공하면, 크롤러들이 단순히 전송 비용만 내고 접근할 수 있을 텐데
    직접 내 사이트를 대상으로 크롤 잡을 돌리고, static. 서브도메인으로 제공하는 식으로 구현할 수도 있을 듯함

    • 하지만 그게 어떤 용도인지 잘 모르겠음
      사이트가 정적이라면 그냥 HTML로 렌더링해서 호스팅하면 되고, 동적이라면 스냅샷이 무슨 의미가 있을지 의문임
      캐싱을 추가하는 게 더 나은 접근일 수도 있음
  • Cloudflare는 요즘 멋진 기능들을 다 가져가는 느낌
    AWS는 뭐 하고 있는지 궁금함

  • 이번 기능은 정말 인상적임
    Cloudflare가 미래의 방향으로 미리 움직이고 있음