Night Watch
스크레이퍼 폭주에도 사이트를 정상 유지하세요: 업타임 워치, Cloudflare 무료 플랜 보호 및 봇 게이트를 제공합니다.
- Linux
- Python 3.10+
- Cloudflare Free plan
- ASGI or WSGI apps

기능 소개
나이트 워치는 여러분이 운영하는 모든 사이트를 방문자처럼 5분마다 열어 보고, 열리지 않게 되면 즉시, 다시 열리면 그 순간 알려 줍니다. 스크레이퍼가 폭주해 사이트가 멈추면 워치가 Cloudflare 규칙을 켜서 엣지에서 폭주를 막고, 그동안 앱은 계속 사용자에게 서비스를 제공합니다.
- 모든 사이트, 5분마다. Cloudflare 계정의 모든 존과 여러분이 등록한 모든 페이지를 확인하며, 페이지에 반드시 포함해야 할 텍스트를 선택적으로 지정할 수 있습니다. 사이트가 다운되면 메시지 하나, 복구되면 메시지 하나에 다운된 시간 표시, 다운된 동안에는 리마인더. 메일, 채팅 웹훅 또는 둘 다로 받을 수 있습니다.
- Free 플랜의 방패. WAF 맞춤 규칙 3개: 실제 Chrome이 보내는 헤더가 없는 Chrome 사용자 에이전트는 챌린지, 스크레이퍼 클라우드에서 온 페이지 요청은 챌린지, 폭주 중 쿠키도 링크도 없는 낯선 방문자에게는 비상 규칙으로 챌린지를 적용합니다.
- 스스로 켜집니다. 과부하로 사이트가 다운되면 워치가 비상 규칙을 켜고 알람에 그 사실을 적습니다. 사이트가 복구된 후 몇 시간이 지나면 규칙을 끕니다. 여러분이 직접 켜 둔 방패는 계속 켜져 있습니다.
- 앱 내부의 게이트. 의존성 없는 파일 하나로, FastAPI, Starlette, Django, Flask 또는 모든 ASGI/WSGI 앱에 맞습니다. 코드가 실행되기 전에 가짜 브라우저를 거부하고, 각 워처가 처리할 수 있는 범위 내에서 낯선 방문자를 제한합니다. 쿠키가 있거나 링크를 통해 들어온 사용자는 이를 전혀 느끼지 못합니다.
- 무엇이 몰려오는지 확인하세요. Free 플랜에서 허용하는 원본 이벤트에서 최근 몇 분간 Cloudflare 방화벽이 챌린지한 내용을 규칙, 네트워크, 국가, 사용자 에이전트, 경로별로 읽습니다.
- 되돌리기 내장. 규칙을 변경할 때마다 존의 규칙을 먼저 저장하고, 여러분의 규칙은 저희 규칙보다 앞에 그대로 유지되며, 명령 하나로 저장된 규칙을 복원할 수 있습니다.
자체 사이트에서 검증
- 실제 폭주, 1시간: 저희 사이트에서 가짜 브라우저 규칙이 10,000건 이상의 요청을 챌린지했습니다. Cloudflare에서 읽을 수 있는 10,000건은 9,627개의 가정용 광대역 주소에서 왔으며, 각 주소는 4건을 넘기지 않았습니다: 주소별 속도 제한으로는 절대 발동하지 않았을 것입니다.
- Free 플랜에서 모든 규칙을 실시간으로 검증: 비상 규칙이 켜진 상태에서 낯선 방문자는 챌린지되었고, 쿠키나 링크가 있으면 통과되었습니다. 브라우저 헤더가 없는 Chrome 사용자 에이전트는 챌린지되었고, Googlebot은 통과했습니다. 이후 존의 기존 규칙을 정확히 복원했습니다.
- 초당 1,747건의 요청을 처리하는 게이트 on uvicorn: 브라우저 헤더가 없는 모든 스크래퍼는 차단되고, 외부인은 앱이 제공할 수 있는 범위 내에서만 접근하며, 재방문자, 링크 방문자 및 Googlebot 요청은 모두 페이지 자체 소요 시간인 중앙값 0.20초 안에 처리됩니다.
구성품
감시
Cloudflare 계정과 목록에 있는 사이트들을 방문자처럼 보이는 검사, 메일 또는 웹훅 메시지, 그리고 "전체 다운"과 "이 머신만 오프라인"을 구분하는 테스트로 감시합니다.
방패
하나의 존 또는 모든 존에 대해 설치, 상태 확인, 켜기, 끄기, 제거 및 복원 기능을 제공하며, 모든 변경 사항이 적용되기 전에 백업이 먼저 수행됩니다.
게이트
ASGI 및 WSGI 미들웨어, 사용자에게 쿠키를 발급하는 2초간의 "잠시만 기다려 주세요" 페이지, 그리고 분당 한 줄의 로그를 제공합니다.
런북
사이트가 느리거나 다운되었을 때 할 일, 트래픽 폭증을 해석하는 방법, 그리고 Cloudflare 대시보드에서 켜면 안 되는 설정들을 안내합니다.
요구 사항
- systemd와 Python 3.10 이상을 갖춘 Linux 환경; pip로 설치할 항목이 없습니다.
- 방패와 이벤트 뷰 기능을 사용하려면 Cloudflare(모든 요금제, 무료 요금제 포함)에 등록된 사이트와 API 토큰이 필요합니다.
- 사이트를 서비스하는 머신과 다른 머신에서 실행하여, 해당 머신이 다운되었을 때 알려줄 수 있어야 합니다.
참고 사항
- 비상 규칙은 새 브라우저에 주소를 직접 입력한 사용자도 챌린지하므로, 트래픽 폭증 시를 제외하고는 꺼져 있습니다.
- 인증된 봇과 스스로를 밝히는 봇은 챌린지를 받지 않으며, 검색 엔진은 게이트에 의해 차단되지 않습니다.
- 방패는 무료 요금제에서 존당 허용되는 5개의 맞춤 규칙 중 3개를 사용합니다.
자주 묻는 질문
유료 Cloudflare 요금제가 필요한가요?
아니요. Night Watch의 모든 기능은 무료 요금제에서 작동합니다: 3개의 규칙, 이벤트 뷰 및 자동 전환 기능. 유료 요금제는 우리의 규칙 슬롯 외에 추가 슬롯을 제공하는 것뿐입니다.
Google이나 AI 검색 크롤러를 차단하나요?
아니요. Cloudflare의 인증된 봇과 사용자 에이전트에 스스로를 밝히는 모든 봇은 방패를 통과하며, 게이트는 검색 엔진이나 링크 미리보기를 차단하지 않습니다. AI 크롤러를 차단하려면 Cloudflare 대시보드에서 별도로 설정해야 합니다.
제 사이트가 Cloudflare에 없어도 유용한가요?
감시와 게이트는 어디서나 작동합니다: 감시는 모든 URL을 열고, 게이트는 모든 Python 웹 앱을 보호합니다. 방패와 이벤트 뷰는 Cloudflare가 필요합니다.
업타임 모니터링과 무엇이 다른가요?
업타임 모니터링은 사이트가 다운되었는지 알려줍니다. Night Watch도 이를 알려주며, 우리가 가장 흔하게 목격하는 원인에 대해 즉각적으로 조치합니다. Cloudflare의 엣지에서 실드를 활성화하고, 트래픽 폭주가 지속되는 동안 게이트가 원하는 사용자에게만 앱이 계속 서비스되도록 유지합니다.
업데이트됨: