Назад к блогу

Robots.txt и прокси: как парсить конкурентов легально и не получить бан сайта

Полное руководство по этичному парсингу через прокси: как соблюдать robots.txt, избегать блокировок и собирать данные конкурентов без юридических рисков.

📅5 марта 2026 г.

Парсинг данных конкурентов — обычная практика для маркетологов, селлеров маркетплейсов и агентств. Вы мониторите цены на Wildberries, собираете объявления с Авито, анализируете ассортимент конкурентов. Но большинство сайтов блокируют массовые запросы, а игнорирование файла robots.txt может привести к юридическим проблемам. В этой статье разберём, как использовать прокси для парсинга этично: соблюдать правила сайтов, избегать блокировок и собирать данные без рисков для бизнеса.

Что такое robots.txt и зачем он нужен сайтам

Файл robots.txt — это текстовый документ в корне сайта, который сообщает поисковым роботам и парсерам, какие разделы можно сканировать, а какие запрещены. Например, интернет-магазин может запретить индексацию корзины или личного кабинета, чтобы эти страницы не попадали в Google.

Типичный файл robots.txt выглядит так:

User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /api/
Crawl-delay: 10

User-agent: Googlebot
Allow: /

Sitemap: https://example.com/sitemap.xml

Разбор директив:

  • User-agent: * — правила для всех ботов (звёздочка означает "любой бот")
  • Disallow: /admin/ — запрещено сканировать раздел /admin/
  • Crawl-delay: 10 — задержка 10 секунд между запросами
  • User-agent: Googlebot — специальные правила для Google (разрешено всё)

Зачем сайты используют robots.txt:

  1. Защита от перегрузки сервера — массовый парсинг создаёт нагрузку на сервер, замедляя работу для реальных пользователей
  2. Скрытие технических страниц — корзины, формы оплаты, API-эндпоинты не должны индексироваться
  3. Защита коммерческих данных — маркетплейсы не хотят, чтобы конкуренты легко выгружали весь каталог товаров
  4. Экономия трафика — каждый запрос бота стоит денег владельцу сайта

Важно: robots.txt — это рекомендация, а не технический барьер. Файл не блокирует доступ физически, но игнорирование правил может привести к блокировке вашего IP или судебным искам (особенно в США и Европе).

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

Законодательство России

В России нет специального закона о парсинге, но применяются общие нормы:

  • Авторское право (ГК РФ, статья 1259) — нельзя копировать уникальные тексты, фотографии, описания товаров без разрешения правообладателя. Парсинг цен и характеристик обычно безопасен, так как это фактические данные.
  • Персональные данные (152-ФЗ) — запрещено собирать личные данные пользователей (ФИО, телефоны, email) без согласия. Это касается парсинга профилей соцсетей или баз контактов.
  • Недобросовестная конкуренция (статья 14.33 КоАП РФ) — если парсинг используется для копирования бизнес-модели или введения в заблуждение клиентов, можно получить штраф до 500 000 рублей.

Законодательство США и Европы

В США и ЕС законы строже:

  • CFAA (Computer Fraud and Abuse Act, США) — несанкционированный доступ к компьютерным системам считается преступлением. Нарушение robots.txt может трактоваться как "несанкционированный доступ". Известный кейс: LinkedIn vs hiQ Labs (2022) — суд постановил, что парсинг публичных данных легален, но игнорирование технических барьеров (например, капчи) — нет.
  • GDPR (General Data Protection Regulation, ЕС) — запрещён сбор персональных данных граждан ЕС без явного согласия. Штрафы до 20 млн евро или 4% от годового оборота компании.
  • Terms of Service (Пользовательские соглашения) — многие сайты прямо запрещают парсинг в своих правилах. Нарушение может привести к судебному иску за breach of contract (нарушение договора).

Практический совет: Перед парсингом проверьте три документа: robots.txt, Terms of Service и Privacy Policy целевого сайта. Если парсинг явно запрещён — ищите альтернативные источники данных (публичные API, партнёрские программы, готовые датасеты).

Что безопасно парсить

Тип данных Риск Комментарий
Цены товаров Низкий Фактические данные, не защищены авторским правом
Характеристики товаров Низкий Технические данные безопасны
Уникальные описания Высокий Защищены авторским правом
Фотографии товаров Высокий Нужно разрешение правообладателя
Контакты пользователей Критический Нарушение 152-ФЗ и GDPR
Публичная статистика Низкий Открытые данные безопасны

Этичный парсинг: как собирать данные без нарушений

Этичный парсинг — это баланс между бизнес-задачами и уважением к владельцам сайтов. Вы можете собирать нужные данные, не создавая проблем целевому ресурсу и не нарушая законов.

Основные принципы этичного парсинга

  1. Соблюдайте robots.txt — если раздел запрещён для парсинга, не пытайтесь его обойти. Ищите альтернативные источники данных.
  2. Ограничивайте скорость запросов — не отправляйте 1000 запросов в секунду. Делайте задержки 2-10 секунд между запросами, чтобы не перегружать сервер.
  3. Используйте User-Agent вашего парсера — не маскируйтесь под обычного пользователя. Укажите честный User-Agent, например: "MyCompanyParser/1.0 (contact@mycompany.com)". Это позволяет администраторам сайта связаться с вами, если возникнут проблемы.
  4. Парсьте только публичные данные — не пытайтесь получить доступ к закрытым разделам, API или базам данных.
  5. Не перепродавайте скопированные данные — используйте собранную информацию для внутренних нужд (анализ конкурентов, мониторинг цен), а не для создания конкурирующего сервиса.
  6. Кэшируйте данные — не запрашивайте одну и ту же страницу несколько раз. Сохраняйте результаты локально и обновляйте их по расписанию (раз в день, раз в неделю).

Когда НЕ стоит парсить

Есть ситуации, когда парсинг создаёт больше проблем, чем пользы:

  • Сайт предоставляет API — многие маркетплейсы (Wildberries, Ozon, Яндекс.Маркет) имеют официальные API для партнёров. Используйте их вместо парсинга — это быстрее, легальнее и надёжнее.
  • Данные защищены капчей или авторизацией — обход защиты может быть расценен как взлом системы.
  • Сайт явно запрещает парсинг в Terms of Service — риск судебного иска слишком высок.
  • Вы собираете персональные данные — это нарушение GDPR и 152-ФЗ с огромными штрафами.

Как правильно читать и соблюдать robots.txt

Файл robots.txt находится в корне домена: https://example.com/robots.txt. Перед началом парсинга всегда проверяйте этот файл.

Основные директивы robots.txt

Директива Значение Пример
User-agent Для какого бота действуют правила User-agent: * (все боты)
Disallow Запрещённые для парсинга разделы Disallow: /admin/
Allow Разрешённые разделы (исключение из Disallow) Allow: /public/
Crawl-delay Минимальная задержка между запросами (в секундах) Crawl-delay: 10
Sitemap Ссылка на карту сайта (список всех страниц) Sitemap: /sitemap.xml

Примеры robots.txt и как их интерпретировать

Пример 1: Полный запрет парсинга

User-agent: *
Disallow: /

Это означает: "Всем ботам запрещено сканировать весь сайт". Парсинг такого сайта — нарушение правил владельца. Ищите альтернативные источники данных.

Пример 2: Выборочные ограничения

User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /cart/
Allow: /products/
Crawl-delay: 5

Это означает: "Можно парсить раздел /products/ (товары), но запрещены /admin/, /api/ и /cart/. Делайте задержку 5 секунд между запросами". Это нормальные условия — можно парсить товары, соблюдая лимиты.

Пример 3: Правила для конкретных ботов

User-agent: Googlebot
Allow: /

User-agent: *
Disallow: /
Crawl-delay: 10

Это означает: "Google может сканировать весь сайт, но все остальные боты — нет". Если вы не Google, парсинг запрещён.

Как проверить robots.txt перед парсингом

Большинство языков программирования имеют библиотеки для автоматической проверки robots.txt. Пример на Python:

from urllib.robotparser import RobotFileParser

rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()

# Проверяем, можно ли парсить страницу
url = "https://example.com/products/item123"
user_agent = "MyParser/1.0"

if rp.can_fetch(user_agent, url):
    print("Парсинг разрешён")
else:
    print("Парсинг запрещён robots.txt")

Это автоматически проверит правила и сообщит, можно ли парсить конкретный URL.

Rate Limiting и задержки между запросами

Rate Limiting (ограничение скорости запросов) — это защита сайтов от перегрузки. Если вы отправляете слишком много запросов за короткое время, сервер может заблокировать ваш IP или показывать капчу.

Почему важно соблюдать задержки

  • Избежание блокировки IP — сайты отслеживают частоту запросов с одного IP. Если вы отправляете 100 запросов в минуту, вас заблокируют как бота.
  • Снижение нагрузки на сервер — массовый парсинг может "положить" сайт, особенно если это небольшой ресурс на дешёвом хостинге.
  • Соблюдение Crawl-delay из robots.txt — если сайт указал задержку 10 секунд, игнорирование этого правила неэтично.
  • Более естественное поведение — обычные пользователи не открывают 10 страниц в секунду. Задержки делают ваш парсер похожим на реального человека.

Рекомендуемые задержки для разных задач

Тип парсинга Задержка между запросами Комментарий
Маленький сайт (до 1000 страниц) 5-10 секунд Низкая мощность сервера
Средний сайт (интернет-магазин) 2-5 секунд Оптимальный баланс
Крупный маркетплейс (Wildberries, Ozon) 1-3 секунды Мощная инфраструктура, но сильная защита
API-эндпоинты По лимитам API (обычно 10-100 запросов/мин) Смотрите документацию API
Соцсети (Instagram, VK) 10-30 секунд Очень строгие лимиты, высокий риск бана

Как реализовать задержки в коде

Пример на Python с использованием библиотеки time:

import time
import requests

urls = [
    "https://example.com/product1",
    "https://example.com/product2",
    "https://example.com/product3"
]

for url in urls:
    response = requests.get(url)
    print(f"Спарсили: {url}")
    
    # Задержка 3 секунды перед следующим запросом
    time.sleep(3)

Для более сложных сценариев используйте случайные задержки (random delay), чтобы поведение было ещё более естественным:

import time
import random

for url in urls:
    response = requests.get(url)
    
    # Случайная задержка от 2 до 5 секунд
    delay = random.uniform(2, 5)
    time.sleep(delay)

Ротация прокси для этичного парсинга

Даже если вы соблюдаете robots.txt и делаете задержки, парсинг большого объёма данных с одного IP может вызвать подозрения. Ротация прокси помогает распределить запросы между разными IP-адресами, имитируя поведение множества реальных пользователей.

Зачем нужна ротация прокси

  • Обход Rate Limiting — если лимит 100 запросов/час с одного IP, то 10 прокси дадут вам 1000 запросов/час.
  • Географическое распределение — для парсинга региональных данных (цены на Wildberries в Москве и Владивостоке) нужны прокси из разных городов.
  • Снижение подозрений — запросы с разных IP выглядят как трафик от реальных пользователей.
  • Резервирование — если один прокси заблокирован, парсер автоматически переключается на другой.

Какие прокси использовать для этичного парсинга

Тип прокси Плюсы Минусы Когда использовать
Резидентные Реальные IP домашних пользователей, низкий риск бана Дороже других типов Парсинг соцсетей, маркетплейсов с сильной защитой
Мобильные IP мобильных операторов, максимальное доверие Самые дорогие, меньше доступных IP Парсинг Instagram, TikTok, мобильных приложений
Дата-центры Дешёвые, высокая скорость Легко детектируются, часто в чёрных списках Парсинг простых сайтов, тестирование

Рекомендация для этичного парсинга: Используйте резидентные прокси с автоматической ротацией. Они обеспечивают баланс между стоимостью и надёжностью, а их IP выглядят как обычные пользователи.

Стратегии ротации прокси

  1. Ротация на каждый запрос — каждый запрос идёт с нового IP. Подходит для парсинга сайтов с жёсткими лимитами (соцсети, маркетплейсы).
  2. Ротация по времени (каждые 5-10 минут) — один IP используется для нескольких запросов, затем меняется. Более естественное поведение.
  3. Sticky sessions (липкие сессии) — один IP используется для всей сессии пользователя (например, авторизация + парсинг личного кабинета). Обязательно для сайтов с авторизацией.
  4. Географическая ротация — для каждого региона используется прокси из этого региона. Пример: парсинг цен на Wildberries в Москве — прокси из Москвы.

Пример ротации прокси в Python

import requests
import random
import time

# Список прокси (замените на реальные)
proxies_list = [
    {"http": "http://user:pass@proxy1.example.com:8080"},
    {"http": "http://user:pass@proxy2.example.com:8080"},
    {"http": "http://user:pass@proxy3.example.com:8080"}
]

urls = [
    "https://example.com/product1",
    "https://example.com/product2",
    "https://example.com/product3"
]

for url in urls:
    # Выбираем случайный прокси
    proxy = random.choice(proxies_list)
    
    try:
        response = requests.get(url, proxies=proxy, timeout=10)
        print(f"Спарсили {url} через {proxy}")
    except Exception as e:
        print(f"Ошибка с прокси {proxy}: {e}")
    
    # Задержка 3 секунды
    time.sleep(3)

Практические кейсы: парсинг маркетплейсов и конкурентов

Рассмотрим реальные сценарии этичного парсинга для бизнеса.

Кейс 1: Мониторинг цен на Wildberries

Задача: Вы продаёте товары на Wildberries и хотите отслеживать цены конкурентов, чтобы корректировать свои.

Проблемы:

  • Wildberries блокирует IP при частых запросах
  • Цены зависят от региона доставки
  • Нужно парсить 100-500 товаров ежедневно

Этичное решение:

  1. Проверяем robots.txt — Wildberries разрешает парсинг карточек товаров, но запрещает API-эндпоинты.
  2. Используем резидентные прокси — для каждого региона (Москва, СПб, Новосибирск) берём прокси из этого региона.
  3. Ротация на каждый запрос — каждый товар парсим с нового IP.
  4. Задержка 2-3 секунды — между запросами делаем паузу.
  5. Парсим раз в день — не обновляем цены каждый час, достаточно ежедневного мониторинга.

Результат: Вы получаете актуальные цены конкурентов без блокировок. Wildberries не видит аномальной нагрузки, так как запросы распределены по времени и IP.

Кейс 2: Парсинг объявлений на Авито

Задача: Вы риелтор и хотите собрать все объявления о продаже квартир в вашем городе для анализа рынка.

Проблемы:

  • Авито показывает капчу при подозрительной активности
  • Нужно спарсить 5000+ объявлений
  • Данные обновляются каждый день

Этичное решение:

  1. Проверяем robots.txt — Авито разрешает парсинг страниц объявлений, но с ограничением Crawl-delay: 5 секунд.
  2. Используем резидентные прокси — ротация каждые 10 запросов (не на каждый запрос, чтобы не выглядеть подозрительно).
  3. Задержка 5-7 секунд — соблюдаем Crawl-delay из robots.txt.
  4. Парсим в ночное время — когда нагрузка на сайт минимальна (2-6 утра).
  5. Кэшируем данные — не парсим одно и то же объявление дважды, сохраняем результаты в базу данных.

Результат: За ночь вы собираете все новые объявления без капчи и блокировок. Авито не испытывает перегрузки, вы получаете нужные данные.

Кейс 3: Анализ ассортимента конкурента

Задача: Вы владелец интернет-магазина электроники и хотите узнать, какие новые товары появились у конкурента.

Проблемы:

  • Сайт конкурента на защищённом хостинге с антибот-системой
  • Нужно парсить каталог из 10 000 товаров
  • Вы хотите делать это еженедельно

Этичное решение:

  1. Проверяем robots.txt — разрешён парсинг /catalog/, запрещён /admin/ и /api/.
  2. Используем Sitemap — вместо обхода всех страниц вручную, берём список URL из sitemap.xml (это быстрее и не создаёт лишней нагрузки).
  3. Резидентные прокси с ротацией каждые 5 минут — один IP делает 20-30 запросов, затем меняется.
  4. Задержка 3-5 секунд — имитируем поведение обычного пользователя.
  5. Парсим только новые товары — сравниваем текущий каталог с предыдущим и парсим только изменения.

Результат: Вы еженедельно получаете список новинок конкурента без блокировок. Сайт конкурента не испытывает проблем, вы получаете конкурентное преимущество.

Инструменты для автоматизации с соблюдением правил

Существуют готовые инструменты, которые упрощают этичный парсинг и автоматически соблюдают robots.txt.

Scrapy (Python)

Scrapy — популярный фреймворк для парсинга на Python. Он автоматически проверяет robots.txt и соблюдает правила.

Настройка соблюдения robots.txt в Scrapy:

# settings.py

# Включить соблюдение robots.txt
ROBOTSTXT_OBEY = True

# Задержка между запросами (в секундах)
DOWNLOAD_DELAY = 3

# Случайная задержка (от 0.5 до 1.5 * DOWNLOAD_DELAY)
RANDOMIZE_DOWNLOAD_DELAY = True

# Ограничение одновременных запросов к одному домену
CONCURRENT_REQUESTS_PER_DOMAIN = 1

# User-Agent вашего парсера
USER_AGENT = 'MyCompanyParser/1.0 (+http://mycompany.com/bot)'

С этими настройками Scrapy автоматически проверит robots.txt перед парсингом и будет соблюдать все правила.

Apify (облачная платформа)

Apify — это облачная платформа для веб-скрапинга без кода. Вы создаёте парсер через визуальный интерфейс, а Apify автоматически управляет прокси и соблюдением лимитов.

Преимущества для этичного парсинга:

  • Встроенная ротация прокси (резидентные и дата-центры)
  • Автоматическое соблюдение robots.txt
  • Настройка задержек через интерфейс
  • Расписание запуска (парсинг раз в день/неделю)

Octoparse (парсер без кода)

Octoparse — десктопное приложение для парсинга без программирования. Подходит для маркетологов и селлеров, которые не умеют писать код.

Как настроить этичный парсинг в Octoparse:

  1. Откройте настройки задачи (Task Settings)
  2. Включите "Respect robots.txt"
  3. Установите задержку (Delay) 3-5 секунд
  4. Подключите прокси в разделе "Proxy Settings"
  5. Настройте расписание запуска (Schedule)

Puppeteer/Playwright (JavaScript)

Puppeteer и Playwright — библиотеки для автоматизации браузера. Они подходят для парсинга сайтов с JavaScript-рендерингом.

Пример этичного парсинга с Puppeteer:

const puppeteer = require('puppeteer');
const robotsParser = require('robots-parser');

async function ethicalScrape(url) {
  // Проверяем robots.txt
  const robots = robotsParser('https://example.com/robots.txt', 
    'MyParser/1.0');
  
  if (!robots.isAllowed(url)) {
    console.log('Парсинг запрещён robots.txt');
    return;
  }
  
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  
  // Задержка перед загрузкой страницы
  await new Promise(resolve => setTimeout(resolve, 3000));
  
  await page.goto(url);
  const data = await page.evaluate(() => {
    return document.querySelector('h1').innerText;
  });
  
  console.log(data);
  await browser.close();
}

ethicalScrape('https://example.com/product1');

Заключение

Этичный парсинг через прокси — это баланс между бизнес-задачами и уважением к владельцам сайтов. Соблюдая robots.txt, делая задержки между запросами и используя ротацию прокси, вы можете собирать нужные данные без юридических рисков и блокировок. Главные принципы: проверяйте robots.txt перед парсингом, ограничивайте скорость запросов, используйте честный User-Agent и парсьте только публичные данные. Это защитит ваш бизнес от судебных исков и обеспечит стабильную работу парсеров.

Если вы планируете парсить маркетплейсы, сайты конкурентов или собирать данные для анализа рынка, рекомендуем использовать резидентные прокси с автоматической ротацией. Они обеспеч