Night Watch
Підтримуйте працездатність сайтів під час навали скраперів: моніторинг доступності, захист на базі безкоштовного тарифу Cloudflare та захист від ботів.
- Linux
- Python 3.10+
- Cloudflare Free plan
- ASGI or WSGI apps

Що він робить
Night Watch відкриває кожен ваш сайт так, як це робить відвідувач, кожні п’ять хвилин, і повідомляє вас у момент, коли сайт перестає відкриватися, і в момент, коли він знову починає працювати. Коли сайт «лягає» через те, що скрапер його затоплює, вартовий вмикає правило Cloudflare, яке зупиняє потік на межі, і ваш застосунок продовжує обслуговувати людей, поки це триває.
- Кожен сайт, кожні п’ять хвилин. Кожна зона у вашому акаунті Cloudflare, а також будь-яка сторінка, яку ви вкажете, за бажанням — з текстом, який має бути на сторінці. Одне повідомлення, коли сайт падає, одне — коли він повертається, з тривалістю простою, і нагадування, поки він не працює. Поштою, через вебхук чату або обома способами.
- Захист на безкоштовному тарифі. Три власні правила WAF: Chrome user agent без заголовків, які надсилає справжній Chrome, отримує перевірку; запити на сторінки від хмар скраперів отримують перевірку; і аварійне правило перевіряє незнайомців без cookie та без посилання під час потоку.
- Вмикається сам. Коли сайт падає через перевантаження, вартовий вмикає аварійне правило й повідомляє про це в сповіщенні; через кілька годин після відновлення сайту він вимикає його. Захист, який ви ввімкнули вручну, залишається увімкненим.
- Ворота всередині вашого застосунку. Один файл без залежностей, для FastAPI, Starlette, Django, Flask або будь-якого застосунку ASGI чи WSGI. Він відхиляє підроблені браузери до запуску вашого коду й утримує незнайомців у межах того, що може обслуговувати кожен воркер. Люди з cookie або ті, хто прийшов через посилання, цього не помічають.
- Бачте, хто вас атакує. Що файрвол Cloudflare перевірив за останні хвилини: за правилом, мережею, країною, user agent і шляхом, прочитане з сирих подій, які дозволяє безкоштовний тариф.
- Вбудоване скасування. Кожна зміна правил спочатку зберігає правила зони, ваші власні правила залишаються попереду наших, і одна команда повертає збережений набір.
Перевірено на наших власних сайтах
- Реальний потік, одна година: на одному з наших сайтів правило підроблених браузерів перевірило понад 10 000 запитів. Ті 10 000, які Cloudflare дозволяє нам прочитати, надійшли з 9 627 адрес домашнього широкосмугового доступу, жодна з яких не надсилала більше 4 запитів: обмеження швидкості за адресою ніколи б не спрацювало.
- Кожне правило, перевірене наживо на безкоштовному тарифі: незнайомця перевірили, коли аварійне правило було увімкнено, і пропустили з cookie або посиланням; Chrome user agent без заголовків браузера отримав перевірку; Googlebot пройшов. Потім попередні правила зони були відновлені точно.
- Ворота під навантаженням до 1 747 запитів на секунду на uvicorn: кожен скрапер без браузерних заголовків відхилявся, сторонні дотримувалися того, що може обслуговувати застосунок, а кожен повертається відвідувач, відвідувач за посиланням і запит Googlebot обслуговувалися за медіанний час 0,20 секунди, тобто за власний час сторінки.
Що всередині
Вартовий
Сайти з вашого облікового запису Cloudflare та список, перевірки, що виглядають як відвідувач, повідомлення поштою або через вебхук, і тест, який відрізняє «все лежить» від «ця машина не в мережі».
Захист
Встановлення, стан, увімкнення, вимкнення, видалення та відновлення для однієї зони або всіх, з попереднім резервним копіюванням кожної зміни.
Ворота
Проміжне ПЗ ASGI та WSGI, сторінка «зачекайте» на 2 секунди, яка видає людям cookie, і один рядок журналу на хвилину.
Інструкція з експлуатації
Що робити, коли сайт повільний або недоступний, як читати потік подій і що не варто вмикати в панелі керування Cloudflare.
Вимоги
- Linux із systemd і Python 3.10 або новішої версії; нічого встановлювати з pip не потрібно.
- Для захисту та перегляду подій потрібні сайти на Cloudflare (будь-який тариф, включно з безкоштовним) і токен API.
- Машина, відмінна від тієї, що обслуговує ваші сайти, щоб вона могла повідомити, коли та вийде з ладу.
Корисно знати
- Аварійне правило також ставить виклик людині, яка вводить вашу адресу в новому браузері, тому воно вимкнене, окрім випадків навантаження.
- Перевірені боти та роботи, які називають себе, ніколи не отримують виклик, а пошукові системи ніколи не відсіюються воротами.
- Захист використовує три з п’яти власних правил, які дозволяє безкоштовний тариф для кожної зони.
Питання
Чи потрібен мені платний тариф Cloudflare?
Ні. Усе, що робить Night Watch, працює на безкоштовному тарифі: три правила, перегляд подій та автоматичне перемикання. Платний тариф лише дає більше слотів для правил поруч із нашими.
Чи блокуватиме він пошукові краулери Google або AI?
Ні. Перевірені боти Cloudflare та кожен робот, який називає себе в user agent, проходять захист, а ворота ніколи не відсіюють пошукову систему чи попередній перегляд посилання. Якщо ви хочете блокувати краулерів AI, це окремий вибір у панелі керування Cloudflare.
Мій сайт не на Cloudflare. Чи це все одно корисно?
Вартовий і ворота працюють скрізь: вартовий відкриває будь-який URL, а ворота захищають будь-який вебзастосунок на Python. Захист і перегляд подій потребують Cloudflare.
Чим це відрізняється від моніторингу доступності?
Моніторинг доступності повідомляє, що сайт недоступний. Night Watch також це повідомляє, а потім діє щодо найпоширенішої причини, яку ми спостерігаємо: вмикає захист на межі Cloudflare, і шлюз продовжує обслуговувати потрібних вам користувачів, поки триває потік.
Оновлено: