Новость про Cloudflare перепостили, перевели и опубликовали все кому не лень, а прокомментировать почему-то никто не взялся. А тема-то важная. И, что интересно, совсем не новая.
Эти разговоры ходили ещё года полтора назад, задолго до нынешнего анонса. Тогда все носились с форматом llms.txt — файлик, которым сайт как бы просил обучающих ботов не лезть. Работал он, мягко говоря, никак. Но сам запрос был виден уже тогда: владельцы сайтов не в восторге от того, что нейронки съедают их контент и потом спокойно раздают его в своих ответах.
Почему это вообще проблема
Одно дело — когда тебя проиндексировал поисковый бот и потом где-то процитировал: в обычной выдаче или в ИИ-ответе, но со ссылкой на твой сайт. Это дополнительный трафик. А трафик автору нужен как воздух, потому что вся монетизация живёт на сайте: реклама, подписки, свои продукты, нативка, партнёрские ссылки. Способов куча, но для любого нужен свой трафик на своей площадке. Поэтому поисковых ботов почти никто не блокирует — по оценке самого Cloudflare, меньше 1% сайтов.
Совсем другое дело — когда нейронка сожрала твой материал и вываливает всю фактуру, все выводы прямо у себя в окне. Может, тебя даже упомянет как автора. Но без ссылки. Без перехода. Просто "есть такое мнение". И всё, над чем ты пыжился-мурыжился — писал, собирал по крупицам многолетний опыт, чтобы поделиться с читателями и как-то на этом заработать, — модель отдаёт бесплатно. Задаром.
Вот отсюда и разница в цифрах. Поиск блокирует меньше 1% сайтов, а обучение — уже как минимум 17%. Далеко не все, конечно. Но это люди, которые очень захотели и нашли способ, а способы там неочевидные, на поверхности не лежат. И дальше это будет только расти.
Кто на самом деле тормозил
Самое интересное: проблема все эти годы была не в сайтах, а в тех, кто делает нейросети.
Им-то как раз позарез нужно обучать модели на свежем человеческом тексте. Не будет живого материала — модель начинает тупеть, причём стремительно. И это уже видно невооружённым глазом: интернет заваливает нейроконтентом, и модели всё чаще жуют трижды пересказанные идеи. Змея кусает свой хвост.
Получается забавный расклад. Одной рукой ИИ-компании хотят всё больше живого человеческого контента — иначе их модели деградируют. А другой рукой те же компании должны придумать, как успокоить владельцев сайтов: пустить поискового бота и не пустить обучающего. Тот самый llms.txt и должен был это разрулить, но не разрулил — половина провайдеров просто забила на его поддержку.
Что сделал Cloudflare
Cloudflare — это, на минуточку, больше 20% сайтов по всему миру. И он заявляет, что договорился с большинством крупных игроков: они теперь честно делят своих ботов на поисковых и обучающих и слушаются директив. Google и Apple под условия уже подходят, Microsoft обещает подтянуться в начале 2027-го. Для владельца сайта это выглядит как один переключатель: поиск оставляем, обучение закрываем.
И вот тут спрятана главная мысль. Cloudflare просто решил закрыть потребность, которая на рынке всё заметнее и будет только расти. Нейровыдача меняет уже не только то, как продвигаются, но и саму манеру, в которой люди ищут, — так что желание "в поиск пускать, а в обучение нет" будет только крепнуть. 17% против 1% — это не про технологию, это про спрос, который был всегда, просто до сих пор было нечем его закрыть.
А теперь ложка дёгтя
Разделить ботов механически сами мы никогда не могли. Один и тот же бот заходит на сайт сразу с двумя задачами — и для поиска, и для обучения. Ни по названию бота, ни по IP их не растащишь. Значит, вся конструкция держится на честном слове операторов. Захотят соблюдать — будут. Не захотят — а кто проверит?
Но даже не это главное. Контент утягивают не только сами модели. Есть тьма парсеров, которые тупо копируют твой текст и бесплатно выкладывают у себя. Я как автор сталкиваюсь с этим постоянно: каждая публикация через день всплывает на трёх, пяти, десяти чужих сайтах. И вот вопрос — будут ли те сайты закрываться от обучающих ботов? Да с чего бы. То есть мой материал модель не возьмёт с моего сайта, зато спокойно возьмёт с чужого.
Куда всё катится
При этом сам разворот мне нравится. Недавно ведь была история, что Google начал платить издателям за использование их контента в ответах нейросетей — пока в тестовом режиме, но это по сути тот же разговор — рынок пытается нащупать баланс: без живого человеческого текста модели тупеют, а человеку должно быть выгодно этот текст отдавать.
Нейросети позарез нужен тот, кому есть что сказать. На пустом пересказе пересказа она "задыхается". В сухом остатке ценность остаётся у авторов, способных передавать смысл, опыт и фактуру, а не у контент-мельниц, которые штампуют пустоту.
Российскими картами в зарубежных сервисах теперь не расплатиться, хотя стабильная работа сетевой инфраструктуры по-прежнему требует своевременной оплаты каждого сервиса. Разобраться, как оплатить Cloudflare из России, вполне реально через доступные платежные инструменты и международные финансовые решения.
Тарифные планы и платные сервисы Cloudflare в 2026 году
Базовый набор функций платформа дает бесплатно, но растущему проекту возможностей тарифа Free быстро начинает не хватать для регулярных задач и проведения платежей через платежный профиль. Владельцам сайтов для защиты от атак, гибкой маршрутизации и быстрой доставки контента понадобится платный тариф с регулярным платежом по выставленному платежному счету.
Стоимость и возможности подписок Pro, Business и Enterprise
За каждый подключенный домен тариф Pro будет стоить 20 долларов в месяц. В этот тариф Pro включены базовый WAF, инструменты Polish для оптимизации картинок и ускоренный мобильный трафик. На плане Business за 200 долларов в месяц подписка дает расширенные правила WAF, глубокую фильтрацию ботов, персональные SSL-сертификаты и фиксированный SLA. Для крупной инфраструктуры предусмотрен тарифный план Enterprise: стоимость рассчитывается индивидуально, а запросы обрабатывает выделенная линия поддержки.
Оплата доменов в Cloudflare Registrar, платформы Workers и дополнительных расширений
Кроме планов для сайтов, сервис берет оплату за регистрацию и продление каждого домена по себестоимости реестров — без наценок сторонних сервисов. В общий счет входят и бессерверные вычисления Cloudflare Workers при выходе за рамки бесплатного лимита, а также аренда выделенных IP, хранилище R2 и фильтрация ботов. Все эти услуги суммируются в едином ежемесячном счете.
Рабочие способы оплаты Cloudflare из России
Обычный платеж с российской карты биллинг отклонит, поэтому для проведения платежной операции приходится искать обходные пути. Чтобы решить задачу и вовремя оплатить Cloudflare, пользователи выбирают один из альтернативных методов расчетов с зарубежным биллингом.
Оплата с помощью виртуальных международных карт
Предоплаченные виртуальные карты иностранных эмитентов позволяют без проблем оплатить подписку на Cloudflare. Карту лучше сразу открывать в долларах США, чтобы не терять деньги на двойной конвертации. До привязки убедитесь, что на балансе есть средства, протокол 3-D Secure активен, а лимит на покупки за границей выставлен с запасом.
Использование зарубежных банковских карт Visa и Mastercard
Физические и цифровые карты Visa и Mastercard от банков Грузии, Армении, Казахстана или Турции проходят в биллинге без малейших заминок. Такой способ оплаты Cloudflare отлично подходит для регулярных платежей: оплата Cloudflare за подписки и бессерверную платформу проходит стабильно каждый месяц.
Тем, кто не готов открывать счета в зарубежных банках, удобнее воспользоваться услугами проверенного сервиса-посредника Пипл. Эта платформа дает возможность пользователям оплачивать подписки на зарубежные сервисы, проводить платежи за софт и заказывать международные платежные решения без волокиты. Понятный кабинет и оперативная помощь в Telegram помогают оформить нужные подписки буквально за несколько минут.
Использование верифицированных аккаунтов PayPal
Зарубежные учетные записи PayPal с привязкой к иностранному счету принимаются биллингом на общих основаниях. Чтобы платеж прошел без задержек, страна в аккаунте PayPal должна строго совпадать с платежными данными карты.
Пошаговая инструкция по оплате подписки Cloudflare
Авторизуйтесь в личном кабинете Cloudflare и откройте настройки своего аккаунта.
Перейдите в меню Manage Account, найдите пункт Billing и кликните по Payment Info.
Укажите платежный адрес латинскими буквами, выбрав страну, где оформлено ваше платежное средство.
Введите реквизиты карты Visa или Mastercard: ее номер, срок действия и трехзначный защитный код CVC.
Зайдите во вкладку Subscriptions либо выберите конкретный домен, отметьте тариф Pro или Business и нажмите кнопку Upgrade.
Подтвердите списание одноразовым кодом 3-D Secure в банковском приложении.
Подготовка профиля и настройка платёжного адреса в личном кабинете
Перед тем как оплатить Cloudflare из России, обязательно внесите корректный платежный адрес в личном кабинете. Укажите существующий город, улицу и почтовый индекс именно того государства, где вам открыли карту. Если страна в биллинг-адресе разойдется со страной выпустившего карту банка, система почти наверняка отклонит транзакцию.
Добавление реквизитов в разделе Billing
В блоке Billing добавьте новый платежный инструмент и сделайте его основным источником списаний. Для проверки работоспособности карты сервис временно заблокирует и сразу вернет сумму около одного доллара.
Подтверждение списания и проверка статуса тарифа
Как только тариф активируется, статус подписки в панели изменится в течение пары минут. Чек за прошедший платеж появится в разделе Invoices, а сама платформа отправит подтверждение на ваш email.
Ошибки при проведении платежей и методы их решения
Сложности с платежами обычно возникают из-за срабатывания внутренней защиты на платформе или ограничений в самом банке.
Блокировка транзакции антифрод-системой и несоответствие биллинг-адреса
Защитный алгоритм сверяет IP-адрес текущего входа со страной привязанного платежного средства. Платеж не пройдет, если платежный адрес в аккаунте не совпадет с регионом выпуска карты. Сверьте правильность введенного адреса и повторите попытку, подключившись через сеть соответствующей страны.
Сбои при подтверждении 3-D Secure и отклонение карты
Иностранные процессинговые центры в обязательном порядке запрашивают подтверждение через 3-D Secure. Списание не состоится, если не придет пуш-код от банка или в настройках счета выключены трансграничные платежи. Зайдите в мобильный банк, проверьте действующие лимиты и при необходимости увеличьте сумму суточных расходов.
Часто задаваемые вопросы (FAQ)
Можно ли оплатить Cloudflare через СБП или российские карты «Мир»?
Напрямую платформа российские карты «Мир», отечественные UnionPay и платежи через СБП не принимает. Для расчетов понадобится зарубежная карта Visa, Mastercard или подтвержденный иностранный аккаунт PayPal.
Что будет, если повысить тарифный план в середине расчётного периода?
При смене тарифа платформа автоматически пересчитает сумму платежа с учетом дней, оставшихся до конца платежного периода. Расширенные возможности откроются сразу, а доплату сервис спишет через выбранный способ оплаты среди привязанных зарубежных сервисов.
Как приобрести или перенести домен через Cloudflare Registrar?
Перейдите во вкладку Domain Registration, кликните по Transfer or Register Domains, найдите подходящее имя и подтвердите покупку. Деньги за выбранный домен спишутся с прикрепленной зарубежной карты автоматически — отдельная оплата вручную не потребуется.
Где купить ключ Cloudflare WARP+ или подключить тариф Zero Trust?
Платный тариф WARP+ активируется прямо в приложении: подписка оформляется через зарубежный аккаунт App Store или Google Play, куда и направляется платеж с платежного баланса. Подключать и менять тарифы Zero Trust можно прямо в панели Cloudflare, а оплата спишется с привязанной карты в автоматическом режиме.
Как понять, что платёж прошёл успешно?
Как только пройдет оплата, возле имени домена появится статус тарифа Pro или Business, а инвойс в разделе Invoices станет Paid.
Что делать, если деньги списались, но тариф в панели управления не изменился?
Обычно новые возможности открываются в панели управления в пределах 15 минут. Если функции не появились, найдите списание в выписке банка, скопируйте ID транзакции и создайте обращение через форму Support.
От чего зависит итоговая сумма к оплате в инвойсе?
Итоговый платеж складывается из базовой подписки на домены, расходов на сетевой трафик Workers, хранилища R2 и налогов вашей платежной локации.
Интернет незаметно перешёл черту: по подсчётам Cloudflare, около 57% всех запросов в вебе сегодня генерируют не люди, а автоматика — боты, скраперы и всё чаще ИИ-агенты. Машины в сети уже официально в большинстве. И главная проблема даже не в их количестве, а в том, что старые способы отличить человека от программы перестали работать.
Почему капча больше не спасает
Классическая защита вроде CAPTCHA устроена как охранник на входе: она проверяет тебя один раз, при заходе на страницу, а всё, что ты делаешь дальше, по умолчанию считает поведением живого человека. Для современных ИИ-агентов это подарок. Подделать одно-единственное действие на входе — задача несложная. А получив «пропуск», бот дальше волен делать что угодно: собирать контент, накручивать, выдавать себя за пользователя.
Как работает Precursor
Новая система Cloudflare под названием Precursor (запущена в общий доступ 13 июля) переворачивает логику. Вместо разового экзамена она непрерывно наблюдает за поведением на протяжении всей сессии. Небольшой скрипт, который Cloudflare сам подставляет в страницы, проходящие через его сеть, считывает десятки сигналов: ритм движения мыши, скорость и характер прокрутки, темп набора текста, работу с буфером обмена, как долго вкладка остаётся видимой.
Дальше движок ищет внутренние противоречия — так называемые coherence-проверки. Например: курсор «шевелится» в тот момент, когда вкладка скрыта и человек её физически не видит. Или нажатия клавиш регистрируются там, где вообще нет активного поля ввода. Живой пользователь так себя не ведёт — а вот скрипт легко себя выдаёт подобными нестыковками.
Главный удар по ботам — и обещание приватности
Ключевая находка вот в чём. Раньше автоматизированный агент мог стереть свой «поведенческий отпечаток», просто перезагрузив страницу — и начать с чистого листа. Precursor так обойти не выйдет: счёт подозрительности (Bot Score) копится в рамках всей сессии и перезагрузкой не сбрасывается, а наоборот, обрастает контекстом. Включается защита одной кнопкой в панели Cloudflare, без единой строчки кода.
При этом компания подчёркивает приватность: скрипт хранит не сам ввод, а лишь агрегированные паттерны. Клавиатурная активность записывается как ритм и темп нажатий, но не конкретные буквы — что именно вы печатали, система не видит. «Вместо того чтобы просто проверить удостоверение на входе, мы смотрим на поведение в течение всего визита», — объясняет технический директор Cloudflare Дэйн Кнехт.
Это фронт большой войны
Precursor — часть куда более масштабного сдвига. Тот же Cloudflare недавно ввёл раздельные правила для ИИ-краулеров (отдельно поисковые, отдельно агенты, отдельно те, что тянут данные на обучение) и с осени начнёт по умолчанию блокировать часть из них. Веб фактически перестраивается вокруг одного вопроса: докажи, что ты человек — и не разово, а всё время, пока ты здесь. Чем убедительнее боты притворяются людьми, тем дороже им обходится каждый сбой в «человеческой» походке.
Крупнейший поставщик облачных сервисов Cloudflare готовится кардинально изменить подход к управлению автоматизированным трафиком. С 15 сентября 2026 года компания вводит новые правила по умолчанию для контроля доступа AI-ботов, что станет поворотным моментом в цифровой экосистеме.
Три категории AI-ботов.
Cloudflare разделяет весь AI-трафик на три четкие группы:
Search — боты, собирающие контент для последующего ответа на вопросы
Agent — автоматизированные системы, действующие в реальном времени от имени пользователей
Training — пауки, извлекающие контент для обучения моделей ИИ
Новые правила доступа.
Для новых доменов, новых сайтов от существующих клиентов и клиентов бесплатного тарифа на рекламных страницах вступают в силу строгие ограничения:
Search — разрешен по умолчанию
Agent — заблокирован по умолчанию
Training — заблокирован по умолчанию
Владельцы сайтов могут отключить эти правила через настройки безопасности до 15 сентября или в любое время после.
Важное замечание о многофункциональных ботах.
Боты, выполняющие несколько функций (например, Googlebot, Applebot, BingBot), будут классифицироваться по наиболее restrictive правилам. Если вы заблокируете Training-боты, будут заблокированы и поисковые роботы, так как они выполняют обе функции.
Монетизация контента.
Cloudflare запускает платную модель для монетизации использования контента:
Pay Per Crawl — оплата за каждый запрос к странице
Pay Per Use — оплата только когда контент действительно используется в ответах AI
Рекомендации для владельцев сайтов.
Для разных типов сайтов рекомендуются разные политики:
Блог с рекламой — блокировать Training по умолчанию, индивидуально решать по Agent
Техническая документация — разрешить Search и Agent, блокировать Training
Исследовательские данные — блокировать все, использовать Pay Per Use
Электронная коммерция — разрешить Agent, блокировать Training
Стратегические последствия.
Доступ к открытому вебу, который был бесплатным и неограниченным в течение 30 лет, теперь подвергается монетизации. Cloudflare CEO Matthew Prince подчеркнул: "Поскольку большинство трафика в Интернете не является человеческим, нам необходимо действовать быстрее, чтобы появилась устойчивая экосистема".
Заключение.
Изменения Cloudflare представляют собой первый раунд "войны за контент", где предлагается не стена, а тарифная система. Владельцы сайтов, которые подготовятся до сентября, получат преимущество, в то время как те, кто узнает об изменениях позже, будут вынуждены перестраиваться на лету.
Две недели. Ровно столько понадобилось двум крупнейшим инфраструктурным компаниям мира, чтобы одновременно встроить в интернет протокол, который может изменить саму экономику веба. Cloudflare и AWS реализовали x402 — open-source протокол микроплатежей для AI-агентов — на уровне своих edge-сетей. Тех самых, через которые проходит огромная доля мирового трафика.
Если коротко: интернет учится брать деньги с машин.
Протокол x402 воскрешает HTTP-код 402 «Payment Required», зарезервированный ещё в спецификации HTTP/1.1 от 1997 года. Механика: AI-агент запрашивает платный ресурс, edge-сервер (Cloudflare или AWS CloudFront) отвечает «402, с вас 0.001 USDC», агент платит в стейблкоинах через Coinbase Facilitator, прикрепляет доказательство и получает данные. Без редиректов. Без API-ключей. Без регистрации. Платёж сам стал учётными данными.
Почему это не очередной Flattr. Все предыдущие micropayment-схемы провалились, потому что требовали от человека лишнее действие. AI-агенту всё равно — он совершит тысячу транзакций без единого клика. Покупатель сменился — экономика меняется.
Цифры. За первый год: 169 млн транзакций, 590K покупателей, 100K продавцов. Фонд x402 — под Linux Foundation с апреля 2026. В совете: AWS, Cloudflare, Anthropic, Circle, 20+ участников. AWS — GA без наценки. Cloudflare — waitlist, но их статистика: 52% crawler-трафика в июне 2026 — сбор данных для AI (год назад 22%).
Где подвох. Два открытых вопроса: как отличить бота от человека на уровне edge (чтобы paywall не ударил по обычным пользователям), и что делать с налогами при анонимных стейблкоин-платежах. Для европейских компаний это реальный бухгалтерский барьер.
И главный скепсис: а что если агенты просто перестанут ходить на платные сайты? Бесплатного контента пока хватает. Но если AWS и Cloudflare сделают оплату стандартом на уровне инфраструктуры — у агентов не останется выбора для доступа к программной документации, научным базам, финансовым API. Тому, без чего им не обойтись.
Интернет, где машины платят машинам за информацию в реальном времени. Две крупнейшие инфраструктурные компании только что поставили на это свои фишки.
Схема стандартная: мне нужно было выкатить наружу очередной сервис из своего хоумлаба (дашборд Grafana, внутреннее API, музыкальный сервер - неважно). Я открывал админку Cloudflare, создавал туннель, прописывал DNS-запись, настраивал политики Zero Trust Access, копировал ID туннеля, генерировал конфиг, устанавливал службу на сервер и со спокойной душой закрывал вкладку. Первые несколько раз меня это вообще не парило.
Примерно на пятом сервисе до меня дошло: я больше не настраиваю инфраструктуру. Я исполняю ритуал.
И я задался вопросом нафига я вообще это делаю руками? У Cloudflare есть отличный API. Всё, по чему я кликаю мышкой в красивом (не очень) интерфейсе, в конечном итоге превращается в обычный HTTP-запрос. Так почему весь этот адский воркфлоу нельзя упаковать в одну единственную команду?
Так родился проект cfzt.
Изначально это не планировалось как какой-то коммерческий продукт или крутой опенсорс. Мне просто хотелось перестать страдать фигнёй по выходным.
Идеальная цель выглядела так:
zt up grafana 3000
И всё. За этими четырьмя словами утилита сама создаёт туннель Cloudflare, настраивает правила ингресса, регистрирует DNS, вешает авторизацию через Zero Trust Access, ставит демона в систему и запоминает состояние, чтобы потом всё это можно было чисто удалить одной командой.
Команда выглядит крошечной. Объём работы под капотом - огромный. И, как выяснилось позже, это была самая простая часть.
Процесс от init до поднятия туннеля
Дело было не в Cloudflare
Самое забавное, что я вообще не пытался заменить Cloudflare. Скорее наоборот.
Cloudflare Tunnel - это одна из тех штук, которая при первом знакомстве кажется чистой магией. Твой сервер может сидеть за NAT, за жёстким провайдерским CGNAT, вообще где угодно, но он всё равно будет доступен из интернета без единого открытого входящего порта на роутере.
Добавь сверху zero trust - и бах! Каждый твой внутренний сервис по дефолту защищён нормальной авторизацией, привязан к identity-провайдеру и еще сертификат насыпают на сдачу.
База просто монументальная. Проблема была во всём том, что её окружало. Каждый новый чих требовал повторения одного и того же алгоритма:
- Создать туннель.
- Прописать DNS-запись.
- Настроить Ingress rule.
- Создать приложение в Access.
- Привязать к нему политику доступа.
- Сгенерировать конфигурационный файл.
- Установить системную службу на сервере.
- Запустить её.
Ни один шаг сам по себе не сложен. Они просто… нудные. И хуже всего была даже не потеря времени, а ментальная нагрузка. А я точно создал DNS? А access включить не забыл? Какой туннель держит этот домен? А если я его удалю, ничего не сломается?
В хоумлабе и так хватает хаоса, чтобы ещё держать в голове весь этот чек-лист деплоя.
И я подумал: а что, если бы публикация сервиса в сеть была такой же простой, как запуск Docker-контейнера?
Docker внутри устроен невероятно сложно, но его интерфейс скрывает весь этот ужас от пользователя. Ты пишешь команду - Docker разбирается со всем остальным. Это и стало главной фишкой cfzt: не плодить миллион галочек и настроек, а сделать стандартный путь банальным и скучным.
За одной строчкой скрывается куча работы с API, но пользователю до этого не должно быть никакого дела. Сложность должна оставаться внутри инструмента. Мне кажется, создателям современного софта для инфраструктуры стоит почаще выбирать именно такой подход.
Фича, которую никто не заметит
Ирония в том, что больше всего я горжусь функцией, которую пользователи, надеюсь, никогда не увидят. Это роллбэк или откат по-нашему.
Инструменты автоматизации обожают ломаться на середине пути. То API Cloudflare выдаст rate limit, то сессия протухнет, то один запрос пройдёт, а следующий за ним упадет с ошибкой. В итоге у вас остаётся полурабочее нечто:
- Туннель вроде создался, но до него не достучаться.
- DNS-запись смотрит в никуда.
- В панели access висит приложение для сервиса, которого уже нет.
Убирать это дерьмо руками несложно, но выбешивает знатно.
Я хотел, чтобы cfzt работал иначе. Любой деплой - это транзакция. Если все шаги прошли успешно - сервис онлайн. Если споткнулись хоть на одном этапе - утилита автоматически сносит всё, что успела насоздавать до этого момента. Никаких осиротевших ресурсов и никакого гадания в веб-морде Cloudflare, что там надо подчистить.
Звучит очевидно? Да. На практике же пришлось детально логировать каждый чих к API, записывать ID каждого созданного ресурса и писать под них логику удаления. Зато теперь я могу запускать утилиту и не бояться, что она оставит после себя кучу мусора. Лучший откат - это тот, о котором тебе не пришлось думать.
Но откат шага в своей проге это не то же, что откат на стороне cloudflare...
А потом я почитал логи...
В какой-то момент проект дошёл до стадии, когда пилить фичи надоело и я начал просто пользоваться утилитой каждый день. Вот тут-то и полезли самые интересные артефакты.
Как-то вечером после очередного деплоя я заглянул в логи и заметил странное: cloudflared (официальный демон Cloudflare) внезапно переключился с протокола QUIC на старый добрый HTTP/2.
Вообще, это штатное поведение. QUIC работает поверх UDP, и если с UDP что-то идёт не так (роутер ребутнулся, Wi-Fi мигнул, провайдер решил подрезать пакеты) - туннель автоматически падает в фоллбэк на HTTP/2 поверх TCP, чтобы связь вообще не оборвалась.
Странно было другое. Он никогда не переключался обратно.
Подождите... Это что, навсегда?
Сначала я подумал, что чего-то не понимаю в работе туннелей. Ну, наверное, он проверяет сеть раз в пару минут? Или есть скрытая настройка?
Я сидел и караулил логи. Прошёл час, два. Туннель работал идеально, трафик шёл, но намертво сидел на TCP.
Я перерыл официальную документацию - тишина. Пошёл штурмовать гитхаб. И бинго! Нашёл старый тикет, где чувак жаловался ровно на то же самое. Логика у демона Cloudflare простая: если туннель один раз упал в HTTP/2, он больше никогда не попытается вернуться на быстрый QUIC. Только если полностью перезапустить сам процесс ручками. И баг этот висел в issues в официальном репозитории уже очень давно.
Выбора было два: либо смириться и ждать, пока пацаны из Cloudflare это починят (спойлер: можно не дождаться), либо костылить обходной путь. Я выбрал второй вариант.
Пишем вочдог вместо патча
Лезть в исходники самого cloudflared, форкать его и пересобирать сетевой стек ради одного бага - так себе идея. Поэтому я посмотрел на задачу проще: какие данные у меня реально есть на руках?
Ответ оказался банальным: при переходе с QUIC на HTTP/2 демон пишет в stderr конкретную строчку. Всё, это и есть наш API! Зачем анализировать пакеты или пинговать порты, если можно просто читать логи процесса?
План получился такой: cfzt запускает туннель и начинает грепать его логи на лету. Как только ловим строчку о фоллбэке, запускается таймер. Мы не рубим процесс сразу - вдруг сеть ещё штормит. Выжидаем паузу, и если туннель всё ещё на HTTP/2 - тихонько дергаем службу.
При перезапуске cloudflared снова пытается инициировать модный QUIC. Если UDP всё ещё лежит - ок, он опять упадёт в HTTP/2. Наш вочдог это увидит и увеличит таймер ожидания: 10 минут, 20, 40... В итоге шаг баг-оффа упирается в 1 час. Мы не боремся с сетью, мы просто даём туннелю шанс очухаться, когда шторм пройдёт.
Выглядит этот «инженерный фикс» до смешного просто. Вот кусок кода на Go, который закрыл эту проблему раз и навсегда:
// Строка, которую выплёвывает Cloudflare, когда сдается и уходит на TCP
const FallbackSignal = "Failed to connect to the edge over QUIC, falling back to HTTP2"
log.Warn("Обнаружен откат с QUIC на HTTP/2. Запускаем вочдог.")
// Ждём, пока сеть стабилизируется
time.Sleep(backoff)
// Триггерим мягкий перезапуск процесса
restartTrigger <- true
// Экспоненциальный шаг ожидания (максимум до 1 часа)
backoff = min(backoff * 2, 1 * time.Hour)
}
}
}
Решение не претендует на учебники по Computer Science, но оно работает. Теперь, если посреди ночи роутер решит обновиться, утилита подхватит этот момент, переждет грозу и молча вернет туннель на быстрый протокол.
Чему меня научил этот проект
Я начинал писать эту утилиту просто потому, что мне надоело кликать по кнопкам в браузере. В итоге я несколько недель залипал в жизненные циклы процессов, парсинг логов и логику сетевых фоллбэков.
И в этом вся прелесть создания своих инструментов для автоматизации (переизобретенных велосипедов, если хотите). Ты берёшь мелкую бытовую проблему, думаешь: да ладно, сейчас набросаю тонкую CLI обертку за пару часов в субботу. Но как только ты пытаешься сделать интерфейс по-настоящему простым для пользователя, тебе приходится впитать в свой код всю ту сложность, которую разработчики платформы оставили за бортом.
Ты пишешь транзакционный откат, чтобы не разгребать полуживое состояние руками. Ты пишешь вочдог, чтобы не думать о моргающем интернете.
Интерфейс остается крошечным. Инструмент делает всю грязную работу. Ритуал наконец-то разрушен.
Теперь, когда мне нужно поднять новый сервис, я не открываю пять вкладок в браузере. Я просто пишу в консоли:
$ zt up grafana 3000
✔ Creating Cloudflare Tunnel... Done.
✔ Provisioning DNS records... Done.
✔ Setting up Zero Trust Access policies... Done.
✔ Launching background service with QUIC... Done.
Service is live at https: //grafana. yourdomain. com
И спокойно иду пить кофе. Потому что инфраструктура, черт возьми, должна быть скучной.
Ссылка на проект
Если вам тоже надоел этот бесконечный марафон по дашбордам Cloudflare ради домашнего сервера или стейджинга - проект полностью открыт, пользуйтесь.
Буду рад фидбеку. Ломайте, тестируйте, закидывайте ишью или предлагайте фичи. Если утилита сэкономит вам пару минут на выходных - значит, все это было не зря. Только не просите меня добавлять в CLI новые кнопки. Я написал его как раз для того, чтобы их больше никогда не видеть.
Всем привет. Я соло-разработчик, последние годы делаю инструменты для вебмастеров и арбитража. Дотащил до открытой беты главный проект и ищу тех, кто согласится его как следует поломать.
Абстрактное видение движения трафика в вакууме
Коротко, что это. 301 это рабочее пространство для управления доменами, редиректами и трафиком: портфель доменов в одной панели, edge-редиректы с фильтрами по гео и устройству, TDS для A/B и гео-сплитов, атрибуция конверсий через постбэки. Кто работал с Keitaro и подобными трекерами, это та же поляна.
Теперь в чём, собственно, ставка. Классический трекер ты ставишь на свой VPS и дальше живёшь с ним сам: сервер, обновления, нагрузка, упавшая железка в самый неподходящий момент. 301 целиком крутится на Cloudflare, причём на твоём собственном аккаунте. Свой сервер держать не нужно, домены и данные остаются у тебя, я в середине не сижу и твой трафик не вижу. Правило, которое ты запушил, живёт на edge через пару секунд, а не на одной коробке в одном дата-центре.
Что уже работает нормально: домены с массовыми действиями и проверкой через VirusTotal по твоему ключу, edge-редиректы, сплит-тесты на Workers без отдельного VPS. Этим можно пользоваться прямо сейчас.
Где честно сыро: атрибуция через постбэки. Механика есть, но именно её я гонял меньше всего, и под живым потоком от разных сеток она наверняка покажет углы. Поэтому в первую очередь зову тех, у кого есть реальные S2S-постбэки от партнёрок и кому не лень прогнать их через меня и сказать, где отвалилось. Вот тут ваша помощь ценнее всего.
По деньгам без подвоха: сейчас в бете бесплатно всё, а базовый набор функций останется бесплатным навсегда. Не та история, где заманивают халявой, а через месяц режут доступ.
Если откликается, потыкайте 301.ru и напишите мне лично в телегу, я на связи и собираю фидбэк руками: https://t.me/investbloger. Особенно жду ругань по постбэкам. Остальное вроде стоит крепко, но вам со стороны виднее.
Сразу предвосхищу главный вопрос тех, кто льёт на ру: а будет ли это работать, Cloudflare же с прошлого года подрезан RKN. Будет, и вот почему. Редирект это не лендинг, а несколько сотен байт заголовков. После подрезки от канала остаются жалкие килобайты, но редиректу их хватает с запасом: он проскакивает в эти первые байты раньше, чем троттлинг успевает включиться. Тяжёлую страницу через душимый CF ты бы и правда не вытащил, а вот сам переброс трафика, ради которого TDS и существует, уходит быстрее, чем почти где-либо.