🎁 Descuento sorpresa: ¡Disfrute del 90 % de descuento en su suscripción!

  • Precios
  • Documentación
ES
Contacto

© 2025 NST LABS TECH LTD. ALL RIGHTS RESERVED

Producto

Navegador antihuellas
Nstbrowser RPA
Omisión de Cloudflare
Browserless
Desbloqueador web

Solución

Navegador antihuellas basado en la nube
Gestión de múltiples cuentas
Raspado web
Detección anti-bots

Recurso

Precios
Descargar
Mercado de RPA
programa de afiliación
Socios
Blog
Notas de lanzamiento

Apoyo

Contacto

Documentación

Legal

Términos
política de privacidad
Política de cookies

ProductoSoluciónRecursoApoyoLegal

ProductoSoluciónRecurso

ApoyoLegal

© 2025 NST LABS TECH LTD. ALL RIGHTS RESERVED

Volver a Blog
headlesschrome
Headless Browser

Headless Browser: ¿Cómo ejecutarlo en Playwright?

¿Qué es un headlesschrome? ¿Y sus ventajas y desventajas? En este blog, podemos encontrar toda la información al respecto y aprender a utilizar Nstbrowserless para hacer web scraping.
Jul 16, 2024Carlos Rivera

Los navegadores tradicionales con interfaz gráfica de usuario (GUI) suelen consumir muchos recursos del sistema cuando la carga de trabajo aumenta. Además, necesitan una ventana visible para renderizar las páginas web, lo que ralentiza la ejecución de las pruebas y limita la escalabilidad.

Un navegador sin cabeza (headless) es una herramienta que puede extraer contenido dinámico sin necesidad de un navegador visible.

Puede resolver el problema de las pruebas intensivas en recursos, mejorando así la eficiencia de la ejecución de las pruebas y la escalabilidad.

¿Cómo se ejecuta un navegador sin cabeza en Python y Selenium?

¡Vamos a comenzar a leer este artículo!

¿Qué es Python Headlesschrome?

Un navegador es un programa informático que permite a los usuarios navegar e interactuar con páginas web. Por otro lado, un navegador sin cabeza no tiene una interfaz gráfica de usuario. ¿Qué puede hacer entonces? ¿Hay mucha diferencia? ¡Sí! Esta característica ayuda a Python headlesschrome a:

  • Navegar por cualquier sitio web en Internet.
  • Renderizar los archivos JavaScript proporcionados por el sitio web.
  • Interactuar con los componentes de esa página web.

¡Oh, espera! Podrías preguntarte cómo interactuamos con un navegador sin cabeza. ¡No hay GUI!

No te preocupes. Déjame mostrarte Web Driver.

Otra pregunta— ¿Qué es eso? Web Driver es un marco que nos permite controlar varios navegadores web mediante programación.

¿Algún ejemplo típico? Sí, todos conocemos Selenium. Lo usamos con frecuencia, pero ¿sabías que también es un importante navegador sin cabeza?

Ventajas de Python Headlesschrome:

  1. Automatización de tareas. Los navegadores sin cabeza pueden ejecutar automáticamente operaciones del navegador, como hacer clic, completar formularios, enviar, etc. Ideal para pruebas automatizadas y automatización de tareas.
  2. Uso de menos almacenamiento. No necesita dibujar elementos gráficos del navegador y el sitio web.
  3. Muy rápido. Los navegadores sin cabeza no necesitan esperar a que la página se cargue completamente, lo que puede acelerar significativamente el proceso de extracción.
  4. Simulación del comportamiento real del usuario. Puede simular el entorno y comportamiento del navegador del usuario, lo que ayuda a evitar la detección de robots.
  5. Flexibilidad. Puede controlar fácilmente el comportamiento del navegador mediante programación, como configurar encabezados de solicitud, manejar cookies, manejar elementos de página, etc. Esto es muy útil para la recopilación de datos o manipulación complejas.
  6. Altamente adaptable. Los navegadores sin cabeza pueden manejar varios sitios web y contenido dinámico, como aplicaciones de una sola página (SPA) o páginas que requieren renderización de JavaScript.

Desventajas de Python Headlesschrome:

  1. Falta de visualización para depuración y pruebas. El navegador sin cabeza no renderiza la página durante la ejecución de pruebas, lo que hace que la depuración y pruebas visuales sean más difíciles.
  2. Problemas de estabilidad y confiabilidad. Debe manejarse en tiempo real debido a los cambios en la estructura del sitio web o problemas de red.
  3. Mantenimiento y actualización. Dependiendo de bibliotecas de terceros y actualizaciones de la versión del navegador, es posible que deba actualizar el código periódicamente para adaptarse a nuevas funciones del navegador o corregir vulnerabilidades.
  4. Medidas anti-raspado. Los sitios web siempre detectarán y bloquearán el acceso automático. Por lo tanto, debes tomar algunas medidas de detección de robots, como configurar encabezados de solicitud adecuados, simular el comportamiento humano, etc.

¡Nstbrowser puede simular altamente el comportamiento humano para evitar la detección de robots y desbloquear sitios web!
¡Prueba gratuita ahora!

¿Tienes ideas y dudas interesantes sobre el web scraping y el Browserless?
¡Veamos qué comparten otros desarrolladores en Discord y Telegram!

6 Navegadores sin cabeza compatibles con Python Selenium

¡Selenium es muy poderoso! ¿Cuántos navegadores sin cabeza soporta? ¡Vamos a averiguar ahora los 6! Principalmente se controlan y operan a través de Web Driver.

  • Chrome
  • Firefox
  • Edge
  • Safari
  • Opera
  • Chromium

Las 3 mejores alternativas a Python headlesschrome

¡Python Selenium headlesschrome no es el único navegador sin cabeza!

Veamos otras alternativas. Algunas solo proporcionan un lenguaje de programación, mientras que otras pueden proporcionar enlaces a varios lenguajes.

1. Puppeteer

Puppeteer es una biblioteca de Node.js desarrollada por Google. Proporciona una API de alto nivel para controlar navegadores Chrome o Chromium sin cabeza. Puppeteer ofrece potentes funciones para automatizar tareas del navegador, generar capturas de pantalla y PDF, y ejecutar código JavaScript en páginas web.

2. Playwright

Playwright es otra herramienta de automatización web desarrollada por contribuyentes de Microsoft. Esencialmente, también es una biblioteca de Node.js para la automatización del navegador, pero proporciona API para otros lenguajes (como Python, .NET y Java). En comparación con Python Selenium, es relativamente rápido.

3. Nstbrowser

¿Qué es Nstbrowser?

Nstbrowser es un navegador anti-detección completamente gratuito. Implementa la extracción web en la nube en modo sin cabeza, sin estar limitado por recursos locales. Realiza fácilmente la extracción web y los procesos de automatización.

  • Ejecuta fácilmente tareas de concurrencia a gran escala, ahorrando recursos y tiempo de manera efectiva.
  • Ejecuta cualquier script y usa el navegador sin cabeza para realizar operaciones complejas del navegador o tareas de extracción web.
  • Rastrea el uso de RAM, CPU y GPU para garantizar que el navegador consuma recursos adecuados.
  • Responde a picos de tráfico mediante la asignación dinámica de recursos para equilibrar y escalar la carga.
  • Proporciona instancias de servidor dedicadas, disfrutando de un rendimiento superior, opciones de configuración más flexibles y mejor aislamiento.

¿Cómo usar Nstbrowserless para lograr el modo sin cabeza?

A continuación, se muestra cómo usar Nstbrowserless para ejecutar el navegador anti-detección Nstbrowser en un contenedor Docker y configurar el modo sin cabeza para extraer datos de la página de inicio de TikTok Explorar, específicamente los avatares de los usuarios:

Paso 1: Análisis de página

  • Ingresa a la página de inicio de TikTok.
  • Abre la página de elementos de la consola.
  • Ubica el elemento de la página Explorar.

Luego, puedes descubrir que el elemento es una etiqueta de enlace a con el atributo data-e2e="nav-explore".

Análisis de página

Al hacer clic en el elemento Explorar, descubrimos que la página no tiene avatares de usuario, solo podemos obtener los apodos de los usuarios.

¿Por qué es así?

Esto se debe a que necesitamos hacer clic en el apodo para ingresar a la página de inicio del usuario y obtener el avatar del usuario.

Entonces, debemos ingresar a la página de inicio de cada usuario y luego encontrar el elemento data-e2e="explore-item-list", que es la lista dinámica de usuarios:

Análisis de página

Ahora, necesitamos realizar un análisis adicional.

En el elemento div bajo la lista, hay un elemento con el atributo data-e2e="explore-card-desc", que contiene una etiqueta a con el atributo data-e2e="explore-card-user-link".

El valor del atributo href de la etiqueta a es el ID del usuario, y al agregar el prefijo del dominio de TikTok, obtenemos la página de inicio del usuario.

Vamos a la página de inicio del usuario y continuamos el análisis:

Luego podemos encontrar un elemento div[data-e2e="user-page"] con el atributo div[data-e2e="user-avatar"], el avatar del usuario es el valor del atributo src del elemento span img img dentro del.

A continuación, es hora de usar Nstbrowserless para obtener los datos que queremos.

Paso 2: Antes de usar Nstbrowserless, primero debes instalar y ejecutar Docker.

Shell Copy
# Extraer imagen
docker pull nstbrowser/browserless:0.0.1-beta
# Ejecutar nstbrowserless
docker run -it -e TOKEN=xxx -e SERVER_PORT=8848 -p 8848:8848 --name nstbrowserless nstbrowser/browserless:0.0.1-beta

Paso 3. Codificación (Python-Playwright) y configuración del modo sin cabeza.

Python Copy
import json
from urllib.parse import urlencode

from playwright.async_api import async_playwright


async def main():
    async with async_playwright() as playwright:
        config = {
            "once": True,
            "headless": True,  # configurar modo sin cabeza
            "autoClose": True,
            "args": {"--disable-gpu": "", "--no-sandbox": ""},  # los argumentos del navegador deben ser un diccionario
            "fingerprint": {
                "name": 'tiktok_scraper',
                "platform": 'windows',  # soporte: windows, mac, linux
                "kernel": 'chromium',  # solo soporte: chromium
                "kernelMilestone": '120',
                "hardwareConcurrency": 8,  # soporte: 2, 4, 8, 10, 12, 14, 16
                "deviceMemory": 8,  # soporte: 2, 4, 8
            },
        }
        query = {'config': json.dumps(config)}
        profileUrl = f"ws://127.0.0.1:8848/ws/connect?{urlencode(query)}"
        print("Profile URL: ", profileUrl)
        browser = await playwright.chromium.connect_over_cdp(endpoint_url=profileUrl)
        try:
            page = await browser.new_page()
            await page.goto("chrome://version")
            await page.wait_for_load_state('networkidle')
            await page.screenshot(path="chrome_version.png")
        finally:
            await browser.close()


if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

Ejecuta el código anterior y luego podrás obtener la siguiente información en la página de versión de chrome:

resultados

El parámetro --headless en el comando de inicio del kernel indica que el kernel se está ejecutando en modo sin cabeza.

Código de raspado de datos:

Python Copy
import json
from urllib.parse import urlencode

from playwright.async_api import async_playwright


async def scrape_user_profile(browser, user_home_page):
    # ir a la página de inicio del usuario y extraer el avatar del usuario
    user_page = await browser.new_page()
    try:
        await user_page.goto(user_home_page)
        await user_page.wait_for_load_state('networkidle')
        user_avatar_element = await user_page.query_selector(
            'div[data-e2e="user-page"] div[data-e2e="user-avatar"] span img')
        if user_avatar_element:
            user_avatar = await user_avatar_element.get_attribute('src')
            if user_avatar:
                print(user_avatar)
                # TODO
    finally:
        await user_page.close()


async def main():
    async with async_playwright() as playwright:
        config = {
            "once": True,
            "headless": True,  # soporte: verdadero o falso
            "autoClose": True,
            "args": {"--disable-gpu": "", "--no-sandbox": ""},  # los argumentos del navegador deben ser un diccionario
            "fingerprint": {
                "name": 'tiktok_scraper',
                "platform": 'windows',  # soporte: windows, mac, linux
                "kernel": 'chromium',  # solo soporte: chromium
                "kernelMilestone": '120',
                "hardwareConcurrency": 8,  # soporte: 2, 4, 8, 10, 12, 14, 16
                "deviceMemory": 8,  # soporte: 2, 4, 8
            },
            "proxy": "",  # establece un proxy adecuado si no puedes explorar el sitio web de TikTok
        }
        query = {
            'config': json.dumps(config)
        }
        profile_url = f"ws://127.0.0.1:8848/ws/connect?{urlencode(query)}"
        browser = await playwright.chromium.connect_over_cdp(endpoint_url=profile_url)
        tiktok_url = "https://www.tiktok.com"
        try:
            page = await browser.new_page()
            await page.goto(tiktok_url)
            await page.wait_for_load_state('networkidle')
            explore_elem = await page.query_selector('[data-e2e="nav-explore"]')
            if explore_elem:
                await explore_elem.click()
                ul_element = await page.query_selector('[data-e2e="explore-item-list"]')
                if ul_element:
                    li_elements = await ul_element.query_selector_all('div')
                    tasks = []
                    for li in li_elements:
                        # encontrar enlaces a la página de inicio del usuario
                        a_element = await li.query_selector('[data-e2e="explore-card-desc"]')
                        if a_element:
                            user_link = await li.query_selector('a[data-e2e="explore-card-user-link"]')
                            if user_link:
                                href = await user_link.get_attribute('href')
                                if href:
                                    tasks.append(scrape_user_profile(browser, tiktok_url + href))
                    await asyncio.gather(*tasks)
        finally:
            await browser.close()


if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

Ejecuta el programa:

Ejecuta el programa

Hasta ahora, hemos completado la captura de los datos del avatar de los usuarios en la página de Exploración de la página de inicio de TikTok usando Python-Playwright a través de Nstbrowserless.

Conclusión

Los navegadores sin cabeza tienen funciones poderosas y métodos de uso convenientes. Pueden completar fácilmente y rápidamente tareas de raspado web y automatización.

En este artículo, aprendimos:

  1. ¿Qué es Python headlesschrome?
  2. Las ventajas y desventajas de Python headlesschrome.
  3. Cómo usar Nstbrowserless para un raspado web rápido y eficiente.

¡Comienza a usar el Nstbrowser gratuito ahora para hacer todo el trabajo!

Más
Cómo usar Browserless de Nstbrowser para resolver automáticamente Cloudflare Turnstile (2025)
BrowserlessCloudflare BypassHeadless Browser
Cómo usar Browserless de Nstbrowser para resolver automáticamente Cloudflare Turnstile (2025)
Aprenda a omitir Cloudflare Turnstile usando el servicio Browserless de Nstbrowser y Puppeteer. Esta guía le guiará a través de la configuración, la implementación y las ventajas de automatizar tareas de raspado web garantizando el cumplimiento y la eficiencia.
Mar 07, 2025Robin Brown
Cómo usar Browserless de Nstbrowser para evitar el desafío Cloudflare de 5 segundos (2025)
BrowserlessCloudflare BypassHeadless Browser
Cómo usar Browserless de Nstbrowser para evitar el desafío Cloudflare de 5 segundos (2025)
Aprenda a omitir el desafío de 5 segundos de Cloudflare usando el servicio Browserless de Nstbrowser y Puppeteer. Esta guía le guiará a través de la configuración, la implementación y las ventajas de automatizar tareas de raspado web garantizando el cumplimiento y la eficiencia.
Mar 06, 2025Robin Brown
Usa el docker de Nstbrowser para likes automáticos de TikTok
Headless Browser
Cómo usar Nstbrowser docker para hacer clic automático en "me gusta" de TikTok
Este tutorial demuestra cómo usar Nstbrowser docker para hacer clic automático en "me gusta" de TikTok.
Jan 08, 2025Carlos Rivera
docker-extrae-youtube
Headless Browser
Cómo usar Nstbrowser docker para rastrear videos de YouTube?
Este tutorial usa la imagen Docker Nstbrowser para demostrar cómo rastrear enlaces de videos de YouTube
Jan 08, 2025Carlos Rivera
navegador sin cabeza, browserless
Headless Browser
Prueba de navegador sin cabeza: ¿Qué es y cómo hacerlo?
Las pruebas de navegador sin cabeza son una forma más rápida, confiable y eficiente de probar aplicaciones web en navegadores. Lea este blog y encuentre la guía detallada sobre las pruebas de navegador sin cabeza.
Sep 12, 2024Robin Brown
headlesschrome
Headless Browser
Headless Browser: ¿Cómo ejecutarlo en Puppeteer?
¡El web scraping es fácil con headlesschrome! ¿Qué es un navegador sin cabeza? ¿Por qué Puppeteer es adecuado para el web scraping? Descubra información específica de este tutorial.
Jul 18, 2024Carlos Rivera
Catálogo