ERR_BLOCKED_BY_CLIENT значит, что запрос остановил сам браузер, а не сайт и не сеть. Почти всегда это делает расширение: блокировщик рекламы, защита от слежки или модуль антивируса. Если заблокирована вся страница, Chrome показывает экран «Сайт заблокирован»; если только счётчик или рекламный файл — страница открывается, а ошибка видна в консоли разработчика. Мы проверили на стенде Chromium 149 с uBlock Origin Lite и своим тестовым расширением, что именно блокируется, что подменяется заглушкой и как найти виновника. Ниже — способы устранения неполадок отдельно для пользователя и для владельца сайта.
Как определить причину за минуту
| Где ошибка | Вероятно, причина | Что сделать |
|---|---|---|
| Экран «Сайт … заблокирован» | расширение запретило всю страницу | открыть в режиме инкогнито, найти расширение |
| Консоль, рядом адрес счётчика или рекламы | блокировщик рекламы | для посетителя — ничего; для владельца — учесть потерю данных |
| Консоль, рядом адрес вашего API или скрипта | правило в списке фильтров совпало с адресом | переименовать путь или сообщить в список фильтров |
| Адрес начинается с chrome-extension:// | расширения больше нет в браузере | удалить ссылку на него или переустановить |
Что означает ошибка
В исходниках Chromium, в файле net_error_list.h, у ошибки код −20 и описание «The client chose to block the request» — клиент решил заблокировать запрос. Клиент здесь — сам браузер вместе с расширениями. Сервер сайта о таком запросе не узнаёт: запрос до него не доходит.
Откуда она берётся, видно в коде:
- расширения с правилами блокировки — запрос, который расширение отменило, завершается этой ошибкой (web_request_proxying_url_loader_factory.cc);
- адреса chrome-extension:// — если расширения нет или его файл закрыт для сайтов, браузер отвечает этой же ошибкой (extension_protocols.cc).
Соседний код −22 ERR_BLOCKED_BY_ADMINISTRATOR — это уже не расширение, а политика организации: адрес закрыт списком блокировки, который настроил администратор. Если вы видите его, отключать расширения бесполезно.
Полный текст в Chromium 149 на русском, когда заблокирована вся страница:
Сайт 127.0.0.1 заблокирован Эта страница была заблокирована расширением. Отключите расширения. ERR_BLOCKED_BY_CLIENT
Под текстом — кнопка «Перезагрузить». Если заблокирован только файл на странице, экрана нет, а в консоли появляется строка «Failed to load resource: net::ERR_BLOCKED_BY_CLIENT».
Стенд: что блокирует uBlock Origin Lite
Мы собрали тестовую страницу с девятнадцатью файлами: своими скриптами и картинками с «рекламными» именами и настоящими адресами счётчиков и рекламных сетей. Открыли её в Chromium 149 дважды: без расширений и с uBlock Origin Lite 2026.1018.2229 — версией блокировщика для Manifest V3. Настройки не трогали.
Без расширений загрузились все девятнадцать файлов. С блокировщиком:
| Файл | Результат |
|---|---|
| mc.yandex.ru/metrika/tag.js — скрипт Метрики | ERR_BLOCKED_BY_CLIENT |
| mc.yandex.ru/watch/… — данные визита | ERR_BLOCKED_BY_CLIENT |
| an.yandex.ru/system/context.js — РСЯ | ERR_BLOCKED_BY_CLIENT |
| top-fwz1.mail.ru/js/code.js — счётчик Mail.ru | ERR_BLOCKED_BY_CLIENT |
| /prebid.js на своём сайте | ERR_BLOCKED_BY_CLIENT |
| googletagmanager.com/gtag/js — Google Analytics | подменён заглушкой |
| pagead2.googlesyndication.com/…/adsbygoogle.js — AdSense | подменён заглушкой |
| /ads.js, /advertising.js, /analytics.js, /counter.js | загрузились |
| /js/ads/banner.js, /static/adv/x.js | загрузились |
| /banner.png, /img/reklama.png, /img/ad-300x250.png | загрузились |
| yastatic.net/jquery/… | загрузился |
Что видно из стенда:
- Списки фильтров включаются по языку. Кроме шести списков по умолчанию, блокировщик сам включил RU AdList (rus-0): браузер был на русском. Поэтому у русскоязычного посетителя набор блокировок шире.
- Счётчики Яндекса и Mail.ru блокируются полностью. Скрипт не загружается, данные визита не уходят. Подробно о последствиях для статистики — в разборе почему не работает Яндекс Метрика.
- Google блокировщик не режет, а подменяет. Запросы к gtag и adsbygoogle получили ответ 307 и перенаправление на файл внутри расширения. В консоли ошибки ERR_BLOCKED_BY_CLIENT при этом нет, а настоящий скрипт не выполнился: функция gtag на странице не появилась. Владелец сайта увидит «пустую» аналитику без единой ошибки.
- Слово «ads» в имени файла само по себе не повод. Файлы ads.js, advertising.js и картинки с «banner» и «ad-300x250» загрузились. Списки ищут конкретные шаблоны адресов, а не любые «рекламные» слова. Prebid.js — библиотека рекламных аукционов — заблокирован даже на своём сайте.
Стенд: как ведут себя разные запросы
Вторым шагом мы поставили своё тестовое расширение с четырьмя правилами declarativeNetRequest и проверили, что видит страница и что получает сервер.
| Что заблокировано | Что видно | Сервер получил запрос |
|---|---|---|
| Вся страница | экран «Сайт заблокирован» | нет |
| fetch к /collect | TypeError: Failed to fetch | нет |
| XMLHttpRequest к /collect | ошибка, статус 0 | нет |
| navigator.sendBeacon | вернул true | нет |
| iframe | вместо фрейма страница ошибки | нет |
| Отправка формы POST | экран «Сайт заблокирован» | нет |
Главное здесь — sendBeacon. Метод вернул true, как при успешной отправке, хотя запрос не ушёл. Скрипт, который проверяет результат sendBeacon, ошибки не заметит. А для fetch и XMLHttpRequest код страницы видит только общую сетевую ошибку: отличить блокировку от обрыва связи по ней нельзя.
Расширение старого формата — Manifest V2 с блокирующим webRequest — Chromium 149 не загрузил вовсе: на странице расширений его не было, а файл, который оно должно было блокировать, загрузился. Блокировщики в Chrome теперь работают на Manifest V3 и правилах declarativeNetRequest.
Почему возникает ERR_BLOCKED_BY_CLIENT
- Блокировщик рекламы. uBlock Origin, AdBlock, Adblock Plus, AdGuard и похожие расширения. Это самая частая причина: по спискам фильтров они режут рекламу, счётчики и скрипты отслеживания.
- Защита от слежки и приватности. Расширения, которые блокируют счётчики, кнопки соцсетей и виджеты.
- Расширение антивируса. Некоторые антивирусы ставят своё расширение в браузер и блокируют через него рекламу и «опасные» адреса.
- Ложное срабатывание списка. Правило написано против рекламы, а совпало с адресом вашего API или скрипта — как /prebid.js на стенде.
- Удалённое расширение. Страница или закладка ведёт на chrome-extension://, а расширения уже нет. На нашем стенде к ERR_FILE_NOT_FOUND Chromium отвечает, если файла нет, а если нет самого расширения — ERR_BLOCKED_BY_CLIENT.
Встроенные блокировщики браузеров — например, в Яндекс Браузере и Opera — тоже могут останавливать запросы. Мы их не проверяли.
Как исправить ошибку посетителю
- Откройте страницу в режиме инкогнито — Ctrl+Shift+N. Расширения там по умолчанию выключены. Если в инкогнито всё работает, виновато расширение.
- Нажмите значок блокировщика справа от адресной строки. Обычно там есть кнопка «Отключить на этом сайте» или переключатель. После нажатия обновите страницу. Если значка не видно, перейдите в меню расширений — кнопка с кусочком пазла.
- Найдите расширение перебором. Если расширений много, удобнее использовать этот способ. Откройте chrome://extensions, выключите все расширения, затем включайте по одному и обновляйте страницу. То, после которого ошибка вернулась, и блокирует.
- Добавьте сайт в белый список, если сайт нужный и вы ему доверяете. В uBlock Origin Lite это делается переключателем уровня фильтрации для сайта, в Adblock Plus и AdGuard — пунктом «Не блокировать на этом сайте».
- Проверьте антивирус. Если расширения отключены, а ошибка осталась, откройте настройки антивируса и найдите модуль защиты в браузере или блокировки рекламы.
- Проверьте политики. Откройте chrome://policy: если там есть ExtensionInstallForcelist, расширение поставила организация или программа на компьютере, и выключить его в браузере не получится.
Что не поможет: очистка кэша и cookies, смена DNS, перезагрузка роутера, сброс сетевых настроек и проверка подключения к интернету. Поскольку запрос останавливается внутри браузера и в сеть не уходит, достаточно найти и выключить то, что его блокирует. Если с включённым блокировщиком сайт не работает совсем — например, не отправляется форма, — можете написать владельцу сайта: это его недоработка, а не ваша, и он может её исправить.
Если ошибка во всех браузерах
В большинстве случаев проблему решает отключение одного расширения. Если же ошибка появляется и в другом браузере, куда вы ничего не ставили, посмотрите на программы, установленные на вашем компьютере. Попробуйте по порядку:
- Антивирус и средства родительского контроля. Проверьте, включена ли у них блокировка рекламы или защита в браузере. Часто такое приложение добавляет собственные расширения сразу во все браузеры — посмотрите на chrome://extensions, нет ли среди них расширения, которое вы не ставили.
- Временное отключение защиты. Отключите защиту на пару минут и обновите страницу. Если сайт открылся, добавьте его в исключения, а защиту включите обратно: держать антивирус выключенным не стоит.
- Блокировка в сети. ERR_BLOCKED_BY_CLIENT выдаёт исключительно сам браузер. Если рекламу режет DNS-фильтр, VPN с возможностями блокировки или фильтр на роутере, запрос уходит в сеть, и ошибка будет другой — с кодом сетевого подключения.
Как найти блокировку в DevTools
Владельцу сайта и разработчику удобнее смотреть в инструментах разработчика: клавиша F12, вкладка Network («Сеть»).
- Обновите страницу с открытой вкладкой.
- В столбце Status заблокированные запросы помечены как «(blocked:other)» в английском интерфейсе. В протоколе DevTools у них причина blockedReason = other — так браузер помечает блокировки, которые не связаны с CSP, CORS и смешанным содержимым.
- Во вкладке Console те же запросы видны строкой «Failed to load resource: net::ERR_BLOCKED_BY_CLIENT».
- Перепроверьте в окне инкогнито без расширений. Если там запрос проходит, дело в расширении, а не в сайте.
Если вместо (blocked:other) стоит (blocked:csp) или (blocked:mixed-content), это не блокировщик, а ограничения самого сайта: политика CSP или загрузка http-файла на https-странице. А пометка (blocked:devtools) значит, что запрос запретили сами инструменты разработчика: на стенде такой запрет через протокол DevTools дал причину inspector и ни одной строки ERR_BLOCKED_BY_CLIENT в консоли. Проверьте панель Network request blocking — её открывают через Ctrl+Shift+P и команду «Show Network request blocking».
Что делать владельцу сайта
Блокировщик стоит у посетителя, и запретить ему блокировать нельзя. Основная задача — сделать так, чтобы сайт работал и без заблокированных ресурсов, а потери данных были понятны.
- Учтите, что Метрика видит не всех. Посетители с блокировщиком не попадают в отчёты, их цели и конверсии тоже. Объём трафика сверяйте с Вебмастером и Search Console — там данные поисковиков, а не счётчика.
- Не держите важное в адресах, похожих на рекламу. Если ваш API или скрипт попал под правило списка, переименуйте путь. Проверить, что именно совпало, можно в самом блокировщике: в uBlock Origin Lite есть страница сработавших правил: с её помощью можно увидеть, какое правило совпало с адресом.
- Не завязывайте работу сайта на сторонний скрипт. Если форма или кнопка не работают без счётчика, посетитель с блокировщиком не сможет оставить заявку. Отправку формы делайте своим кодом, а цель в счётчике — дополнением.
- Не проверяйте отправку по sendBeacon. Метод вернёт true и при заблокированном запросе.
- Для рекламы AdSense в справке Google есть порядок проверки: отправляются ли запросы объявлений и нет ли ошибок на стороне клиента. ERR_BLOCKED_BY_CLIENT на adsbygoogle.js там объясняется так: браузер заблокировал скачивание файла, обычно из-за расширения. Учтите, что uBlock Origin Lite на нашем стенде этот файл не блокировал, а подменял — и ошибки в консоли не было вовсе.
Проверьте, что поисковик видит на странице без блокировщиков. Движок разбирает одну страницу: метатеги, заголовки, canonical, robots.txt, карту сайта. Без регистрации.
Влияет ли ошибка на SEO
На позиции — нет. Робот Яндекса и Googlebot ходят без расширений, и блокировщик у посетителя на индексацию не влияет. Ошибка влияет на данные, по которым вы принимаете решения: часть визитов не попадает в счётчик, и отчёты по поисковому трафику занижены. Насколько, отчёты показать не могут — заблокированный визит в них просто не появляется.
Чем ERR_BLOCKED_BY_CLIENT отличается от похожих ошибок
| Ошибка | Кто заблокировал |
|---|---|
| ERR_BLOCKED_BY_CLIENT | браузер или расширение |
| ERR_BLOCKED_BY_ADMINISTRATOR | политика организации |
| ERR_BLOCKED_BY_RESPONSE | сайт — заголовками ответа, например X-Frame-Options |
| ERR_BLOCKED_BY_CSP | политика безопасности сайта |
| ERR_NETWORK_ACCESS_DENIED | антивирус или брандмауэр не пустил браузер в сеть |
| ERR_FAILED | общий сбой загрузки без точной причины |
Границы замера
- Chromium 149 на Linux, сборка из Playwright. Chrome на Windows, Яндекс Браузер и Firefox мы не проверяли; в Firefox этого кода нет, у него свои названия ошибок.
- Из блокировщиков проверили только uBlock Origin Lite в настройках по умолчанию. Другие расширения и другие наборы списков блокируют иначе.
- Списки фильтров обновляются; результат по конкретным адресам верен на 20.10.2026.
- Расширения ставили из папки, а не из Chrome Web Store.
Источники
- Chromium: net/base/net_error_list.h — github.com/chromium
- Chromium: extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc, extensions/browser/extension_protocols.cc — github.com/chromium
- Chrome DevTools: front_end/panels/network/NetworkDataGridNode.ts — github.com/ChromeDevTools
- uBlock Origin Lite 2026.1018.2229 — github.com/uBlockOrigin/uBOL-home
- Справка AdSense «Как проверить, отправляются ли запросы объявлений» — support.google.com
Похожие ошибки
- ERR_FILE_NOT_FOUND — не найден файл на диске или в папке расширения.
- ERR_FAILED — общая ошибка загрузки, в том числе при сбое расширения.
- ERR_NETWORK_ACCESS_DENIED — браузеру закрыт доступ в сеть.
Коротко
- ERR_BLOCKED_BY_CLIENT — запрос остановил сам браузер, почти всегда расширение-блокировщик.
- Вся страница заблокирована — экран «Сайт заблокирован»; отдельный файл — строка в консоли, страница работает.
- uBlock Origin Lite по умолчанию режет Метрику, РСЯ и счётчик Mail.ru, а скрипты Google подменяет заглушкой без ошибки в консоли.
- Проверка — режим инкогнито, затем перебор расширений на chrome://extensions.
- На позиции не влияет, но занижает данные счётчиков.
