Pull to refresh

Comments 41

Корень проблемы в том, что за исходящий трафик платит владелец сервера. Достаточно минимальных изменений и проблема уйдёт - либо Вам будет плевать кто и сколько скачивает страницы, а то и чем больше - тем лучше будет, либо боты сами будут следить за тем, чтобы не активничать.

Можно придумать много схем реализации, каждая со своими интересантами, но они внедряются, ибо

  • интересанты уже толкаются локтями, хотя пока это и не бросается в глаза

  • можно спровоцировать переход на прямой обмен сообщениями без централизации, типа как в старину наука развивалась потому, что учёные писали друг-другу письма

Сама по себе борьба с ботами ничем обоснована быть не может, ибо боты действуют на благо Франции от имени и по поручению людей.

Физика: "иду я нафиг".

"Сама по себе борьба против участия мужчин в соревнованиях для женщин ничем обоснована быть не может, ибо мужчины действуют на благо Франции от имени и по поручению женщин."

По теме статьи: сеть на доверии всегда будет служить злоумышленникам (цена свободы).

Как говорится, а что автор оргинального поста ожидал?

Он построил 1,5 миллиона публичных страниц с профилями, причём сам набрал данные скрейпингом чужих открытых источников, имеет около 500 человеческих посетителей в день — и внезапно обнаружил, что его огромную машиночитаемую базу данных читают машины. Ну надо же! Для такого сайта как раз человек и должен быть совершенно диким посетителем. Это не «99% современного веба — боты», это «я построил роскошную кормушку для краулеров».

Вот чего не отнять в смысле выводов: ИИ-краулеры действительно изменили экономику скрейпинга. То есть старое соглашение «Google качает пачкой мои страницы, зато приводит покупателей» у генеративного поиска действительно ломается.

Но тут, похоже, нужно не запретами бороться, а выстраиванием кеша. Думаю, собери он страницы статикой (да, 1.5 млн файлов статикой - это не суперобъём), было бы проще. Автор полгода совершенствует систему распознавания незваных гостей, вместо того чтобы сначала сделать так, чтобы незваный гость мог взять бесплатную брошюру у двери, но не включая ему свет, кондиционер и SQL-сервер.

P.S. Cloudflare Workers сейчас включает 10 млн запросов в месяц, сверх этого запросы стоят $0,30 за миллион, а исходящий трафик вообще не тарифицируется. Поэтому фраза «боты заставляют меня платить $90» сама по себе ничего не объясняет. Деньги съедают вычисления, D1/KV и архитектура запросов — и автор чуть дальше сам признаётся в неэффективных запросах и настройках кэша. Т.е. человек сначала сделал так, чтобы просмотр публичной страницы был платной серверной операцией, а потом долго и героически защищает её файрволлом от просмотра.

У меня приблизительно такие же проблемы, но у меня свой bare metal сервер и на счет это не вляет.

Есть один момент, о котором автор не упомянул, и как мне кажется выстрелил себе в ногу блокировкой ДЦ - это любые email, содержащие ссылки на сайт. Поясню:
когда отправляется любое письмо со ссылками/картинками на ваш сайт (не важно каким способом отправляется и откуда, например отправка может быть не из вашего сайта, а например из mailchimp) - почтовые сервера получателя (например gmail, yahoo и т.д.) не только сканируют письма на вирусы, но и проверяют буквально каждую ссылку в нем. И делают это ОЧЕНЬ агресивно. Они отправляют HEAD запрос на каждую ссылку в каждом письме. Например разослав красивое html письмо с картинками и новостями сайта на 5000 ардесов вы получите мощный ДДОС из около 50к HEAD запросов за несколько минут (при условии что в письме 10 ссылока на сайт). И повторный всплеск трафика, но уже GET запросов, когда ваши письма начнут массово открывать (и почтовый клиент будет подтяшивать контент с вашего сайта). А открывают письма в основном в веб-клиенте.

А теперь угадайте где размещаются большество почтовых серверов и почтовых веб клиентов? Правильно - в ТОПовых ДЦ США, которые автор заблокировал.

Я наступил на эти грабли, когда тоже заблокировал крупные ДЦ и ефективность рассылок упала у меня на 90+%. Оказалось если ссылки в письме битые (HEAD не вернет 200) - почти все почтовики либо отправляют письмо в спам, либо вообще deffered. И даже если письмо доставилось, и его откроют - то оно будет не читаемым HTML мусором.

Отдельная головная боль - локальные почтовые клиенты (Outlook, The Bat, Thunderbird и другие) - они скачивают письмо, и при открытии тянут контент с сайта из IP пользователя, но используя свои юзерагенты. И проверку JS - они не умеют. Блокировать их тоже нельзя так как по сути это реальные посетители. Но вот боты активно используют эти юзерагенты.

И вишенка на торте - неторые почтовики используьт свои прокси для работы с письмами, вроде GoogleImageProxy, которые тоже имеют сотни тысяч ИП от ДЦ США.
Вишенка номер два - проверка вообще может выполнятся из другого континента. Я часто вижу ситуацию после рассылки, когда основная масса запросов от почтовиков по ссылкам в письме прилетает из Британии или Нидерландов, при том что сайт и сервер в США и 99% посетителей из США.

Это по сути касается любой рекламы/продвижения. Группа в FB, телеграм канал, и прочие - все будет тянуть контент из ДЦ США, а вы их заблокировали.

Интересно как дальше интернет экономика будет развиваться на фоне того что хостить сайт на стороннем сервисе будет супер дорого из-за ботов.

Все будет нормально. Просто ваш подход - не верный. Автор борется с ветряными мельницами.
Представьте, что ваш сайт вруг стал попульрный и все эти запросы от ботов - реальные пользователи. Ведь по сути это не взлом/ SQLinj, а обычные запросы контента. Что бы вы делали в этом случа? Правильный ответ - кеш!

Мой сайт имеет реальных 5к посетителей в сутки, но обслуживает 3 миллиона запросов в сутки без увеличения стоимости хостинга и без увеличения нагрузки на сервере. Как? Да благодаря бесплатному тарифу CloudFlare, в котором есть edge cache, и 10 правил для его управления. Итого к серверу доходит около 100к запросов в сутки, что вполне нормально для 5к посетителей. Остальные 2,9М запросов и около 500 Gb трафика - отдаются из кеша CF (все цифры приведены без статики, js, css, картинок и т.д., только запросы к страницам). Все бесплатно.


Там есть некоторые мелкие сложности, в основном связанные с URL param. Но это требует минимальных изменений на сайте, вроде заменить /?page=1 на /page/1. Но общая стратегия строится на принципе "кешировать все, кроме...".

Например у вас интернет магазин на вордпресс + вукоммерс, создаем правило
Bypass cache для
(http.cookie contains "wordpress_logged_in_") or (http.cookie contains "woocommerce_items_in_cart") or (http.cookie contains "woocommerce_cart_hash") or (http.cookie contains "wp_woocommerce_session_") or (http.cookie contains "wordpress_sec_") or (http.cookie contains "wp-postpass_")
и вуаля, ничего не кешируется для залогиненых пользователей, пользователей с товарами в корзине, с сессией вукомераса и т.д. Не кешируются админка, личные кабинеты и вся прочая "private" зона. Вся прелесь в том, что 99,99% ботов не умеют в кукис от слова совсем.
не кешировать апи и фиды? изи
http.request.uri.path contains “/wp-json” or http.request.uri.path contains “/wp-api”

И такими исключениями вы выкидываете из кеша, все что не должно кешироватся. 10 правил хватает с головой (учтите, в одно правило можно запихнуть множество условий, ограничение - 4000 символов на правило, это очень много). Остальное - попадет в кеш CF и будет отдаватся с него, даже не обращаясь к вашему серверу. Картинки, страницы, js, css, шрифты - абсолютно все из кеша. Пусть хоть миллиард запросов от ботов, вы их не заметите, они не дойдут к серверу.


