В этой статье вы увидите:
- Что такое Amazon CAPTCHA и как она работает?
- Три разных подхода, чтобы избежать этого
- Полное сравнение этих методов
Давайте начнем.
Amazon CAPTCHA: введение
Прежде чем узнать, как избежать этого, разберитесь, что такое Amazon CAPTCHA и почему она появляется на определенных страницах.
Определение
Amazon CAPTCHA – это средство защиты от ботов, которое появляется, когда вы посещаете страницы Amazon со скриптом автоматизации или выполняете автоматические действия на сайте. В большинстве случаев она выглядит как простая текстовая капча, требующая ввода символов, появляющихся на экране:
Приведенная выше задача может показаться простой, но ее достаточно, чтобы остановить большинство скриптов, занимающихся веб-скрептингом в электронной коммерции. Хорошая новость заключается в том, что это не самая продвинутая CAPTCHA на рынке, и, конечно, есть способы ее обойти.
При отображении
Вот в чем сложность… Amazon CAPTCHA не появляется при определенном наборе сценариев или конфигураций браузера. Иногда вы можете найти ее, а иногда нет.
По результатам нашего тестирования, наиболее распространенными сценариями, вызывающими срабатывание CAPTCHA при использовании таких инструментов автоматизации, как Selenium, Puppeteer и Playwright, являются следующие:
- Перейдите непосредственно на страницу товара Amazon
- Выполните автоматический поиск
- Попытка войти в систему или зарегистрироваться
Тем не менее, важно отметить, что ни одно из этих действий не гарантирует прохождения теста CAPTCHA. Хотя вы можете думать, что такое поведение хорошо, на самом деле это не так! Вы можете обмануться, решив, что ваш скрепер Amazon работает идеально, но внезапно его начнут блокировать без видимых причин.
Например, простой скрипт Selenium, как показано ниже, может работать без проблем, или вы можете запустить CAPTCHA:
# pip install selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# Configure the browser to launch in headless mode
options = Options()
options.add_argument("--headless")
# Initialize the WebDriver to control Chrome
driver = webdriver.Chrome(service=Service(),options=options)
# Connect to the target page (Amazon Kindle product page)
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")
# Take a screenshot of the entire page
driver.save_screenshot("product-page.png")
# Additional scraping logic...
# Release the driver resources
driver.quit()
При правильном выполнении скрипт выдает такой снимок экрана:
С другой стороны, при неудачном выполнении он будет производить:
Непредсказуемый характер появления CAPTCHA затрудняет разработку надежной логики автоматизации, которая бы последовательно вызывала вызов. Как следствие, ее также сложно изучить. К счастью, это не означает, что обойти CAPTCHA невозможно.
Пришло время учиться.
Как обойти CAPTCHA от Amazon: 3 способа
В этой главе вы рассмотрите три различных подхода к решению проблемы CAPTCHA от Amazon:
- Используйте скрытый браузер
- Использование искусственного интеллекта
- Использование решателя CAPTCHA
О других методах читайте в нашем руководстве по обходу CAPTCHA в Python.
Давайте погрузимся.
Способ № 1: Используйте скрытый браузер
Сколько раз вы видели CAPTCHA во время просмотра сайта Amazon? Скорее всего, редко, если вообще видели. Это говорит о том, что реальные пользователи-люди не сильно страдают от систем Amazon по борьбе с ботами и скрапингом.
Как и в большинстве случаев, предотвращение лучше, чем смягчение. Цель состоит не в том, чтобы попытаться решить проблему CAPTCHA, а в том, чтобы предотвратить ее срабатывание. Как? Настроив логику автоматизации браузера так, чтобы она как можно точнее имитировала реального пользователя при взаимодействии с веб-страницами Amazon.
Этой цели можно достичь, используя браузеры со стелс-плагинами, которые изменяют настройки браузера, связанные с автоматизацией, чтобы предотвратить утечки и уменьшить обнаружение ботов. Некоторые популярные инструменты для этой цели:
- SeleniumBase: основанный на Python фреймворк автоматизации со встроенными стелс-возможностями для обхода обнаружения ботов в Selenium.
- Playwright Stealth: плагин Playwright Extra, который изменяет настройки браузера, чтобы избежать обнаружения анти-бот системами.
- Puppeteer Stealth: плагин Puppeteer Extra, который изменяет отпечатки пальцев браузера, чтобы они выглядели более похожими на человеческие.
chromedriver-not-detected
: исправленный Selenium WebDriver, который помогает обойти обнаружение анти-бот механизмами.
В этом разделе мы остановимся на SeleniumBase, поскольку он отлично работает с Python. Однако вы можете легко использовать любой из других вариантов.
Чтобы установить SeleniumBase, выполните следующую команду:
pip install seleniumbase
Затем вы можете модифицировать приведенный выше сценарий Selenium, чтобы использовать SeleniumBase следующим образом:
from seleniumbase import Driver
# Initialize the SeleniumBase driver
driver = Driver(uc=True) # Enables stealth mode
# Connect to the target Amazon page
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")
# Take a screenshot of the entire page
driver.save_screenshot("product-page.png")
# Additional scraping logic...
# Release the driver resources
driver.quit()
Отлично! Шансы найти капчу Amazon значительно уменьшились.
Подход 2: решение проблемы с помощью искусственного интеллекта
Если вы посмотрите на коллекцию CAPTCHA от Amazon, трудно поверить, что искусственный интеллект не способен их решить:
В конце концов, базовые задачи распознавания текста кажутся устаревшими по сравнению с более продвинутыми и сложными CAPTCHA, представленными на рынке сегодня:
Идея заключается в следующем:
- Сделайте снимок экрана страницы CAPTCHA
- Кормление ChatGPT или любой другой модели искусственного интеллекта
- Получите ответ от искусственного интеллекта и используйте его для решения CAPTCHA.
Если вы посмотрите HTML CAPTCHA, то увидите, что поле ввода текста можно выделить с помощью CSS-селектора .a-span12.
Учитывая эту информацию, мы можем обойти CAPTCHA Amazon с помощью искусственного интеллекта, используя следующий подход:
import os
import time
import base64
from openai import OpenAI
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def solve_amazon_captcha(driver, timeout=5):
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
captcha_elements = driver.find_elements(By.CSS_SELECTOR, "a-span12")
# If the CAPTCHA has been detected
if len(captcha_elements) > 0:
print("CAPTCHA detected!")
# Take a screenshot of the CAPTCHA page
driver.maximize_window()
screenshot_path = "captcha.png"
driver.save_screenshot(screenshot_path)
print("Attempting to solve the CAPTCHA...")
# Feed the screenshot to the AI for CAPTCHA solving
base64_image = encode_image(screenshot_path)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Extract the text from this CAPTCHA. Return only the text."},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}},
],
}
],
)
# Get the CAPTCHA text
captcha_text = response.choices[0].message.content.strip()
# Select teh CAPTCHA input text and fill it out
# with the AI generated text
input_element = captcha_elements[0]
input_element.send_keys(captcha_text, Keys.ENTER)
print("CAPTCHA solved!")
print(f"Wait up to {timeout} seconds for page reload...")
# Wait up to 5 seconds for a page reload
time.sleep(timeout)
Чтобы функция solve_amazon_captcha()
работала, установите зависимость openai
:
pip install openai
Кроме того, задайте свой ключ API OpenAI в качестве глобальной переменной окружения OPENAI_API_KEY
.
Так можно назвать функцию разрешения CAPTCHA с помощью искусственного интеллекта:
driver = webdriver.Chrome()
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")
solve_amazon_captcha(driver)
driver.quit()
Теперь ваш скрипт будет решать CAPTCHA так, как это сделал бы пользователь.
Аналогичный подход с использованием Gemini можно найти в проекте Genaptcha на GitHub.
Метод № 3: Интеграция решателя CAPTCHA
Чтобы добиться максимальной точности и в то же время свести к минимуму обращения к моделям искусственного интеллекта, которые могут быть дорогостоящими из-за потребления токенов изображениями, следует комбинировать два вышеупомянутых решения:
- Уменьшение частоты использования CAPTCHA на Amazon
- Решайте их только тогда, когда они появляются
Однако гибридный подход создает свои проблемы:
- Дополнительные зависимости: вам понадобится инструмент автоматизации браузера-невидимки, клиент OpenAI и соответствующие настройки окружения.
- Нестабильность: Стелс-плагины могут работать сегодня, но завтра стать неэффективными из-за непрекращающейся борьбы между разработчиками ботов и антиботами. По этой причине очень важно поддерживать библиотеки в актуальном состоянии. Кроме того, модели LLM иногда дают противоречивые результаты, что может создать дополнительную проблему. Кроме того, ИИ с трудом решает более сложные CAPTCHA, которые Amazon, вероятно, примет на вооружение в ближайшем будущем.
- Требуется логика повтора: Чтобы убедиться, что CAPTCHA действительно решена, вам нужно реализовать механизм повтора в случае, если ИИ не удастся.
- Медленность: ИИ вносит значительные задержки в обработку. Кроме того, ожидание появления и исчезновения CAPTCHA еще больше замедляет процесс автоматизации/скрапинга.
- Накладные расходы на обслуживание: вы отвечаете за то, чтобы все выбранные технологии были правильно настроены и продолжали функционировать в течение длительного времени.
Не проще ли использовать решатель CAPTCHA? Конечно, особенно если эта функциональность интегрирована непосредственно в безголовый браузер, управляемый выбранным вами инструментом автоматизации браузера.
Именно такой опыт предлагает Scraping Browser. Это облачный браузер, оптимизированный для веб-скреппинга, разработанный для обеспечения максимальной производительности и устранения необходимости управления инфраструктурой. Этот специализированный браузер имеет функцию ротации IP-адресов, автоматические повторные попытки, усовершенствованные механизмы защиты от ботов и, конечно же, возможность разрешать CAPTCHA.
О том, как легко интегрировать его с Selenium, Playwright и Puppeteer, как и любой другой браузер, читайте в нашей документации.
Лучший способ взломать CAPTCHA от Amazon
Это краткое описание методов CAPTCHA от Amazon, рассмотренных в этой статье:
Приходите к | Пропустить CAPTCHA | Разрешение CAPTCHA | Техническое обслуживание | Ручная логика | Стоимость |
---|---|---|---|---|---|
Скрытый браузер | ✔️ | ❌ | Требуется | Требуется | Бесплатно |
ИИ-решение | ❌ | ✔️ | Требуется | Требуется | 💲 |
Решение проблемы CAPTCHA | ✔️ | ✔️ | В этом нет необходимости, поскольку решение работает в облаке. | В этом нет необходимости, так как все функции интегрированы в инструмент. | 💲 |
Их сильные и слабые стороны кратко описаны ниже.
Способ № 1: Используйте скрытый браузер
👍 Плюсы:
- Свободный и открытый исходный код
👎 Конс:
- Уклонение от CAPTCHA, а не обход
- Зависит от исправленных браузеров, которые могут быть нестабильными.
- Требуется постоянное техническое обслуживание
Подход 2: решение проблемы с помощью искусственного интеллекта
👍 Плюсы:
- Может эффективно решать текстовые CAPTCHA
👎 Конс:
- Непоследовательные и неэффективные результаты против сложных CAPTCHA
- Обнаружить CAPTCHA на странице может быть непросто.
- Вызовы искусственного интеллекта имеют свою цену
Метод № 3: Интеграция решателя CAPTCHA
👍 Плюсы:
- Высокоэффективный
- Работает с любым средством автоматизации браузера или HTTP-клиентом
- Нет необходимости в логике повторных попыток, настройке браузера или другой ручной работе.
👎 Конс:
- Премиальное обслуживание
Заключение
В этой статье вы узнали, почему Amazon может остановить вас с помощью CAPTCHA и как справиться с этим в своем скрипте скраппинга. К сожалению, CAPTCHA выглядят непоследовательно, что делает их сложными для изучения. К счастью, есть несколько приемов, позволяющих избежать или обойти CAPTCHA, и здесь мы рассмотрим три наиболее полезных из них.
Как уже говорилось выше, наиболее эффективным подходом является использование браузера скраппинга Bright Data, который поставляется со встроенным решателем CAPTCHA и легко интегрируется с Selenium, Playwright и Puppeteer.
Если вы ищете еще более простое решение, рассмотрите другие варианты:
- Amazon CAPTCHA Solver: специальный CAPTCHA Solver для Amazon, поддерживаемый нашим веб-разблокировщиком.
- Amazon Scraper: конечная точка скраппинга, разработанная специально для страниц Amazon. Просто вызовите его и получите нужные вам данные, уже разобранные в выбранном вами формате.
- Amazon Datasets: готовые наборы данных, содержащие интересующие вас данные. Не требуется скраппинг.
Создайте бесплатную учетную запись Bright Data сегодня и изучите наши решения по скраппингу и работе с наборами данных в бесплатной пробной версии.
Кредитная карта не требуется