Боты5 мин чтения·11 августа 2026 г.

Scrapy: в отличие от urllib, этот фреймворк по умолчанию уважает robots.txt — но это легко отключить

Scrapy — не единый оператор, а профессиональный open-source фреймворк, на котором построены тысячи независимых проектов. Разбираем ключевое отличие от Python-urllib: в стандартном шаблоне нового проекта ROBOTSTXT_OBEY включён по умолчанию, но любой разработчик может отключить его одной строкой, поэтому дефолтный User-Agent сам по себе не гарантирует добросовестности.

TVTrafficVeil TeamЭксперты по защите веб-трафика
Уникальная иллюстрация бота scrapy: нежелательный прочие краулеры и сервисы

В отличие от Python-urllib из этой серии, Scrapy — не встроенная в язык программирования настройка по умолчанию, а полноценный, профессиональный open-source фреймворк для промышленного веб-скрапинга. Именно поэтому его репутация двойственная: с одной стороны, это уважаемый, активно поддерживаемый инструмент, на котором построены тысячи легитимных проектов сбора данных; с другой — токен Scrapy в логах говорит лишь о том, что кто-то использует профессиональный инструмент, а не о том, зачем именно и с каким намерением.

Важный нюанс, который отличает Scrapy от urllib: настройки по умолчанию иные

Здесь стоит исправить возможное заблуждение по аналогии с предыдущим разбором Python-urllib. У Scrapy, по официальной документации проекта, ситуация с robots.txt устроена иначе: в стандартном шаблоне нового проекта настройка ROBOTSTXT_OBEY по умолчанию установлена в True — то есть фреймворк из коробки уважает правила robots.txt, если разработчик явно не отключил эту защиту. Это не значит, что весь трафик Scrapy гарантированно добросовестен: любой автор скрипта может одной строкой поставить ROBOTSTXT_OBEY = False, и множество онлайн-туториалов по обходу защиты от скрапинга прямо инструктируют именно так и поступить. Но по умолчанию, в отличие от многих совсем простых скриптовых инструментов, эта защита хотя бы предусмотрена архитектурой фреймворка.

Параметры

Параметр Значение
Токен / паттерн scrapy
Природа Открытый Python-фреймворк для промышленного веб-скрапинга и краулинга, а не имя одного оператора
User-Agent по умолчанию Формат вида Scrapy/X.Y.Z (+https://scrapy.org), если автор проекта не задал собственный через настройку USER_AGENT
Поведение по умолчанию для robots.txt ROBOTSTXT_OBEY = True в стандартном шаблоне нового проекта — соблюдение включено «из коробки», но легко отключается разработчиком
Оператор ❌ Множество независимых, никак не связанных друг с другом проектов и разработчиков
Типичные дополнительные признаки Настройки вроде DOWNLOAD_DELAY и AutoThrottle встроены в фреймворк для контроля вежливости обхода, но включение этих настроек — тоже выбор конкретного разработчика, а не гарантия
Список IP-адресов ❌ Неприменимо — фреймворк используется на серверах и в облачных средах тысяч независимых проектов

Почему это не отменяет осторожности

Даже с учётом более благоприятной настройки по умолчанию, чем у urllib, дефолтная строка Scrapy/X.Y.Z (+https://scrapy.org) в логах — сама по себе слабый сигнал добросовестности: она означает лишь то, что автор скрипта не потрудился заменить UA на что-то узнаваемое и специфичное для своего проекта, что обычно рекомендуется профильными руководствами именно для того, чтобы администраторы сайтов могли отличить конкретный легитимный сервис от анонимного скрапинга. Часть проектов на Scrapy — легитимные агрегаторы, мониторинги цен по договорённости, академические исследования; часть — прямой парсинг контента без какого-либо согласования с владельцем сайта. По одному токену эти сценарии неразличимы.

Не уверены, кто ходит по вашему сайту?

Подключите домен и посмотрите живую ленту: кто пришёл, с какой сети, что запрашивал и по какому правилу был пропущен или заблокирован.

Посмотреть свой трафик

Как найти в логах

grep -i "scrapy" /var/log/nginx/access.log

Поскольку это не единый оператор, а общий след множества независимых проектов, привычная схема верификации через IP/ASN здесь может подтвердить происхождение отдельного запроса, но не скажет ничего о характере всего класса трафика в целом — у каждого экземпляра свой хостинг и своя инфраструктура.

Как настроить доступ

Для публичного сайта без установленной договорённости с конкретным скрапером разумная политика по умолчанию — рассматривать нераспознанный дефолтный UA Scrapy как сигнал автоматизации без установленной политики:

if ($http_user_agent ~* "scrapy") {
    return 403;
}

Если внутри организации есть собственные легитимные проекты на Scrapy (мониторинг, внутренняя аналитика, партнёрские интеграции), правильное решение — не оставлять общий доступ открытым для всех, кто представляется этим фреймворком, а задать собственному проекту узнаваемый User-Agent и внести конкретные IP-адреса в белый список:

# settings.py
USER_AGENT = 'CompanyName-InternalBot/1.0 (+https://example.com/bot-info)'

Правило в robots.txt для легитимных Scrapy-проектов, которые оставили ROBOTSTXT_OBEY = True по умолчанию, действительно сработает — в отличие от многих совсем простых скриптов; но полагаться на это как на единственную линию защиты не стоит, поскольку отключить эту настройкуـ так же просто, как её включить.

Частые вопросы

Scrapy — это один конкретный бот или сервис?
Нет, это открытый Python-фреймворк, на котором построены тысячи независимых, никак не связанных друг с другом проектов сбора данных.
Чем Scrapy отличается от Python-urllib в плане robots.txt?
В стандартном шаблоне нового проекта Scrapy настройка ROBOTSTXT_OBEY по умолчанию включена (True), тогда как urllib вообще не читает и не интерпретирует robots.txt.
Значит ли это, что весь трафик Scrapy добросовестен?
Нет, любой разработчик может одной строкой отключить соблюдение robots.txt — множество онлайн-туториалов по обходу защиты именно так и советуют поступать.
Как должен выглядеть легитимный проект на Scrapy в отличие от анонимного скрапинга?
С собственным узнаваемым User-Agent, заданным через настройку USER_AGENT, а не с дефолтной строкой Scrapy/X.Y.Z.
Что делать, если внутри компании есть свои легитимные проекты на Scrapy?
Задать им собственный узнаваемый User-Agent и внести конкретные IP-адреса в белый список, а не оставлять общий доступ открытым.
Стоит ли полагаться только на robots.txt для контроля этого трафика?
Нет, поскольку отключить соблюдение так же просто, как включить — основной контроль лучше держать на уровне сервера.
#scrapy#python-фреймворк#ROBOTSTXT_OBEY#автоматизация#бот-энциклопедия#robots.txt#User-Agent#TrafficVeil
TV
TrafficVeil Team

Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак. Разборы ботов пишем по логам подключённых доменов и открытым данным операторов.

Похожие статьи

Ещё материалы из раздела «Боты» — те же вопросы, другие агенты.

Проверьте защиту своего сайта

Подключение занимает несколько минут. Начните с анализа трафика и включайте блокировки после проверки логов.

Тарифа на трафик нет. Платите за людей, а не за тех, кого отбили: боты, атаки и всё, что срезали фильтры, в счёт не идут. Тариф — число доменов и глубина настроек.

TrafficVeil