Что то поменяли на какой то странице сайта и нужно очистить кеш на CF? Изи, у них мощнейшее АПИ для этого. Большенство CMS с коробки предоставляют функционал хуков. Если на вордпрессе изменили страницу/товар - это автоматически дергает хук. Вам осталось написать 20 строк кода, чтобы отправить запрос на АПИ очистки кеша для страницы которую выдал хук и все будет работать автоматически (говорят для этого есть даже официальный плагин от CF, но по слухам он полное говно и прохо поддерживается. Я не пробовал). Хоть каждые 5 минут обновляйте сайт, в кеше всегда будет свежая информация без ваших усилий.

Проходит несколько лет и интернет становится де-факто частной собственностью CloudFlare. Где они и решают, что можно хостить, что нельзя, и кому.

Я устал заниматься оптимизациями своего старого wordpress'а - борбьа с ботами, спам-коментами, CDN... Психанул, конвертировал в статичные HTML и захостил на Cloudflare pages. Дышать легче стало.

Боты хотят данные, судя по всему в общем защититься от ботов вы не можете (я знаю что статья перевод и автора тут нет, но с этим сталкиваются многие так или иначе), т.е. данные они и так получат, но стоить этот процесс будет для владельца сервера заметные суммы.

Решение - отдать данные добровольно, в удобном виде, без ограничений (автор и так их точно так же забрал у других, так что 'по совести' это верный шаг). А свой сервис строить не на самих данных, а как инструмент по работе с ними, т.е. предоставить возможность пользователю приходить на сайт не за данными а за решением.

p.s. большая часть сайтов, которые я частично скрайпил для себя, предоставляли максимально неадекватные возможности, т.е. данные есть но без полной их загрузки себе, сделать с ними почти ничего нельзя.

Есть методы отдать ботам не те данные, за которыми они пришли. Это следующий "эшелон обороны". Не всегда сервис предоставляющий возможность работы с данными, является чем-то эксклюзивным. Очень часто именно данные являются наибольшей ценностью. Особенно если данные не скрапятся из открытых источников, а создаются руками человека.

Сначала получите shadowban от всех поисковиков, потом изгоните часть клиентов, приняв их за ботов, а потом только начнёте задумываться, а была ли польза.

Ну естественно "не лоб" же принимается решение о том, кто к нам пришел. Белый бот, черный бот или реальный посетитель. К тому же, поверьте, если вы ошиблись и приняли белого поискового бота как черного (хотя это весьма сложно, реверc lookup работает очень четко), то что вместо условного числа "100" в данных будет "125" никоим образом не смутит поисковую систему. Это просто проверено уже 10-ю годами разработки и эксплуатации такой системы.

Защитится от всех ботов нет, а от 99% запросто банальной проверкой жава-скрипт. Да если бы у нас клаудфлар работал, то было бы сильно проще отсекать большую часть подозрительного трафика

А зачем отдавать данные ботам? добровольно.

Строить сервис не на данных, а не сервисе? так это другой бизнес, другие инвестиции

Например, вот у Вас Хабр (любой статейник), какой сервис Вы построите?

Как писали в других местах, проблема в том, что бот тупой. Если на сайте есть фильтры, например, по тегам, бот скачивает все возможные комбинации значений фильтров заново. Миллионы раз подряд скачивает одни и те же данные, переставляя галки на фильтре.

У меня тоже по сайту в основном боты лазают. Но я не особо страдаю от этого, правда. У меня почему-то посещаемость гораздо меньше. Да и после появления нейросетей ещё упала сильно.

у меня ботов не наблюдается, равно как и траффика от нейросетей. я бы даже приветствовал его увеличение, значит инфа на сайте интересная, разве нет?

Если инфа на сайте не интересна даже ботам, то она не интересная.

у чела то хоть Cloudflare есть, банально поставил проверку на всех подозрительных

