The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Борьба с web-ботами через запрет HTTP/1.1
Как один из вариантов борьбы с AI-скрапперами, создающими огромную паразитную
нагрузку на сервер, предложено ограничить доступ к сайту по протоколу HTTP/2
и полностью отключить поддержку HTTP/1.0 и HTTP/1.1. Логика подобного решения в
том, что все современные браузеры поддерживают HTTP/2, а боты почти всегда
обращаются к сайтам по HTTP/1.1 и пока не пытаются использовать HTTP/2 в случае
невозможности отправить запрос на HTTP/1.1.

При этом важно учесть, что RSS-ридеры и полезные поисковые боты, такие как
Google Bot, также ограничены использованием HTTP/1.1 и для них необходимо
сделать исключение.

Пример правил для http-сервера Caddy, возвращающих клиенту ошибку при обращении по HTTP/1:

   @http-too-old {
       not protocol http/2+
       not path /rss.xml /atom.xml # allow rss
       # Белый список для поисковых ботов и старых браузеров
      not header_regexp User-Agent (?i)(Google-Site-Verification|googlebot|bingbot|duckduckbot|mastodon|^Lynx)
   }

   example.com {
       ....
       handle @http-too-old {
          respond 418
       }
   }


Пример для nginx:

   http {
      ...
      map $server_protocol $is_http2 {
          default 0;
          "HTTP/2.0" 1;
          "HTTP/3.0" 1;
      }

      map $request_uri $is_rss {
          default 0;
          ~^/(rss\.xml|atom\.xml)$ 1;
      }

      map $http_user_agent $is_bot {
          default 0;
          ~*Google-Site-Verification 1;
          ~*googlebot 1;
          ~*bingbot 1;
          ~*duckduckbot 1;
          ~*mastodon 1;
          ~*^Lynx 1;
      }
   }
   server {
      ...
      if ($is_http2 = 0) {
         if ($is_rss = 0) {
            if ($is_bot = 0) {
                return 418;
            }
         }
      }
   }
 
09.03.2026 , Источник: https://sheep.horse/2026/3/blocking...
Ключи: ai, bot, caddy, nginx, filter / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Ограничение доступа и ресурсов, безопасность

Обсуждение [ RSS ]
  • 1.1, Аноним (1), 19:01, 09/03/2026 [ответить]  
  • +1 +/
    Так себе идея, не учитывающая много исключений.
    Мы сделали чуть сложнее - проанализировали набор заголовков, используемых провайдеров, подсети и собрали набор маркеров. При поступлении запроса он (с помощью кода на lua в nginx) анализируется, при совпадении любого из маркеров ему начисляются очки. Например если Firefox шлет Chrome-специфичный заголовок, используется китайская локаль (90% скрейперов нападающих на наш хостинг имеют китайскую локаль), поведение не соответствует версии браузера, меченая ASN и т.д. Набрал больше первого порога - страницу отдаем, но с минимальной скоростью (в планах челлендж, но это потом). Набрал выше второго порога - давай до свидания! (с)
    В среднем 27-35% трафика летит в 444, еще 8-10 отдается с задержкой. И с момента внедрения нагрузка на ноды бэкендов ни разу не превысила штатную.
     
     
  • 2.2, Гость (??), 20:58, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С ботами из сети Tencent как? оттуда валится столько запросов и входящего трафика, что лучше из банить до http сервера.
     
     
  • 3.4, Аноним (1), 06:52, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С ними проще - можно банить прям подсетями. Брать из BGP списки подсетей принадлежащие AS Tencent, Alibaba, Huawei cloud и пр. и закидывать пачками в ipset/netfilter. Простенький скрипт в кроне раз в неделю
     

  • 1.3, S_Paul (??), 21:55, 09/03/2026 [ответить]  
  • +/
    Вложенные "if"'ы наверное можно map'ами сделать.

    map $is_http2:$is_rss:$is_bot $isdrop {
      default 0
      "0:0:0" 1;
    }

    server {
    ...
      if ($isdrop = 1) { return 418; }
    ...
    }

     
  • 1.5, Аноним (5), 08:42, 11/03/2026 [ответить]  
  • +1 +/
    Все нормальные скрейперы давно мимикрируют под браузер не только заголовком user-agent, но и протоколами. Продвинутые же скрейперы используют настоящий браузер. "Памяти всегда докупить можно (тм)". Сейчас у смузихлёбов на гитхабе тенденция - вообще всё делать через Microsoft Playwright (который через WebDriver работает с живой страницей), и не заморачиваться с реверсингом и кастомными скрейперами. Тьфу.
     
     
  • 2.6, Аноним (5), 08:44, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще всё - это когда этот playwright вообще ни к селу ни к месту. Но у Американских Высокооплачиваемых Скрейперописателей рабочее время слишком дорого для этого, дешевле оперативки докупить, оперативка ведь один раз покупается, а скрейпер писать - каждый раз надо.
     
     
  • 3.8, Аноним (8), 17:50, 12/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Меня как-то с работы попёрли за то, что я долго писал скрейпер с обвязкой на C и JS и полной автоматизацией. Джун, который за меня переписал другой мой скрейпер на вебдрайвере, который до этого был написан через реверсинг приложения, по шапке не получил.

    Если скрейпер пишет корпорация, она не заслужила оптимизации. Она твой результат работы и так перепродаёт за 10x твоей стоимости.
    Если скрейпер пишешь ты или ты пишешь сервис для общего блага, только тогда и стоит потратить ценные годы своей жизни на реверсинг.

     

  • 1.7, Аноним (7), 16:06, 12/03/2026 [ответить]  
  • +/
    скоро боты поразмыслят и заявят о дискриминации.
     
  • 1.9, Gremlin_Rage (ok), 22:49, 12/03/2026 [ответить]  
  • +/
    Гуглбот фигачит данные в Гемини, а в РФ он не подсказывает
     
     
  • 2.10, Аноним (10), 10:01, 13/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    AI Overviews в поиске и google.com/ai в РФ работают.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру