The OpenNET Project / Index page

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



"Раздел полезных советов: Борьба с web-ботами через запрет HTTP/1.1"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Борьба с web-ботами через запрет HTTP/1.1"  +/
Сообщение от auto_tips (??), 09-Мрт-26, 19:01 
Как один из вариантов борьбы с AI-скрапперами, создающими огромную паразитную нагрузку на сервер, [[https://sheep.horse/2026/3/blocking_http1.1_-_some_results.html предложено]] ограничить доступ к сайту по протоколу 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;
            }
         }
      }
   }

URL: https://sheep.horse/2026/3/blocking_http1.1_-_some_results.html
Обсуждается: http://www.opennet.dev/tips/info/3295.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 09-Мрт-26, 19:01   +1 +/
Так себе идея, не учитывающая много исключений.
Мы сделали чуть сложнее - проанализировали набор заголовков, используемых провайдеров, подсети и собрали набор маркеров. При поступлении запроса он (с помощью кода на lua в nginx) анализируется, при совпадении любого из маркеров ему начисляются очки. Например если Firefox шлет Chrome-специфичный заголовок, используется китайская локаль (90% скрейперов нападающих на наш хостинг имеют китайскую локаль), поведение не соответствует версии браузера, меченая ASN и т.д. Набрал больше первого порога - страницу отдаем, но с минимальной скоростью (в планах челлендж, но это потом). Набрал выше второго порога - давай до свидания! (с)
В среднем 27-35% трафика летит в 444, еще 8-10 отдается с задержкой. И с момента внедрения нагрузка на ноды бэкендов ни разу не превысила штатную.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2

2. Сообщение от Гость (??), 09-Мрт-26, 20:58   +1 +/
С ботами из сети Tencent как? оттуда валится столько запросов и входящего трафика, что лучше из банить до http сервера.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #4

3. Сообщение от S_Paulemail (??), 09-Мрт-26, 21:55   +/
Вложенные "if"'ы наверное можно map'ами сделать.

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

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

Ответить | Правка | Наверх | Cообщить модератору

4. Сообщение от Аноним (1), 10-Мрт-26, 06:52   +1 +/
С ними проще - можно банить прям подсетями. Брать из BGP списки подсетей принадлежащие AS Tencent, Alibaba, Huawei cloud и пр. и закидывать пачками в ipset/netfilter. Простенький скрипт в кроне раз в неделю
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

5. Сообщение от Аноним (5), 11-Мрт-26, 08:42   +1 +/
Все нормальные скрейперы давно мимикрируют под браузер не только заголовком user-agent, но и протоколами. Продвинутые же скрейперы используют настоящий браузер. "Памяти всегда докупить можно (тм)". Сейчас у смузихлёбов на гитхабе тенденция - вообще всё делать через Microsoft Playwright (который через WebDriver работает с живой страницей), и не заморачиваться с реверсингом и кастомными скрейперами. Тьфу.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

6. Сообщение от Аноним (5), 11-Мрт-26, 08:44   +/
Вообще всё - это когда этот playwright вообще ни к селу ни к месту. Но у Американских Высокооплачиваемых Скрейперописателей рабочее время слишком дорого для этого, дешевле оперативки докупить, оперативка ведь один раз покупается, а скрейпер писать - каждый раз надо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #8

7. Сообщение от Аноним (7), 12-Мрт-26, 16:06   +/
скоро боты поразмыслят и заявят о дискриминации.
Ответить | Правка | Наверх | Cообщить модератору

8. Сообщение от Аноним (8), 12-Мрт-26, 17:50   +/
Меня как-то с работы попёрли за то, что я долго писал скрейпер с обвязкой на C и JS и полной автоматизацией. Джун, который за меня переписал другой мой скрейпер на вебдрайвере, который до этого был написан через реверсинг приложения, по шапке не получил.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

9. Сообщение от Gremlin_Rage (ok), 12-Мрт-26, 22:49   +/
Гуглбот фигачит данные в Гемини, а в РФ он не подсказывает
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10

10. Сообщение от Аноним (10), 13-Мрт-26, 10:01   +/
AI Overviews в поиске и google.com/ai в РФ работают.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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