# Headless Browser

Headless Browser te permite ejecutar y controlar una experiencia de navegación headless remota sin la complejidad de administrarla localmente o en tu propia infraestructura. Ofrece una forma sencilla de ejecutar automatización basada en navegador, pruebas y web scraping sin lidiar con la configuración del navegador, las limitaciones de recursos ni los desafíos de detección.&#x20;

### Bibliotecas compatibles

Headless Browser funciona con cualquier biblioteca que admita el **Chrome DevTools Protocol (CDP)**. Esto incluye:

* [Playwright](https://playwright.dev/) (para Firefox, las versiones compatibles de Playwright son 1.51 y 1.56)
* [Puppeteer](https://pptr.dev/)
* Otros marcos de automatización compatibles con CDP

### Opciones del navegador

Headless Browser ofrece dos entornos de navegador especializados:

* [Navegador basado en Chrome](https://developers.oxylabs.io/scraping-solutions/headless-browser/chrome) – navegadores remotos de alto rendimiento con stealth avanzado, ejecutados en servidores dedicados con proxies integrados
* [Navegador basado en Firefox](https://developers.oxylabs.io/scraping-solutions/headless-browser/firefox) (Obsoleto) - implementación de Firefox con funciones anti-detección integradas e integración de proxy. Ten en cuenta que este entorno quedará obsoleto pronto.

Además, Headless Browser permite dos funcionalidades relacionadas con la ubicación:

* Optimización del rendimiento para usuarios en EE. UU.,
* Parámetros de geolocalización para segmentación a nivel de país, ciudad y estado.

### **Límites de tasa**

Cada uno tiene **100 sesiones concurrentes** y puede iniciar hasta **10 sesiones por segundo para cada navegador** (Chrome y Firefox). Esto garantiza la estabilidad y el rendimiento del servicio.

Para solicitar un límite mayor para tu cuenta, contacta con el soporte al cliente de Oxylabs vía [chat en vivo](https://oxylabs.drift.click/oxybot) o [correo electrónico](mailto:support@oxylabs.io).

### Ejemplos de inicio rápido

{% tabs %}
{% tab title="Python" %}

```python
from playwright.sync_api import sync_playwright

username = "your-username"
password = "your-password"
endpoint = "ubc.oxylabs.io"
browser_url = f"wss://{username}:{password}@{endpoint}"

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(browser_url)
    page = browser.new_page()
    page.goto('https://example.com')
    print(page.title())
    browser.close()
```

{% endtab %}

{% tab title="JavaScript (Playwright)" %}

```javascript
import { chromium } from 'playwright';

(async () => {
    const username = 'your-username';
    const password = 'your-password';
    const endpoint = 'ubc.oxylabs.io';
    const browserUrl = `wss://${username}:${password}@${endpoint}`;

    const browser = await chromium.connectOverCDP(browserUrl);
    const page = await browser.newPage();
    await page.goto('https://example.com');
    console.log(await page.title());
    await browser.close();
})();
```

{% endtab %}

{% tab title="JavaScript (Puppeteer)" %}

```javascript
import puppeteer from 'puppeteer';

(async () => {
  const username = 'your-username';
  const password = 'your-password';
  const endpoint = 'ubc.oxylabs.io';
  const browserUrl = `wss://${username}:${password}@${endpoint}`;

  const browser = await puppeteer.connect({
    browserWSEndpoint: browserUrl
  });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  console.log(await page.title());
  await browser.close();
})();
```

{% endtab %}
{% endtabs %}

Consulta la documentación específica del navegador para obtener opciones detalladas de configuración:

* [Navegador basado en Chrome](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/headless-browser/chrome)
* [Navegador basado en Firefox](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/headless-browser/firefox) (Obsoleto)
