Saltar al contenido principal

Headless Crawling




El headless crawling es la navegación automatizada de Internet y dominios individuales usando un navegador headless (sin cabeza), que es un navegador web sin interfaz gráfica de usuario. El headless crawling incluye muchos enfoques y métodos para extraer, almacenar, repasar y procesar datos. Los sitios web, las apps web y las características individuales de las webs además pueden probarse y comprobarse automáticamente. El headless crawling incluye superposiciones temáticas con temas como la recuperación de información, data mining, el scraping y la automatización de pruebas.

Información general

Hasta hace poco, Google recomendaba el uso de navegadores headless para rastrear webs dinámicas. Los operadores tenían que proporcionar una captura de pantalla HTML de su portal web, para que Google pudiera leer y examinar el contenido de la misma. El llamado esquema de rastreo/crawl AJAX ha quedado obsoleto y ya no se usa. En cambio, el contenido de la web se proporciona independientemente de la tecnología utilizada, incluyendo el dispositivo, el navegador y la conexión a Internet, lo que se conoce como mejora progresiva [1]. El headless crawling es esencialmente una parte de cualquier motor de búsqueda. El contenido de la Web se navega, pero no se renderiza o muestra al usuario de forma gráfica.

Lo que sucede con los datos detectados, es una cuestión de enfoque. No obstante, se supone que el motor de búsqueda de Google usa la capacidad de headless crawling desde 2004 y JavaScript ya no es un obstáculo desde octubre de 2015. Los motores de búsqueda pueden utilizar headless crawling para examinar sitios web. En la medida en que el crawler simula una llamada a un portal web con una interfaz no gráfica, los motores de búsqueda pueden sacar conclusiones de esta información y calificar los sitios web en función de su comportamiento en el navegador headless [2].

Cómo funciona

En el centro del headless crawling se encuentra el navegador headless, un programa que lee el contenido web, lo pasa a otros programas o lo muestra basado en texto en forma de archivos, listas y matrices. Este tipo de navegadores obtienen acceso a los sitios web por medio de su implementación en una infraestructura de servidor. Opcionalmente, se puede usar un servidor virtual o un servidor proxy. Desde allí, el navegador headless intenta tener acceso a una URL; éste es el punto de partida del procedimiento de crawling, que se inicia con una línea de comandos o un comando de script [3]. Dependiendo de la configuración, el navegador puede hallar más URLs. Los contenidos almacenados allí pueden ser procesados, inclusive la cuestión de las posiciones de link en el portal web es factible. No obstante, una interfaz API, que transfiere los datos al programa de tratamiento, es frecuentemente necesaria para este propósito.

Lo que hace que el headless crawling sea especial es la comunicación máquina a máquina (M2M). Tanto las URLs llamadas como el contenido web encontrado no se muestra al usuario final, como en el caso de los navegadores convencionales. En su lugar, el navegador headless reenvía los datos recuperados en formatos que deben definirse de antemano, pero que pueden procesarse automáticamente más tarde. Si se implementa de forma extensiva, un navegador headless puede manejar distintos lenguajes de programación, scripts y procesos gracias a una API que puede comunicarse con otros programas o infraestructuras por medio de de peticiones HTTP o TCP. Este principio se usa frecuentemente para extraer grandes cantidades de datos, lo que en última instancia plantea la cuestión de hasta qué punto es legal compilar y procesar dichos datos. En principio, los derechos de autor, los acuerdos de privacidad y la privacidad de los usuarios podrían ser violados [4]. Lo mismo se aplica a los portales de comparación de precios, motores de búsqueda y proveedores de meta-búsqueda.

Relevancia práctica

El headless crawling no sólo se aplica en los motores de búsqueda, sino además en otros casos de uso. Dos ejemplos:

  • Automatización de pruebas: La prueba/test de sitios web, items de sitios web y funciones es un uso común del headless crawling. Por ende, los enlaces rotos, los redireccionamientos, los items interactivos, los componentes individuales (unidades) y los módulos pueden ser comprobados en cuanto a su función. Se pueden probar las características de rendimiento y la generación de contenido de sitios web a partir de bases de datos. Con una implementación extensiva, los sitios web pueden ser probados de forma relativamente completa y, fundamentalmente, automatizados. De esta manera, los escenarios de prueba que usan el headless crawling van mucho más allá del mero test de un sistema en términos de caídas, errores del sistema y comportamiento no deseado. Los tests con headless crawling son similares a las pruebas de aceptación porque el navegador headless puede simular el comportamiento de los sitios web desde la perspectiva del usuario y, por ejemplo, los enlaces de clic [5]. No obstante, se requieren profundos conocimientos de programación y scripting para este escenario. Ya que las pruebas se realizan a petición del cliente o con un objeto de prueba elegido cuyos derechos pertenecen al propietario del sitio, la automatización de pruebas con headless crawling no suele ser objetable. Los navegadores headless conocidos con framework (API, soporte de lenguajes de programación o manejo de DOM) son Selenium, PhatnomJS o HtmlUnit. Por lo general, los navegadores headless usan un motor de diseño, que además está integrado en los navegadores convencionales y en los rastreadores de los motores de búsqueda. Ejemplos de motores de diseño son Webkit, Gecko o Trident.
  • Web Scraping: El scraping es una técnica de crawling, en la que se extraen los datos y se agregan para su uso posterior. A veces se recopilan, leen y procesan grandes cantidades de datos de una o más fuentes. El scraping puede ser perjudicial y se clasifica como tecnología de black-hat o cracker en muchos escenarios de uso. Los ataques de denegación de servicio (denial of service, DoS) y denegación de servicio distribuida (DDoS) usan el principio de headless crawling para tener acceso a un portal web o aplicación web [6]. Usualmente se usan algunos métodos ilegales, por ejemplo, para esconder la dirección IP (IP spoofing) para distraer del ataque real a la red o infiltrar la comunicación entre el servidor y varios clientes por medio de de TCP (hijacking).

Relevancia para la optimización de motores de búsqueda

El headless crawling es un aspecto importante de SEO. Como ya se ha mencionado, el principio es (muy probablemente) utilizado por varios motores de búsqueda para rastrear sitios web y apps web, inclusive si el esquema de crawl AJAX está obsoleto. Google recomienda en distintos puntos de las Directrices de calidad usar un navegador basado en texto, como Lynx, para representar los sitios web tal y como los ve Google. Se puede asumir que la capacidad de Google y de otros motores de búsqueda puede hacer mucho más que los navegadores basados en texto y lo que se comunica oficialmente. Por consiguiente, tendría sentido aprender headless crawling en detalle. Porque con este principio, los sitios web pueden ser probados a fondo y con esta perspectiva los SEOs pueden aventurarse a mirar detrás de las escenas del operador del motor de búsqueda, sin renunciar de vista a los usuarios.

Enlaces Web