Night Watch
スクレイパーの殺到からサイトを維持:稼働監視、Cloudflare Freeプランのシールド、ボットゲート。
- Linux
- Python 3.10+
- Cloudflare Free plan
- ASGI or WSGI apps

機能
Night Watch は、あなたが運用するすべてのサイトを訪問者と同じように5分ごとに開き、開かなくなった瞬間と再び開いた瞬間を知らせます。スクレイパーがサイトを氾濫させてダウンした場合、ウォッチは Cloudflare のルールを有効にしてエッジで氾濫を止め、アプリは人々にサービスを提供し続けます。
- すべてのサイトを5分ごとに。 Cloudflare アカウント内のすべてのゾーン、およびリストアップした任意のページ(必要に応じて、ページに含まれるべきテキストを指定可能)。サイトがダウンしたとき、復旧したとき(ダウンしていた時間を記載)、ダウンしている間のリマインダーを通知します。メール、チャット Webhook、またはその両方で受け取れます。
- Free プランでのシールド。 3つの WAF カスタムルール:すべての本物の Chrome が送信するヘッダーを持たない Chrome ユーザーエージェントにはチャレンジを発行し、スクレイパークラウドからのページリクエストにはチャレンジを発行し、氾濫中に Cookie も参照元リンクもない見知らぬ訪問者にチャレンジを発行する緊急ルールを用意しています。
- 自動で切り替え。 過負荷でサイトがダウンすると、ウォッチは緊急ルールを有効にし、アラームでその旨を伝えます。サイトが復旧してから数時間後に無効化します。あなたが手動で有効にしたシールドは有効なままです。
- アプリ内部のゲート。 依存関係なしの1つのファイルで、FastAPI、Starlette、Django、Flask、または任意の ASGI / WSGI アプリに対応します。コードが実行される前に偽のブラウザを拒否し、見知らぬ訪問者を各ワーカーが処理できる範囲内に留めます。Cookie を持つユーザーやリンク経由でアクセスしたユーザーは、その存在に気づきません。
- 何が攻撃しているかを確認。 Free プランで読み取れる生イベントから、直近数分間に Cloudflare のファイアウォールがルール、ネットワーク、国、ユーザーエージェント、パス別に何をチャレンジしたかを表示します。
- 元に戻す機能を搭載。 ルール変更のたびにゾーンのルールを最初に保存し、あなたのルールは私たちのルールより前に配置されます。1つのコマンドで保存されたセットを復元できます。
自社サイトでテスト済み
- 実際の氾濫、1時間: 当社のサイトで、偽ブラウザルールが10,000件以上のリクエストにチャレンジを発行しました。Cloudflare で読み取れた10,000件は、9,627の家庭用ブロードバンドアドレスからのもので、いずれも4件以下しか送信していませんでした。アドレス別のレート制限では発動しなかったでしょう。
- Free プランで全ルールを実機検証: 緊急ルール有効時に Cookie なし・リンクなしの見知らぬ訪問者はチャレンジされ、Cookie またはリンクがあれば通過しました。ブラウザヘッダーを持たない Chrome ユーザーエージェントはチャレンジされました。Googlebot は通過しました。その後、ゾーンの既存ルールは完全に復元されました。
- uvicorn上の1秒あたり1,747リクエスト以下のゲート:ブラウザヘッダーのないスクレイパーはすべて拒否し、見知らぬ訪問者はアプリが提供できる範囲に限定し、リピーター、リンク経由の訪問者、Googlebotからのリクエストはすべて、ページ自身の表示時間である中央値0.20秒で提供しました。
中身
ウォッチ
Cloudflareアカウントとリストからサイトを監視し、訪問者に見えるチェック、メールまたはWebhookによる通知、そして「すべてダウン」と「このマシンがオフライン」を区別するテストを行います。
シールド
1つのゾーンまたはすべてのゾーンに対するインストール、ステータス確認、オン、オフ、アンインストール、復元に対応し、すべての変更を事前にバックアップします。
ゲート
ASGIおよびWSGIミドルウェア、ユーザーにクッキーを渡す2秒間の「しばらくお待ちください」ページ、そして1分あたり1行のログ。
ランブック
サイトが遅い場合やダウンした場合の対処法、トラフィックの急増の読み方、そしてCloudflareのダッシュボードで有効にしてはいけない設定。
動作環境
- systemdとPython 3.10以降を備えたLinux環境。pipからのインストールは不要です。
- シールドとイベントビューを使用するには、Cloudflare上のサイト(すべてのプラン対応、Freeプラン含む)とAPIトークンが必要です。
- サイトを配信しているマシンとは別のマシンを用意し、そのマシンがダウンした際に通知できるようにします。
よくあるご質問
- 緊急ルールは、新しいブラウザでアドレスを入力したユーザーにもチャレンジを要求するため、トラフィックの急増時以外はオフにしています。
- 検証済みボットと、自らを名乗るロボットはチャレンジされず、検索エンジンはゲートによって拒否されることはありません。
- シールドは、Freeプランでゾーンごとに許可される5つのカスタムルールのうち3つを使用します。
よくある質問
有料のCloudflareプランは必要ですか?
いいえ。Night Watchのすべての機能はFreeプランで動作します:3つのルール、イベントビュー、自動切り替えです。有料プランは、私たちのルールとは別にルール枠を追加できるだけです。
GoogleやAI検索クローラーをブロックしますか?
いいえ。Cloudflareの検証済みボットと、ユーザーエージェントで自らを名乗るすべてのロボットはシールドを通過し、ゲートは検索エンジンやリンクプレビューを拒否しません。AIクローラーをブロックしたい場合は、Cloudflareのダッシュボードで別途設定してください。
サイトがCloudflare上にありません。それでも有用ですか?
ウォッチとゲートはどの環境でも動作します:ウォッチは任意のURLを開き、ゲートは任意のPython Webアプリを保護します。シールドとイベントビューにはCloudflareが必要です。
通常のアップタイム監視ツールと何が違うのですか?
アップタイム監視ツールは、サイトがダウンしていることを教えてくれるだけです。Night Watchはそれだけでなく、最もよく見られる原因に対して行動を起こします。Cloudflareのエッジでシールドを有効にし、洪水が続く間も、あなたが望むユーザーにアプリを提供し続けるようゲートが制御します。
更新済み: