Сбор общедоступных данных, не содержащих персональной информации, таких как указанные цены, как правило, рассматривается иначе, чем доступ к частным данным или данным, доступ к которым ограничен авторизацией, однако правовая ситуация варьируется в зависимости от юрисдикции, а условия использования Amazon ограничивают автоматизированный доступ. Осуществляйте сбор данных только с общедоступных страниц, избегайте сбора персональной информации, регулируйте интенсивность трафика и проконсультируйтесь с юристами в случае коммерческого или крупномасштабного использования.
Как собирать данные о ценах на Amazon, не попадая под блокировку
Да, вы можете собирать данные о ценах на Amazon с общедоступных страниц товаров, и надежный способ сделать это — отправлять запросы с частных IP-адресов в стране покупателя, регулировать частоту этих запросов и извлекать информацию о цене и «Buy Box» из отображаемой страницы. Сложность заключается не в том, чтобы считать число со страницы. Сложность заключается в том, чтобы оставаться в доступе достаточно долго, чтобы прочитать его на следующих тысяче страниц. Amazon рассматривает агрессивный автоматизированный трафик как угрозу, поэтому неизобретательный скрейпер подвергается ограничению пропускной способности, получает CAPTCHA или попадает в IP-бан уже после нескольких сотен запросов.
В данном руководстве подробно объясняется, почему с Amazon сложно выполнять скрапинг, описывается подход, который хорошо работает при больших объемах данных, приводится краткий обзор кода, а также рассматриваются правовые аспекты, которые следует учитывать. Кроме того, в нем рассказывается, в каких случаях следует полностью отказаться от скрапинга и вместо этого использовать официальный API Amazon.
Основные выводы
- Сбор данных о ценах на Amazon возможен для общедоступных страниц, однако именно регулирование частоты запросов и качество IP-адреса определяют, сможете ли вы избежать блокировки.
- IP-адреса центров обработки данных быстро попадают в черный список; с IP-адресов частных пользователей в целевой стране отображается реальная локализованная цена и кнопка «Купить».
- Победитель в борьбе за «Buy Box», цена и наличие товара зависят от географического региона, поэтому для обеспечения точности результатов важно использовать запросы с географической привязкой.
- Элементы ценообразования, отображаемые с помощью JavaScript, зачастую требуют этапа «безголового» рендеринга, а не простого синтаксического анализа исходного HTML-кода.
- Для задач, связанных с созданием каталогов, официальный API Product Advertising является более удобным решением; скрапинг позволяет восполнить пробелы, которые он оставляет.
Является ли сбор данных о ценах на Amazon законным и осуществимым?
Страницы с публичными списками товаров не требуют входа в систему, а указанная на них цена является общедоступной информацией. Считывание этих данных с помощью автоматизированного клиента с технической точки зрения не представляет сложности. Операционная сложность заключается в том, что Amazon активно защищается от ботов, а автоматизированный трафик в настоящее время составляет большую часть трафика любого крупного сайта. В отчёте Imperva «2025 Bad Bot Report» (Imperva, «Отчёт о вредоносных ботах за 2025 год») было установлено, что впервые за десятилетие доля автоматизированного трафика превысила долю человеческой активности, достигнув 51 % всего веб-трафика, причём на долю вредоносных ботов приходится 37 %. Сайты масштаба Amazon вкладывают значительные средства в то, чтобы отличать таких ботов от реальных покупателей.
Таким образом, вопрос заключается не в том, «смогу ли я проанализировать цену», а в том, «смогу ли я продолжать анализировать цены тысяч товаров, не прерываясь». Остальная часть данного руководства посвящена именно второму вопросу. Что касается механизмов извлечения и анализа данных на уровне языка программирования, см. сопутствующее руководство о том, как Сбор данных о ценах с помощью Python.
Почему с сайта Amazon сложно извлекать данные
Несколько защитных механизмов срабатывают одновременно.
Ограничение скорости. Если с одного IP-адреса слишком быстро отправлять слишком много запросов, Amazon замедляет обработку или отклоняет ваши запросы. Пороговое значение не публикуется и может меняться, поэтому скрейпер, который работал вчера, сегодня может превысить этот порог.
КАПЧИ. Если трафик выглядит как автоматический, Amazon вместо страницы товара выводит страницу с проверкой. В таком случае ваш парсер считывает CAPTCHA вместо цены и незаметно записывает бессмысленные данные, если вы не обнаружите эту замену.
Повторные подозрительные запросы с одного адреса также приводят к полной блокировке этого адреса. Диапазоны IP-адресов центров обработки данных легко идентифицировать и зачастую они заранее помечаются как подозрительные, поэтому скрейпер, запущенный с виртуальной машины в облаке, как правило, терпит неудачу на раннем этапе. На практике IP-адреса центров обработки данных, как правило, вызывают появление CAPTCHA или полную блокировку гораздо раньше, чем сеансы с географической привязкой к жилым районам на страницах товаров Amazon.
Географический фактор вносит дополнительную сложность. Цена и победитель в борьбе за «Buy Box» не являются фиксированными: они меняются в зависимости от страны, а иногда и города покупателя, а также со временем. Запрос, отправленный из неподходящего местоположения, возвращает цену, которую не увидит ни один реальный покупатель на вашем целевом рынке, что незаметно искажает ваш набор данных.
Динамическое содержимое. Некоторые элементы страницы, в том числе часть информации о ценах и наличии товара, загружаются с помощью JavaScript после первоначального HTML-кода. При запросе исходного HTML-кода может быть возвращена «оболочка» страницы, в которой отсутствует информация о цене.
Подход, который оправдывает себя при больших объемах
Цель состоит в том, чтобы имитировать поведение обычного посетителя и просматривать ту страницу, которую он действительно увидел бы.
Распределяйте свои запросы
Не перегружайте сайт. Вводите паузы между запросами, рандомизируйте их и ограничивайте количество одновременных запросов. Равномерный, «человеческий» ритм работы — это самый простой и экономичный способ защиты от ограничений по частоте запросов и CAPTCHA. Если вам требуется большой объем данных, распределите его во времени, а не отправляйте все сразу.
Маршрутизация через прокси-серверы, расположенные в жилых районах целевой страны
Именно от этого зависит успех или провал большинства скрейперов. Резидентные IP-адреса принадлежат реальным потребителям, поэтому запросы с них выглядят как действия обычных покупателей, а не как трафик из дата-центра. Маршрутизация через резидентные IP-адреса в той стране, где вы определяете цену, также обеспечивает отображение правильной локализованной цены, валюты и блока «Купить». Ротация сеансов распределяет запросы по множеству адресов, благодаря чему ни один отдельный IP-адрес не накапливает подозрительную частоту запросов, в то время как «липкий» сеанс сохраняет один и тот же IP-адрес для короткого многоэтапного потока (например, при загрузке страницы товара, а затем связанного с ним варианта), когда важна непрерывность действий.
Сеть прокси-серверов Massive для частных пользователей охватывает более 195 стран и обеспечивает геотаргетинг по стране и городу через протоколы HTTP, HTTPS и SOCKS5 с возможностью выбора между ротационными и фиксированными сессиями, что напрямую отвечает двум следующим требованиям: точность локализации и распределение запросов.
Обработка отображенной страницы
Поскольку элементы ценообразования могут загружаться с помощью JavaScript, следует предусмотреть этап рендеринга. Один из вариантов — использование «безголового» браузера, запускаемого самостоятельно. Другой вариант — сервис рендеринга, который загружает страницу и возвращает готовый контент, в идеале в виде «чистого» Markdown, что позволит вам тратить меньше времени на борьбу с нестабильными HTML-селекторами. Web Render API Massive включает конечную точку «Browsing», которая возвращает отрендеренные страницы в формате Markdown, что за один шаг избавляет вас от необходимости обслуживания браузера без интерфейса и от накладных расходов, связанных с разбором HTML.
Если вы хотите переходить непосредственно из URL-адреса в формат Markdown для своих собственных ИИ-агентов, вы можете полностью обойти этап разбора: вызовите Web Render API от Massive напрямую или настройте подключение к MCP Server от Massive таким образом, чтобы агент самостоятельно загружал отрендеренную страницу в формате Markdown и анализировал строку с ценой в контексте.
Обработайте данные о цене и «Buy Box»
Независимо от того, какой метод извлечения данных вы используете, выделяйте цену и наличие товара в блоке «Buy Box», а не первую цифру в долларах на странице. Страницы Amazon содержат множество цен (каталожная цена, цены других продавцов, цены на сопутствующие товары), поэтому ориентируйтесь именно на блок «Buy Box». Проверяйте каждое значение: цена, равная нулю, отсутствующая или значительно отличающаяся от обычной, как правило, свидетельствует о том, что вы столкнулись с CAPTCHA или пустым рендерингом, а не о реальном снижении цены.
Краткий эскиз кода
На приведенной ниже схеме показана структура вежливого скрейпера, использующего прокси-серверы для маршрутизации. Он загружает отрендеренную страницу через прокси-сервер, предназначенный для частного использования, а затем извлекает цену в блоке «Buy Box».
import os, time, random, requests
from bs4 import BeautifulSoup
# Massive прокси-серверы для частных пользователей: учетные данные указываются в URL в формате «имя пользователя:пароль».
_proxy = (
f"https://{os.environ['MASSIVE_PROXY_USERNAME']}:"
f"{os.environ['MASSIVE_API_KEY']}@network.joinmassive.com:65535"
)
PROXY = {"http": _proxy, "https": _proxy}
HEADERS = {"User-Agent": "Mozilla/5.0 (...)", "Accept-Language": "en-US,en"}
def get_price(asin, country="us"):
url = f"https://www.amazon.com/dp/{asin}"
resp = requests.get(url, headers=HEADERS, proxies=PROXY, timeout=30)
if "captcha" in resp.text.lower() or resp.status_code != 200:
return None # запрашивается ввод капчи или доступ заблокирован; повторите попытку позже с другого IP-адреса
soup = BeautifulSoup(resp.text, "html.parser")
el = soup.select_one("#corePrice_feature_div .a-offscreen")
if not el:
return None # цена отображается с помощью JS или изменился макет
return el.get_text(strip=True)
for asin in ["B0XXXXX1", "B0XXXXX2"]:
price = get_price(asin)
print(asin, price)
time.sleep(random.uniform(2, 6)) # случайный интервал, имитирующий человеческий ритм
Этот код намеренно упрощён. В рабочей версии скрейпера предусмотрены повторные попытки с отсрочкой, распознавание CAPTCHA с перенаправлением на новый IP-адрес, этап рендеринга для цен, загружаемых с помощью JavaScript, а также проверка данных перед их сохранением. Чтобы превратить этот код в запланированный и контролируемый сервис, ознакомьтесь с инструкциями по создать систему мониторинга цен.
Как не переступить черту
Собирайте данные только с общедоступных страниц. Не входите в систему, не обходите аутентификацию и не собирайте персональные данные. Цена, название и наличие товара в общедоступном списке не являются персональными данными. Соблюдайте указанные на сайте условия и его robots.txt, ограничивайте объем трафика, чтобы не ухудшать качество обслуживания для других пользователей, и формируйте узконаправленный и целевой набор данных, а не собирайте всё, к чему удаётся получить доступ. Условия Amazon ограничивают автоматизированный доступ, поэтому рассматривайте скрапинг как инструмент для мониторинга публичных цен с разумной периодичностью, а не для массового копирования каталогов. Законодательство в этой сфере варьируется в зависимости от юрисдикции и постоянно меняется, поэтому, если вы ведёте деятельность в крупных масштабах или на коммерческой основе, обратитесь к юристу для проверки конкретных аспектов вашего использования.
Когда следует использовать официальный API вместо этого
Amazon предлагает интерфейс Product Advertising API (PA-API) версии 5.0, который предоставляет цены и данные о товарах через поддерживаемый интерфейс. Если он отвечает вашим потребностям, это более удобный вариант: без CAPTCHA, без блокировок по IP-адресам и без необходимости обслуживания рендеринга.
Проблема заключается в доступе и пропускной способности. Для использования PA-API требуется активная учетная запись в программе Associates, привязанная к продажам, а новые учетные данные изначально имеют жесткий лимит. В документации для разработчиков Amazon (Amazon, «Product Advertising API 5.0: API Rates», 2026) указано, что в течение первых 30 дней новые учетные данные ограничены одним запросом в секунду и 8 640 запросами в день, причем лимиты увеличиваются только по мере роста дохода от привлечённых клиентов. Превысьте эти ограничения, и вы получите 429 Слишком много запросов ошибка.
Практическое правило:
- Используйте PA-API Если у вас есть соответствующий аккаунт Associates, ваш объем соответствует пропускной способности, и необходимые вам поля содержатся в ответе.
- Скрести если у вас нет доступа к API, вам требуются данные, которые API не предоставляет (например, информация о «Buy Box» или геоспецифические показатели), либо вам нужна цена в том виде, в каком её видит покупатель в конкретной стране.
Многие команды используют и то, и другое: API — для тех задач, которые оно четко охватывает, а скрапинг — для пробелов. Та же самая логика «разработать или приобрести» применима ко всем мониторинг цен а также более широкая практика мониторинг цен конкурентов.
Источники
- Imperva. «Отчет о вредоносных ботах за 2025 год». 2025 г. https://www.imperva.com/resources/resource-library/reports/2025-bad-bot-report/ (проверено 15 июня 2026 г.)
- Amazon. «Product Advertising API 5.0: Лимиты использования API». 2026 г. https://webservices.amazon.com/paapi5/documentation/troubleshooting/api-rates.html (проверено 15 июня 2026 г.)
Точность определения цен зависит от того, чтобы увидеть ту страницу, которую видит реальный покупатель. Сеть прокси-серверов Massive для частного использования предоставляет геотаргетированные IP-адреса частных пользователей в более чем 195 странах с возможностью выбора между ротационными и фиксированными сессиями, а также Web Render API, который возвращает отрендеренные страницы в виде чистого кода Markdown, что позволяет отслеживать цены на Amazon в том регионе и с той периодичностью, которые необходимы для ваших случаев использования.
Часто задаваемые вопросы
Диапазоны IP-адресов центров обработки данных легко идентифицировать, и они зачастую заранее помечаются как «нежилые», поэтому запросы с этих адресов выглядят как автоматизированные. Жилые IP-адреса используются реальными потребителями и не выделяются среди обычного трафика покупателей, благодаря чему они дольше остаются незамеченными и отображают правильную локализованную цену.
Иногда. Некоторые части страницы, в том числе отдельные элементы с ценами, загружаются с помощью JavaScript, поэтому при запросе исходного HTML-кода цена может отсутствовать. Вы можете самостоятельно запустить браузер без графического интерфейса или воспользоваться сервисом рендеринга, который возвращает готовую страницу (чистый вывод в формате Markdown упрощает обработку), вместо того чтобы настраивать автоматизацию работы браузера.
Официальных цифр не публикуются, и пороговое значение меняется. Безопасная практика заключается в том, чтобы распределять запросы с использованием случайных задержек, ограничивать количество одновременных запросов и чередовать IP-адреса частных пользователей, чтобы ни один отдельный адрес не достигал подозрительной частоты запросов. Распределение объёмного задания во времени более эффективно, чем его выполнение одним махом.
