
Aloísio Vítor
Image Processing Expert

El Firewall de Aplicaciones Web (WAF) de Amazon Web Services (AWS) es un servicio de seguridad poderoso que ayuda a proteger las aplicaciones web de explotaciones comunes que podrían afectar la disponibilidad, comprometer la seguridad o consumir recursos excesivos. Aunque es crucial para proteger los activos web, el WAF de AWS puede presentar un desafío significativo para los procesos de raspado automático y extracción de datos, a menudo bloqueando a los raspadores legítimos.
Este artículo proporciona una guía completa sobre cómo integrar de manera fluida Crawl4AI, un raspador web avanzado, con CapSolver, un servicio líder en soluciones de CAPTCHA y anti-bot, para resolver eficazmente las protecciones de WAF de AWS. Detallaremos el método de integración basado en API, incluyendo ejemplos de código y explicaciones, para garantizar que sus tareas de automatización web puedan proseguir sin interrupciones.
AWS WAF funciona monitoreando las solicitudes HTTP(S) que se envían a una distribución de Amazon CloudFront, un balanceador de carga de aplicaciones, una API Gateway de Amazon o una API de AWS AppSync de GraphQL. Permite configurar reglas que bloqueen patrones de ataque comunes, como inyección de SQL o scripting entre sitios, y también puede filtrar el tráfico basado en direcciones IP, encabezados HTTP, cuerpo HTTP o cadenas de URI. Para los raspadores web, esto suele significar:
CapSolver proporciona una solución robusta para obtener el cookie aws-waf-token, que es clave para eludir el WAF de AWS. Al integrarlo con Crawl4AI, permite que sus raspadores imiten el comportamiento de usuarios legítimos y naveguen exitosamente por sitios protegidos.
💡 Bonificación exclusiva para usuarios de integración de Crawl4AI:
Para celebrar esta integración, ofrecemos un código de bonificación exclusivo de 6% —CRAWL4para todos los usuarios de CapSolver que se registren a través de este tutorial.
Simplemente ingrese el código durante la recarga en Panel de control para recibir créditos adicionales de 6% de inmediato.
El método más efectivo para manejar desafíos de WAF de AWS con Crawl4AI y CapSolver es a través de la integración de API. Este método implica usar CapSolver para obtener el aws-waf-token requerido y luego inyectar este token como cookie en el contexto del navegador de Crawl4AI antes de recargar la página objetivo.
aws-waf-token.AntiAwsWafTaskProxyLess junto con websiteURL. CapSolver devolverá la cookie aws-waf-token necesaria.js_code de Crawl4AI para establecer la cookie aws-waf-token en el contexto del navegador. Después de establecer la cookie, se recarga la página.aws-waf-token correcta, Crawl4AI puede acceder ahora exitosamente a la página protegida y continuar con sus tareas de extracción de datos.El siguiente código en Python demuestra cómo integrar la API de CapSolver con Crawl4AI para resolver desafíos de WAF de AWS. Este ejemplo apunta a una página de bienvenida de NFT de Porsche protegida por WAF de AWS.
import asyncio
import capsolver
from crawl4ai import *
# TODO: configure su configuración
api_key = "CAP-xxxxxxxxxxxxxxxxxxxxx" # su clave de API de capsolver
site_url = "https://nft.porsche.com/onboarding@6" # URL de su sitio objetivo
cookie_domain = ".nft.porsche.com" # el nombre de dominio al que desea aplicar la cookie
captcha_type = "AntiAwsWafTaskProxyLess" # tipo de CAPTCHA objetivo
capsolver.api_key = api_key
async def main():
browser_config = BrowserConfig(
verbose=True,
headless=False,
use_persistent_context=True,
)
async with AsyncWebCrawler(config=browser_config) as crawler:
await crawler.arun(
url=site_url,
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# obtener cookie de WAF de AWS usando el SDK de capsolver
solution = capsolver.solve({
"type": captcha_type,
"websiteURL": site_url,
})
cookie = solution["cookie"]
print("cookie de WAF de AWS:", cookie)
js_code = """
document.cookie = \'aws-waf-token=""" + cookie + """;domain=""" + cookie_domain + """;path=/\
\';
location.reload();
"""
wait_condition = """() => {
return document.title === \'Unirse al viaje de Porsche en Web3\';
}"""
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test",
js_code=js_code,
js_only=True,
wait_for=f"js:{wait_condition}"
)
result_next = await crawler.arun(
url=site_url,
config=run_config,
)
print(result_next.markdown)
if __name__ == "__main__":
asyncio.run(main())
Análisis del código:
capsolver.solve se invoca con el tipo AntiAwsWafTaskProxyLess y websiteURL para recuperar la cookie aws-waf-token. Este es el paso crucial donde el AI de CapSolver resuelve el desafío de WAF y proporciona la cookie necesaria.js_code): La cadena js_code contiene JavaScript que establece la cookie aws-waf-token en el contexto del navegador usando document.cookie. Luego activa location.reload() para recargar la página, asegurando que la siguiente solicitud incluya la cookie válida recién establecida.wait_for: Se define una wait_condition para garantizar que Crawl4AI espere a que el título de la página sea 'Unirse al viaje de Porsche en Web3', indicando que el WAF ha sido eludido con éxito y que el contenido deseado está cargado.La extensión del navegador de CapSolver ofrece un enfoque simplificado para manejar desafíos de WAF de AWS, especialmente cuando se aprovecha sus capacidades de resolución automática dentro de un contexto de navegador persistente gestionado por Crawl4AI.
user_data_dir y lanzar una instancia de navegador que conserve la extensión de CapSolver instalada y sus configuraciones.aws-waf-token. Esta cookie se aplica automáticamente a las solicitudes posteriores.Este ejemplo demuestra cómo configurar Crawl4AI para usar un perfil de navegador con la extensión de CapSolver para resolver automáticamente los desafíos de WAF de AWS.
import asyncio
import time
from crawl4ai import *
# TODO: configure su configuración
user_data_dir = "/browser-profile/Default1" # Asegúrese de que esta ruta esté correctamente configurada y contenga su extensión configurada
browser_config = BrowserConfig(
verbose=True,
headless=False,
user_data_dir=user_data_dir,
use_persistent_context=True,
proxy="http://127.0.0.1:13120", # Opcional: configure el proxy si es necesario
)
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result_initial = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# La extensión resolverá automáticamente el WAF de AWS al cargar la página.
# Es posible que necesite agregar una condición de espera o time.sleep para que el WAF sea resuelto
# antes de continuar con otras acciones.
time.sleep(30) # Ejemplo de espera, ajuste según sea necesario para que la extensión funcione
# Continúe con otras operaciones de Crawl4AI después de que el WAF de AWS sea resuelto
# Por ejemplo, verifique elementos o contenido que aparezcan después de una verificación exitosa
# print(result_initial.markdown) # Puede inspeccionar el contenido de la página después de la espera
if __name__ == "__main__":
asyncio.run(main())
Análisis del código:
user_data_dir: Este parámetro es esencial para que Crawl4AI lance una instancia de navegador que conserve la extensión de CapSolver instalada y sus configuraciones. Asegúrese de que la ruta apunte a un directorio válido de perfil de navegador donde se haya instalado la extensión.time.sleep como un ejemplo general para permitir que la extensión complete sus operaciones en segundo plano. Para soluciones más robustas, considere usar la funcionalidad wait_for de Crawl4AI para verificar cambios específicos en la página que indiquen una resolución exitosa del WAF de AWS.Si prefiere activar la resolución del WAF de AWS manualmente en un punto específico de su lógica de raspado, puede configurar el parámetro manualSolving de la extensión en true y luego usar js_code para hacer clic en el botón de resolución proporcionado por la extensión.
import asyncio
import time
from crawl4ai import *
# TODO: configure su configuración
user_data_dir = "/browser-profile/Default1" # Asegúrese de que esta ruta esté correctamente configurada y contenga su extensión configurada
browser_config = BrowserConfig(
verbose=True,
headless=False,
user_data_dir=user_data_dir,
use_persistent_context=True,
proxy="http://127.0.0.1:13120", # Opcional: configure el proxy si es necesario
)
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result_initial = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# Espere un momento para que la página se cargue y la extensión esté lista
time.sleep(6)
# Use js_code para activar el botón de resolución manual proporcionado por la extensión de CapSolver
js_code = """
let solverButton = document.querySelector(\'#capsolver-solver-tip-button\');
if (solverButton) {
// evento de clic
const clickEvent = new MouseEvent(\'click\', {
bubbles: true,
cancelable: true,
view: window
});
solverButton.dispatchEvent(clickEvent);
}
"""
print(js_code)
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test",
js_code=js_code,
js_only=True,
)
result_next = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
config=run_config
)
print("Resultados de ejecución de JS:", result_next.js_execution_result)
# Permita tiempo para que el WAF de AWS sea resuelto después de la activación manual
time.sleep(30) # Ejemplo de espera, ajuste según sea necesario
# Continúe con otras operaciones de Crawl4AI
if __name__ == "__main__":
asyncio.run(main())
Análisis del código:
manualSolving: Antes de ejecutar este código, asegúrese de que en el config.js de la extensión de CapSolver se establezca manualSolving en true.js_code simula un evento de clic en el #capsolver-solver-tip-button, que es el botón proporcionado por la extensión de CapSolver para la resolución manual. Esto le da un control preciso sobre cuándo se inicia el proceso de resolución del WAF de AWS.La integración de Crawl4AI con CapSolver ofrece una solución sólida y eficiente para eludir las protecciones de WAF de AWS, permitiendo un raspado web sin interrupciones y extracción de datos. Al aprovechar la capacidad de CapSolver para obtener el token crítico aws-waf-token y las capacidades flexibles de inyección de js_code de Crawl4AI, los desarrolladores pueden garantizar que sus procesos automatizados naveguen sin problemas por sitios protegidos por WAF.
Esta integración no solo mejora la estabilidad y la tasa de éxito de sus raspadores, sino que también reduce significativamente la sobrecarga operativa asociada con la gestión de mecanismos anti-bot complejos. Con esta combinación poderosa, puede recopilar datos de aplicaciones web incluso las más protegidas con confianza.
P1: ¿Qué es AWS WAF y por qué se utiliza en el raspado web?
R1: AWS WAF (Firewall de Aplicaciones Web) es un servicio de seguridad basado en la nube que protege aplicaciones web contra explotaciones comunes. En el raspado web, se encuentra como un mecanismo anti-bot que bloquea solicitudes consideradas sospechosas o automatizadas, requiriendo técnicas de elusión para acceder a los datos objetivo.
P2: ¿Cómo ayuda CapSolver a eludir AWS WAF?
R2: CapSolver proporciona servicios especializados, como AntiAwsWafTaskProxyLess, para resolver desafíos de AWS WAF. Obtiene la cookie aws-waf-token necesaria, que luego se usa en Crawl4AI para imitar el comportamiento de usuarios legítimos y acceder al sitio web protegido.
Q3: ¿Cuáles son los principales métodos de integración de AWS WAF con Crawl4AI y CapSolver?
A3: Hay dos métodos principales: integración por API, donde se llama a la API de CapSolver para obtener el aws-waf-token que luego se inyecta mediante el js_code de Crawl4AI, y integración mediante extensión de navegador, donde la extensión de CapSolver maneja automáticamente el desafío de WAF dentro de un contexto de navegador persistente.
Q4: ¿Es necesario usar un proxy al resolver AWS WAF con CapSolver?
A4: Aunque no siempre estrictamente necesario, usar un proxy puede ser beneficioso, especialmente si las operaciones de scraping requieren mantener anonimato o simular solicitudes desde ubicaciones geográficas específicas. Las tareas de CapSolver suelen admitir configuraciones de proxy.
Q5: ¿Cuáles son los beneficios de integrar Crawl4AI y CapSolver para AWS WAF?
A5: La integración conduce a un manejo automático de WAF, mayor eficiencia en la navegación web, mayor robustez del raspador contra mecanismos anti-bot y reducción de costos operativos al minimizar la intervención manual.
Domina la resolución de desafíos de CAPTCHA de Amazon AWS WAF en la automatización del navegador con estrategias expertas. Aprende a integrar CapSolver para flujos de trabajo de automatización sin problemas y eficientes. Este guía cubre soluciones basadas en tokens y basadas en clasificación.

Una guía detallada de PHP para resolver CAPTCHA y desafío de AWS WAF para scraping y automatización confiables
