Cómo ejecutar Crawl4AI en un navegador de huellas digitales indetectable
Advanced Data Extraction Specialist
TL;DR:
- Crawl4AI ya habla el Protocolo de Chrome DevTools, así que apuntarlo a Scrapeless es un cambio de dos líneas. Establece
browser_mode="cdp"ycdp_urlal endpoint WebSocket de Scrapeless, y cada rastreoarun()se ejecuta en un navegador en la nube en lugar de Chromium local. - Un navegador local de Crawl4AI filtra automatización en tres ejes: la bandera
navigator.webdriver, una huella dactilar predeterminada sin cabeza, y tu IP de salida. Los sistemas anti-bot puntúan los tres juntos. - El Navegador de Scraping Scrapeless responde a los tres del lado del servidor — verdadero Chromium autodesarrollado, una huella dactilar consistente por sesión sin indicio de
webdriver, y salida residencial en más de 195 países. - Tu lógica de rastreador permanece sin cambios. Las estrategias de extracción,
CrawlerRunConfig, fragmentación y salida en markdown funcionan exactamente igual que en local; solo la fuente del navegador cambia. - Verificado en vivo: un rastreo de Crawl4AI a través del navegador en la nube de Scrapeless devolvió HTTP 200 y más de 11,000 caracteres de markdown limpio, y una verificación separada leyó
navigator.webdrivercomofalseen una IP residencial de EE. UU. - Gratis para empezar. Nuevas cuentas de Scrapeless incluyen tiempo de ejecución gratuito del Navegador de Scraping — inscríbete en app.scrapeless.com.
Introducción: da a Crawl4AI un navegador que lea limpio
Crawl4AI impulsa un auténtico Chromium a través de Playwright para convertir páginas en markdown listo para LLM. Ejecuta esto contra un navegador en tu propia máquina y cada rastreo hereda las señales que hacen obvia la automatización: se anuncia a través de la propiedad navigator.webdriver, envía fuentes y comportamientos de canvas predeterminados sin cabeza, y sale desde una IP que los servicios de reputación ya reconocen.
Puedes parchear cada uno de estos localmente, y luego seguir parchándolos a medida que Chromium y los detectores evolucionan. Hay un camino más corto. Crawl4AI puede conectarse a cualquier navegador que hable el Protocolo de Chrome DevTools a través de su configuración cdp_url, y el Navegador de Scraping Scrapeless es un endpoint CDP alcanzado a través de una URL WebSocket. Apunta Crawl4AI a él y la huella dactilar, la superficie de comportamiento y la IP de salida se mueven del lado del servidor — el código del rastreador se queda donde está.
Lo que puedes hacer con esto
- Rastrar páginas protegidas contra bots — el navegador en la nube elimina los desafíos durante el renderizado, así que
arun()devuelve contenido en lugar de un intersticial. - Localizar el rastreo — fija
proxyCountrypara que una página se resuelva como la ve un visitante en ese mercado. - Enviar una huella dactilar consistente — pasa un objeto
fingerprintpara que el agente de usuario, la plataforma, la pantalla y la zona horaria se mantengan coherentes entre las ejecuciones. - Reutilizar el estado de inicio de sesión — lleva un
profileIdpara que las cookies y el almacenamiento local persistan entre los rastreos. - Escalar más allá de tu laptop — las sesiones se ejecutan en la nube, así que un lote de URLs no está limitado a un Chromium local.
- Mantener la extracción sin cambios — las estrategias CSS/XPath, la extracción LLM y la generación de markdown se comportan idénticamente.
Por qué el Navegador de Scraping Scrapeless
El Navegador de Scraping Scrapeless es un navegador en la nube personalizable y anti-detección diseñado para rastreadores web y agentes de IA. Para Crawl4AI específicamente, trae:
- Un Chromium real autodesarrollado que ejecuta JavaScript de página exactamente como Chrome, así que el contenido renderizado por el cliente se adjunta antes de que
arun()lo lea. - Una huella dactilar consistente por sesión — sin indicio de
navigator.webdriver, sin predeterminados sin cabeza que se filtren. - Salida residencial en más de 195 países, seleccionada por sesión con un valor de
proxyCountry. - Persistencia de sesión a través de
profileId, para que un rastreo autenticado mantenga su estado. - Una superficie de conexión — cada opción es un parámetro de consulta en el mismo endpoint WebSocket.
Obtén tu clave API en el plan gratuito en app.scrapeless.com.
Requisitos previos
- Python 3.10 o superior con
asyncio - Crawl4AI instalado (
pip install crawl4ai) - Una cuenta de Scrapeless y un token API — inscríbete en app.scrapeless.com
Los ejemplos a continuación están verificados contra una sesión en vivo de Scrapeless. Los detalles completos de conexión residen en la documentación de integración de Crawl4AI.
Instalar
Crawl4AI trae su propio soporte de Playwright/CDP, así que la integración no necesita paquetes de navegador adicionales.
bash
pip install crawl4ai python-dotenv
export SCRAPELESS_TOKEN=tu_token_api_aqui # clave gratuita en https://app.scrapeless.com
Configurar la conexión
El endpoint de Scrapeless es wss://browser.scrapeless.com/api/v2/browser, y cada opción es un parámetro de consulta. Construya la URL una vez y entréguesela a BrowserConfig.
python
import os
from urllib.parse import urlencode
def scrapeless_cdp_url() -> str:
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionName": "Crawl4AI",
"sessionTTL": 180000, # milisegundos
"proxyCountry": "US",
}
return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
Crawl básico a través del navegador en la nube
Establezca browser_mode="cdp" y pase cdp_url. Todo lo demás: el ciclo de vida del rastreador, CrawlerRunConfig, el resultado en markdown, es el estándar de Crawl4AI.
python
import asyncio
import os
from urllib.parse import urlencode
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig
def scrapeless_cdp_url() -> str:
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionName": "Crawl4AI",
"sessionTTL": 180000, # milisegundos
"proxyCountry": "US",
}
return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
async def main() -> None:
async with AsyncWebCrawler(
config=BrowserConfig(
headless=True,
browser_mode="cdp",
cdp_url=scrapeless_cdp_url(),
)
) as crawler:
result = await crawler.arun(
url="https://www.scrapeless.com/en",
config=CrawlerRunConfig(wait_for="css:body", scan_full_page=True),
)
print("status:", result.status_code)
print("title:", result.metadata.get("title"))
print("markdown chars:", len(result.markdown.raw_markdown))
asyncio.run(main())
Una ejecución en vivo de este crawl devolvió status: 200, el título de la página Toolkit de Web Scraping Sin Esfuerzo - Scrapeless, y más de 11,000 caracteres de markdown limpio, el mismo objeto de resultado que Crawl4AI produce localmente, obtenido a través del navegador en la nube.
Obtenga su clave API en el plan gratuito: app.scrapeless.com
Envíe una huella dactilar consistente
Un objeto fingerprint mantiene coherente la identidad publicitada del navegador: agente de usuario, plataforma, pantalla, idioma y zona horaria están de acuerdo, que es lo que verifican las puntuaciones anti-bot. Codifíquelo en JSON y luego páselo como un parámetro de consulta más. La especificación W3C WebDriver requiere que la automatización conforme establezca la bandera webdriver; el navegador en la nube no la lleva, por lo que una huella dactilar consistente no tiene ninguna indicación contradictoria a su lado.
python
import json
from urllib.parse import quote, urlencode
def fingerprint_cdp_url() -> str:
fingerprint = {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/126.0.0.0 Safari/537.36",
"platform": "Windows",
"screen": {"width": 1920, "height": 1080},
"localization": {"languages": ["en-US", "en"], "timezone": "America/New_York"},
}
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionTTL": 180000,
"fingerprint": quote(json.dumps(fingerprint)),
}
return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
Rotee el crawl a través de una región elegida
Cambia proxyCountry por un código de país ISO para seleccionar una salida residencial; una verificación contra un endpoint de eco de IP durante la verificación confirmó que la IP de salida era una dirección residencial de EE. UU. y navigator.webdriver se leyó como false.
python
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionTTL": 180000,
"proxyCountry": "DE", # o "US", "JP", "ANY"
}
Donde Chromium local se detiene
Ejecutar Crawl4AI en su propio Chromium está bien para páginas abiertas y desprotegidas. La fricción comienza cuando el objetivo puntúa el navegador: una aplicación renderizada por el cliente que nunca adjunta su contenido a un predeterminado sin cabeza, un intersticial de desafío que se detiene en una IP de centro de datos, o un muro de inicio de sesión que desea una identidad estable a través de las visitas. Cada uno de esos es un problema de huella dactilar, comportamiento o IP — exactamente los tres que el navegador en la nube maneja del lado del servidor. Mover el navegador a Scrapeless transfiere esos casos a una sesión administrada mientras sus llamadas arun() y estrategias de extracción permanecen idénticas.
Lo que recibe de vuelta
El resultado es el objeto estándar de Crawl4AI — status_code, metadata, markdown, links, media y cualquier extracción estructurada que configuró. Algunas observaciones sinceras de ejecutarlo a través del navegador en la nube:
navigator.webdriverestá ausente, por lo que la primera verificación que realiza un sitio se lee como un Chrome real.sessionTTLestá en milisegundos aquí — el modo CDP de Crawl4AI pasa el valor directamente, por lo que180000son tres minutos, no 180.- La IP de salida coincide con
proxyCountry— las páginas con geo-bloqueo se resuelven como las ve un visitante local. wait_foraún gobierna la preparación — usa una condición CSS (css:body, un selector de contenido) para quearun()lea la página después de que se adjunte la representación del cliente, no antes.
Conclusión: el mismo rastreador, navegador más limpio
Crawl4AI decide qué extraer; Scrapeless decide cómo se ve el navegador para el sitio. La integración son dos configuraciones: browser_mode="cdp" y un cdp_url — y el resto de tu pipeline permanece intacto. Fija proxyCountry a una región residencial, pasa un fingerprint coherente y reutiliza un profileId para rastreos autenticados. Para conectar otra biblioteca de scraping en Python al mismo navegador en la nube, consulta la guía de producción de Scrapling, y compara planes en la página de precios de Scrapeless.
¿Listo para construir tu pipeline de rastreo impulsado por IA?
Únete a nuestra comunidad para reclamar un plan gratuito y conectarte con desarrolladores que están construyendo pipelines de Crawl4AI: Discord · Telegram.
Regístrate en app.scrapeless.com para obtener un tiempo de ejecución gratuito del Navegador de Scraping y apunta el cdp_url de Crawl4AI al navegador en la nube que tus objetivos no pueden identificar.
Preguntas Frecuentes
P: ¿Tengo que cambiar mi código de extracción de Crawl4AI?
No. Cambias cómo se crea el navegador — browser_mode="cdp" más un cdp_url — y el ciclo de vida del rastreador, CrawlerRunConfig, las estrategias de extracción y la salida en markdown permanecen exactamente igual.
P: ¿Por qué no simplemente ejecutar Crawl4AI en Chromium local?
Chromium local se ejecuta en tu IP, anuncia automatización a través de navigator.webdriver, y necesitas mantener parches de sigilo. El navegador en la nube es una sesión administrada con salida residencial integrada y un fingerprint consistente — misma API de rastreador, sin el mantenimiento.
P: ¿Necesito un proxy?
No. La salida residencial está integrada — establece proxyCountry a una región o ANY. No hay un proxy separado que configurar.
P: ¿Es sessionTTL en segundos o milisegundos?
En el modo CDP de Crawl4AI, el valor se pasa como milisegundos, por lo que 180000 significa tres minutos. Establece un tiempo suficiente para cubrir el rastreo completo.
P: ¿Es legal el web scraping con Crawl4AI?
Acceder a datos públicamente disponibles generalmente está permitido, pero las reglas varían según la jurisdicción y el sitio. Revisa los términos de servicio del objetivo, respeta las directivas de robots, y consulta a un abogado para cualquier cosa sensible.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.



