En esta entrada del blog, verá:
- Qué es y cómo funciona Amazon CAPTCHA
- Tres enfoques diferentes para evitarlo
- Una comparación completa de estas técnicas
Empecemos.
Amazon CAPTCHA: Introducción
Antes de aprender cómo evitarlo, entienda qué es Amazon CAPTCHA y por qué aparece en determinadas páginas.
Definición
Amazon CAPTCHA es una medida anti-bot que aparece al visitar las páginas de Amazon con un script de automatización o al realizar interacciones automatizadas en el sitio. En la mayoría de los casos, aparece como un simple CAPTCHA basado en texto, que requiere que introduzcas los caracteres que aparecen en pantalla:
El desafío anterior puede parecer simple, pero es suficiente para detener la mayoría de los scripts de raspado web de comercio electrónico. La buena noticia es que no es el CAPTCHA más avanzado del mercado, y sin duda hay maneras de eludirlo.
Cuando se muestra
Aquí está la parte complicada… Amazon CAPTCHA no aparece bajo un conjunto fijo de escenarios o configuraciones de navegador. A veces, es posible que lo encuentres, y otras veces, no.
Basándonos en nuestras pruebas, los escenarios más comunes que activan el CAPTCHA cuando se utilizan herramientas de automatización como Selenium, Puppeteer y Playwright incluyen:
- Visitar directamente una página de producto de Amazon
- Realizar una búsqueda automatizada
- Intentar conectarse o registrarse
Aún así, es importante tener en cuenta que ninguna de estas acciones garantiza un desafío CAPTCHA. Aunque pueda pensar que este comportamiento es bueno, ¡en realidad no lo es! Usted puede ser engañado pensando que su raspador de Amazon está funcionando perfectamente – sólo que de repente comienza a ser bloqueado sin razón aparente.
Por ejemplo, un simple script de Selenium como el siguiente puede funcionar sin problemas, o puede activar un 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()
Si se ejecuta correctamente, el script producirá esta captura de pantalla:
En cambio, en las ejecuciones fallidas, producirá:
La naturaleza impredecible de la aparición del CAPTCHA hace que sea un reto desarrollar una lógica de automatización fiable que active el desafío de forma consistente. Por ello, también es difícil estudiarlo. Por suerte, eso no significa que saltarse el CAPTCHA sea imposible.
Es hora de aprender.
Cómo evitar el CAPTCHA de Amazon: 3 técnicas
En este capítulo, explorará tres enfoques diferentes para abordar el CAPTCHA de Amazon:
- Utilizar un navegador oculto
- Utilizar la IA
- Utilizar un solucionador de CAPTCHA
Para otros métodos, consulte nuestra guía sobre cómo evitar CAPTCHAs en Python.
Sumerjámonos.
Método nº 1: Utilizar un navegador oculto
¿Cuántas veces ha visto un CAPTCHA mientras navegaba por Amazon? Lo más probable es que rara vez lo haya visto, o que no lo haya visto nunca. Esto sugiere que los usuarios humanos reales no se ven afectados significativamente por los sistemas anti-bot y anti-scraping de Amazon.
Como en la mayoría de los casos, es mejor prevenir que mitigar. El objetivo no es intentar resolver el CAPTCHA, sino evitar que se active. ¿Cómo? Configurando la lógica de automatización del navegador para que imite lo más posible a un usuario humano real al interactuar con las páginas web de Amazon.
El objetivo puede lograrse utilizando navegadores con complementos de ocultación que modifiquen la configuración del navegador relacionada con la automatización para evitar filtraciones y reducir la detección de bots. Algunas herramientas populares para este fin son:
- SeleniumBase: Un marco de automatización basado en Python con capacidades de ocultación integradas para eludir la detección de bots en Selenium.
- Playwright Stealth: Un plugin de Playwright Extra que modifica la configuración del navegador para evitar ser detectado por los sistemas anti-bot.
- Puppeteer Stealth: Un plugin de Puppeteer Extra que modifica las huellas dactilares del navegador para que parezcan más humanas.
chromedriver-no-detectado
: Un Selenium WebDriver parcheado que ayuda a eludir la detección por parte de mecanismos anti-bot.
En esta sección, nos centraremos en SeleniumBase, ya que funciona perfectamente con Python. De todas formas, puedes utilizar fácilmente cualquiera de las otras opciones.
Para instalar SeleniumBase, ejecute el siguiente comando:
pip install seleniumbase
A continuación, puede modificar el script Selenium anterior para utilizar SeleniumBase como se indica a continuación:
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()
¡Genial! Las posibilidades de encontrar CAPTCHAs de Amazon se han reducido significativamente.
Enfoque nº 2: Solucionarlo con IA
Si se observa una colección de CAPTCHAs de Amazon, es difícil creer que la IA no sea capaz de resolverlos:
Después de todo, los desafíos básicos de reconocimiento de texto parecen anticuados en comparación con los CAPTCHA más avanzados y complejos que se encuentran en el mercado actual:
Por lo tanto, la idea aquí es:
- Haga una captura de pantalla de la página CAPTCHA
- Alimentar a ChatGPT o cualquier otro modelo de IA
- Obtén la respuesta de la IA y utilízala para resolver el CAPTCHA
Si inspeccionas el HTML del CAPTCHA, verás que el campo de entrada de texto se puede seleccionar con el selector CSS .a-span12
. Dada esa información, podemos eludir el CAPTCHA de Amazon utilizando IA con el siguiente enfoque:
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)
Para que la función solve_amazon_captcha()
funcione, instale la dependencia openai
:
pip install openai
Además, establezca su clave de API OpenAI como una variable de entorno global llamada OPENAI_API_KEY
.
Así es como puede llamar a la función de resolución de CAPTCHA impulsada por IA:
driver = webdriver.Chrome()
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")
solve_amazon_captcha(driver)
driver.quit()
Ahora, tu script resolverá el CAPTCHA como lo haría un usuario humano.
Para un enfoque similar utilizando Gemini, echa un vistazo al proyecto Genaptcha en GitHub.
Método nº 3: Integrar un solucionador de CAPTCHA
Para lograr la máxima precisión y, al mismo tiempo, minimizar las llamadas a los modelos de IA -que pueden resultar costosas debido al consumo de tokens por las imágenes-, conviene combinar las dos soluciones mencionadas anteriormente:
- Reducir la frecuencia de CAPTCHAs en Amazon
- Resuélvelos sólo cuando aparezcan
Sin embargo, el enfoque híbrido conlleva sus propios retos:
- Dependencias adicionales: Necesitas una herramienta de automatización del navegador sigiloso, el cliente OpenAI y las configuraciones de entorno adecuadas.
- Inestabilidad: Los plugins de ocultación pueden funcionar hoy pero dejar de ser efectivos mañana debido a la batalla continua entre los desarrolladores de bots y las soluciones anti-bot. Por este motivo, es esencial mantener las bibliotecas actualizadas. Además, los modelos LLM a veces producen resultados inconsistentes, lo que puede introducir un problema adicional. Además, la IA tiene dificultades para resolver CAPTCHAs más complejos, que es probable que Amazon adopte en un futuro próximo.
- Lógica de reintento necesaria: Para asegurarse de que el CAPTCHA se resuelve realmente, necesita implementar un mecanismo de reintento en caso de que la IA falle.
- Lentitud: La IA introduce retrasos significativos en el procesamiento. Además, esperar a que el CAPTCHA aparezca y desaparezca ralentiza aún más el proceso de automatización/raspado.
- Sobrecarga de mantenimiento: Usted es responsable de garantizar que todas las tecnologías elegidas estén correctamente configuradas y sigan funcionando con el paso del tiempo.
¿No sería más fácil utilizar un solucionador de CAPTCHA? Por supuesto, especialmente si esta funcionalidad está integrada directamente en el navegador headless controlado por la herramienta de automatización del navegador de su elección.
Esa es exactamente la experiencia que ofrece Scraping Browser. Se trata de un navegador basado en la nube optimizado para el scraping web, diseñado para ofrecer el máximo rendimiento y eliminar la necesidad de gestionar la infraestructura. Este navegador especializado cuenta con rotación de IP, reintentos automáticos, mecanismos avanzados para evitar robots y, por supuesto, capacidad para resolver CAPTCHA.
Vea cómo integrarlo fácilmente con Selenium, Playwright y Puppeteer como cualquier otro navegador en nuestros documentos.
La mejor forma de descifrar el CAPTCHA de Amazon
Esta es una recapitulación de las técnicas CAPTCHA de Amazon exploradas en este artículo:
Acérquese a | Saltar CAPTCHA | Resolución de CAPTCHA | Mantenimiento | Lógica manual | Coste |
---|---|---|---|---|---|
Navegador oculto | ✔️ | ❌ | Requerido | Requerido | Gratis |
Solución AI | ❌ | ✔️ | Requerido | Requerido | 💲 |
Solucionador CAPTCHA | ✔️ | ✔️ | No es necesario, ya que la solución se ejecuta en la nube | No es necesario, ya que todas las funciones están integradas en la herramienta | 💲 |
A continuación se resumen sus puntos fuertes y débiles.
Método nº 1: Utilizar un navegador oculto
👍 Pros:
- Gratuito y de código abierto
👎 Cons:
- Evasión de CAPTCHA, no elusión
- Depende de navegadores parcheados, que pueden ser inestables
- Requiere un mantenimiento continuo
Enfoque nº 2: Solucionarlo con IA
👍 Pros:
- Puede resolver con eficacia CAPTCHAs basados en texto
👎 Cons:
- Resultados incoherentes e ineficaces contra CAPTCHAs complejos
- Detectar el CAPTCHA en la página puede ser complicado
- Las llamadas de IA tienen un coste
Método nº 3: Integrar un solucionador de CAPTCHA
👍 Pros:
- Muy eficaz
- Funciona a la perfección con cualquier herramienta de automatización del navegador o cliente HTTP
- Sin necesidad de lógica de reintentos, configuración del navegador u otro trabajo manual.
👎 Cons:
- Servicio Premium
Conclusión
En esta entrada de blog, aprendiste por qué Amazon podría detenerte con un CAPTCHA y cómo manejarlo en tu script de scraping. Desafortunadamente, las apariencias de CAPTCHA son inconsistentes, lo que dificulta su estudio. Afortunadamente, existen algunas técnicas para evitar o eludir CAPTCHAs, y aquí exploramos las tres más útiles.
Como ya hemos comentado, el enfoque más eficaz es utilizar el navegador de raspado de Bright Data, que viene con un solucionador CAPTCHA incorporado y se integra perfectamente con Selenium, Playwright y Puppeteer.
Si busca una solución aún más sencilla, considere nuestras otras opciones:
- Amazon CAPTCHA Solver: Un CAPTCHA Solver dedicado para Amazon respaldado por nuestro Web Unlocker.
- Amazon Scraper: Un punto final de raspado diseñado específicamente para las páginas de Amazon. Simplemente llámalo y obtén los datos que necesitas, ya analizados en el formato que prefieras.
- Conjuntos de datos de Amazon: Conjuntos de datos listos para usar que contienen los datos que le interesan. No es necesario hacer scraping.
Cree una cuenta gratuita de Bright Data hoy mismo y explore nuestras soluciones de scraping y conjuntos de datos con una prueba gratuita.
No se requiere tarjeta de crédito