а не так как у нас в России: тоже борюсь с ботами, включал на 12 часов на днях. Да только я сам не могу попасть на сайт без КВН. (или может с Cloudflare в России все хорошо и это я настроил неправильно? (заходить пытался через мобильный Мегафон)

По поводу "страданий", рекламная сеть Яндекса уже 2 раза выкинула мой сайт "за недействительные показы и клики". Вот и думайте

Заблочил в панели ISP менеджер всю Азию. Штаты, Канаду, Европу пока нет (но руки чешутся)

Ситуация со скрейпингом ухудшается, потому он становится дешевле, поэтому я считаю, что единственное решение проблемы — экономическое. Cloudflare создаёт систему pay‑per‑crawl, при которой краулеры платят за запрос в edge‑сети

Да, решение проблемы должно быть экономическим. Но лежит оно IMHO глубже, в изменении самой экономической модели Интернета.

Сейчас основа экономической модели интернета - это “экономика внимания”: экономический смысл существования сайтов, если смотреть в корень и без иллюзий - это использование возможности манипуляции пользователями, чтобы им что-нибудь втюхать, либо самим владельцем сайта - если сайт служит для продажи какого-нибудь товара/услуги, - либо теми, кто покупает у владельца эту возможность (то есть, рекламу) на сайте. Для такой экономической модели боты вредны, потому что им ничего не втюхаешь, и отдачи их посещения не приносят. Сами же владельцы ботов в такой экономической модели являются “безбилетниками”: они получают данные, но не платят за них. И это совершенно обоснованно ощущается как несправидливость.

Только вот платить посредникам, типа того же Cloudflare за то, чтобы избавиться от ботов-безбилетников - это IMHO ничуть не более справедливо. А справедливым было бы платить непосредственно за то, что получаешь. Благо Интернет служит отличной технологической платформой для микротранзакций (а транзакции здесь будут именно микро-, потому что себестоимость отдачи данных сама по себе невелика). Вот посредник, который сможет организовать именно такие микротранзакции (к примеру, списывая на них деньги со счетов пользователей, куда пользователи кладут некие суммы заранее), пусть даже не забесплатно - это IMHO куда более справедливое решение. И, главное - куда лучше охватываемое контуром рыночного регулирования через спрос/предложение: потребитель платит именно за то, что он реально получает и может оценить насколько ему это нужно, продавец-сайт может устанавливать цену на свои данные в соответствии со спросом. И всё - честно, не то, чтобы совсем без обмана (не обманешь – не продашь, как известно), но вполне прозрачно для участников рынка.

Короче, я даже не джва, а джвадцать джва года хочу такой интернет. Но, как известно, хотеть не вредно, но не более того.

PS Мне могут сказать, что такое уже есть - всякие подписные сервисы типа Patreon, Sponsr, Бусти. А я в ответ скажу, что транзакции там - отнюдь не микро-, доступ к материалам продается слишком большими кусками. И если за подписку на любимого автора соответствующую сумму не жалко отдать заранее, птому что его читать точно будешь, и часто,то поглядеть разок на что-то заинтересовашее в моменте за недорого на таких сервисах не получается. В этом и есть разница.

Ну введёте вы микро-транзакции за скачивание странички, и что будет дальше? Дальше будет взрывной рост сайтов-помоек со сгенерированными текстами, дабы стащить с кошелька ботов деньги отдавая некий хлам.

Дальше будет взрывной рост сайтов-помоек со сгенерированными текстами, дабы стащить с кошелька ботов деньги отдавая некий хлам.

В любом случае это уже чисто проблема ботов и их владельцев. И я не вижу, что мешает владельцам ботов настроить их так, чтобы этот хлам не подбирать и помойки не кормить.
Или же - договориться с владельцем сайта, чтобы он пускал забесплатно полезные ему боты, к примеру - от поисковиковых систем - забесплатно (естественно - с аутентификацией, чтобы посторонние под их видом не лазили) .

То есть вы хотите одну странную систему заменить ещё более странной системой, добавив туда деньги, но не решив нормально проблемы :-/

В любом случае это уже чисто проблема ботов и их владельцев.

В принципе, не совсем. Вас, как человека, тоже можно погонять через кучу промежуточных страниц (не забывая снять маленькую, но копеечку на каждой) прежде чем дать(если вообще дадут) то, что ищете. Ну вот как сейчас через промежуточные страницы с рекламой гоняют.

Но это, в общем, решается репутацией: "солидные источники информации(например <имя>) так не делают, иди туда"

Вас, как человека, тоже можно погонять через кучу промежуточных страниц (не забывая снять маленькую, но копеечку на каждой) прежде чем дать(если вообще дадут) то, что ищете.

Некоторые сайты уже так делают. И на каждой такой говностраничке показывают горы рекламы с одним абзацем и ссылкой на следующую страницу.

90 долларов в месяц.
База данных - 1,5 млн записей.
VPS стоила бы 6-8 долларов в месяц с исходящим лимитом в 1 ТБ (5 ГБ от ботов * 30 дней = 150 гиг, 15% от того, что обычно включено в тариф), а поместив сайт за DNS от CloudFlare можно сэкономить примерно 2/3 от трафика или больше.

Сейчас есть много VPS по цене 30-40 баксов в год с лимитом 3-15Тб в месяц.

Сразу на год брать - не резон, отлетают пачками.

Нормально. Сейчас все прокидывают трафик через вторую машинку, уже одноразовую. А основная побольше постоянная. И куплена на год.

Прокидывать можно всяким, оно все парой понятных текстовых конфигов настраивается.

Что значит отлетают???

Куда отлетают, зачем?

Очень большая и сложная статья, даже слишком. Не уж то это стандарт для Хабр? Без негатива

Неужто на Хабр ходят читать твиты по 250 символов?

Если возраст в профиле реальный, то это должны быть 30-секундные видео с фоновой музыкой. И чтобы свайпать было можно.

Камон, там 2002, в 24 года я монографию опубликовал.

Это обычная статья для хабра. До победы копроблогов со статьями про кремы для опы, тут много такого было.

Недавно заблокировал настоящего клиента с Chrome 101 и китайской локалью. Браузер настойчиво слал не percent-encoding кириллицу в GET-запросе, а как-то по-другому закодированный юникод, из-за этого фреймворк сайта падал на этапе маршрутизации. Надеюсь, пользователь нашёл другой браузер и посмотрел на сайте то, что хотел.

А ещё заметил, что многие боты не умеют в сжатие, или только в gzip (но не в br). А так разве что Яндекс раньше любил каждый месяц выкачивать по 200-300 ГБ pdf-файлов, хотя они не менялись.

Яндекс раньше любил каждый месяц выкачивать по 200-300 ГБ pdf-файлов, хотя они не менялись.

А там точно всё правильно настроено? Дата изменения в sitemap же должна быть. Зачем ему ещё раз скачивать...

В sitemap файлов не было, дата модификации файлов возвращалась в заголовках nginx. Позже в этих же заголовках было запрещено роботам качать эти файлы (X-Robots-Tag: noindex) и через robots.txt конечно же.

Здесь особенно важно не смешивать два слоя метрик: edge-запросы/байты и продуктовые события. После нового правила WAF меняется доля отфильтрованного трафика, и без раздельных рядов это легко принять за падение живой аудитории. Я бы сохранял для каждого запроса хотя бы класс (бот/прошёл challenge/подтверждённая сессия), а воронку строил отдельно по событиям приложения. Тогда алерты на рост bot bytes и на просадку verified sessions не спорят друг с другом.

Я давно уже перестал собирать, хранить и обрабатывать статистику посещаемости своих сайтов (раньше каждый месяц это делал, даже программу специальную почти дописал), но вижу только одно: падение числа посетителей. Раньше я считал, что причина одна: сайты на русском, но вне РФ. Соответственно, доступ сильно затруднен.
Но сейчас я думаю, что есть и вторая причина: люди не приходят из поиска как раньше, потому что любой поисковик через ИИ сразу выдает "оптимальный" ответ, не направляя искателя на оригинальный сайт. И искатель, и поисковик довольны, а интересы владельца сайта и автора контента им побоку.

Бороться с ботами бесполезно, это не увеличит число посетителей, Корень проблемы в алгоритмах поисковиков. Но как бороться с ними? Я не знаю...

Поисковики с сайтами ещё до этого бороться начали со всякими турбо-страницами и у гугла какой-то аналог тоже был. Но сейчас да, с нейросетями вообще всё плохо с реальными посетителями стало. Ничего уже не поделать тут.

Sign up to leave a comment.

Articles