> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/integrations/es/proxy-integrations/selenium.md).

# Selenium

Integra Selenium con Proxies de Oxylabs para automatización del navegador y más. Guías de configuración en Python y Java con ejemplos de código.

[**Selenium**](https://www.selenium.dev/) es una herramienta que ayuda a automatizar las interacciones del navegador web para pruebas de sitios web y más.

Mira nuestra guía en video o sigue los pasos a continuación para integrar Selenium [**Python**](#python-setup) o [**Java**](#how-to-integrate-proxies-with-selenium-using-java) con los siguientes Proxies de Oxylabs:

* **Proxies residenciales y Mobile Proxies**
* **Datacenter Proxies**
* **Dedicated Datacenter Proxies (Enterprise)**
* **Dedicated Datacenter Proxies (autoservicio)**
* **ISP Proxies**
* **Dedicated ISP Proxies**

{% embed url="<https://www.youtube.com/watch?v=uh71blwf1l0>" %}

## **Configuración de Python**

{% stepper %}
{% step %}

### Configuración de Selenium

Dado que usar el módulo predeterminado de Selenium para implementar proxies que requieren autenticación complica todo el proceso, instala [**Selenium Wire**](https://github.com/wkeeling/selenium-wire) para ampliar los enlaces de Python de Selenium usando `pip`:

```
pip install selenium-wire
```

Otro paquete recomendado para esta integración es `webdriver-manager`. Es un paquete que simplifica la gestión de controladores binarios para distintos navegadores:

```
pip install webdriver-manager
```

{% endstep %}

{% step %}

### Autenticación del proxy

Especifica el Proxy Endpoint elegido y las credenciales de la cuenta en el siguiente formato:

```python
USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "host:port"
```

Luego ajusta sus valores según el tipo de proxy de Oxylabs elegido:

* [Proxies residenciales y Mobile Proxies](#residential-and-mobile-proxies)
* [Datacenter Proxies](#datacenter-proxies)
* [Dedicated Datacenter Proxies (Enterprise)](#dedicated-datacenter-proxies-enterprise)
* [Dedicated Datacenter Proxies (autoservicio)](#dedicated-datacenter-proxies-self-service)
* [ISP Proxies](#isp-proxies)
* [Dedicated ISP Proxies](#dedicated-isp-proxies)

#### Proxies residenciales y Mobile Proxies

**Host:** `pr.oxylabs.io`

**Puerto:** `7777`

**Nombre de usuario:** `customer-USERNAME`

**Contraseña:** `PASSWORD`

{% hint style="warning" %}
**Nota:** No olvides añadir `customer-` prefijo a tu nombre de usuario.
{% endhint %}

También puedes usar parámetros adicionales con Residential Proxies y Mobile Proxies para establecer la geolocalización (país, estado, ciudad, etc.) y controlar las sesiones. Consulta la [documentación de Residential Proxies](/products/es/proxies/residential-proxies.md) para obtener más información.

#### Datacenter Proxies

**Host:** `dc.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `user-username`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

{% tabs %}
{% tab title="suscripción de pago por IP" %}
El puerto es el número secuencial asignado a una dirección IP del [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/datacenter-proxies/proxy-list.md). Así, el puerto `8001` usa la primera dirección IP de tu lista. También puedes habilitar [rotación automática de IP del proxy](/products/es/proxies/datacenter-proxies/ip-control.md) estableciendo el puerto en `8000`.

Además, puedes especificar el [geoubicación](/products/es/proxies/datacenter-proxies/select-country.md), por ejemplo, Estados Unidos, estableciendo el **nombre de usuario del proxy** en `user-USERNAME-country-US`.
{% endtab %}

{% tab title="suscripción de pago por tráfico" %}
El puerto `8001` elige una dirección IP aleatoria, pero se mantiene constante durante una sesión. Como alternativa, puedes [rotar las IP de proxy](/products/es/proxies/datacenter-proxies/ip-control.md) con cada solicitud usando el puerto `8000`.

Si quieres usar una [geoubicación](/products/es/proxies/datacenter-proxies/select-country.md), por ejemplo, EE. UU., establece el nombre de usuario del proxy en `user-USERNAME-country-US`.
{% endtab %}
{% endtabs %}

#### Dedicated Datacenter Proxies (Enterprise)

**Host:** `1.2.3.4` (dirección IP de tu [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md))

**Puerto:** `60000` (HTTP), `1180` (SOCKS5)

**Nombre de usuario:** `username`

**Contraseña:** `contraseña`

Para Dedicated Datacenter Proxies Enterprise (comprados a través del equipo de ventas), tendrás que elegir una dirección IP de la adquirida [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md).

#### Dedicated Datacenter Proxies (autoservicio)

**Host:** `ddc.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `user-username`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Para Dedicated Datacenter Proxies de autoservicio (comprados a través del panel de Oxylabs), el puerto indica el número secuencial de una dirección IP de la adquirida [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/self-service/proxy-list.md). Si quieres obtener una IP distinta con cada solicitud, cambia el Puerto a `8000` para habilitar [la rotación de proxy](/products/es/proxies/dedicated-datacenter-proxies/self-service/proxy-rotation.md).

#### ISP Proxies

**Host:** `isp.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `user-username`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Con ISP Proxies, el puerto se asigna a una dirección IP específica y su ubicación. Por lo tanto, el puerto `8001` siempre elegirá la primera IP de tu [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/isp-proxies/proxy-list.md). Si quieres obtener una IP distinta con cada solicitud, cambia el Puerto a `8000` para habilitar [la rotación de proxy](/products/es/proxies/isp-proxies/proxy-rotation.md).

#### Dedicated ISP Proxies

**Host:** `disp.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `user-username`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Necesitarás elegir el puerto asignado a una dirección IP de los Proxies comprados [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-isp-proxies/self-service/proxy-list.md), que puedes encontrar en el panel de Oxylabs. El `8001` puerto elegirá la primera dirección IP de tu lista para todas las solicitudes. Usa el puerto `8000` para la [rotación automática de IP del proxy](/products/es/proxies/dedicated-isp-proxies/self-service/proxy-rotation.md).
{% endstep %}

{% step %}

### Probando la conexión

Comprueba si el proxy funciona visitando [**ip.oxylabs.io**](https://ip.oxylabs.io/). Si todo funciona correctamente, devolverá la dirección IP de un proxy que estás usando.

```python
try:
    driver.get("https://ip.oxylabs.io/")
    return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
finally:
    driver.quit()
```

{% endstep %}

{% step %}

### Ejemplo de código

Código completo para la integración de Oxylabs Residential Proxies con Selenium:

```python
from selenium.webdriver.common.by import By
from seleniumwire import webdriver
# A package to have a chromedriver always up-to-date.
from webdriver_manager.chrome import ChromeDriverManager

USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "pr.oxylabs.io:7777"

def chrome_proxy(user: str, password: str, endpoint: str) -> dict:
    wire_options = {
        "proxy": {
            "http": f"http://{user}:{password}@{endpoint}",
            "https": f"https://{user}:{password}@{endpoint}",
        }
    }

    return wire_options

def execute_driver():
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    proxies = chrome_proxy(USERNAME, PASSWORD, ENDPOINT)
    driver = webdriver.Chrome(
    ChromeDriverManager(driver_version='<VERSION>').install(), options=options, seleniumwire_options=proxies
    )
    try:
        driver.get("https://ip.oxylabs.io/")
        return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
    finally:
        driver.quit()


if __name__ == '__main__':
    print(execute_driver())
```

{% endstep %}
{% endstepper %}

## Configuración de Java <a href="#how-to-integrate-proxies-with-selenium-using-java" id="how-to-integrate-proxies-with-selenium-using-java"></a>

### Prerrequisitos

1. **Kit de desarrollo de Java (JDK):** Versión 8 o superior (encuentra la versión más reciente [aquí](https://www.oracle.com/java/technologies/downloads/)).
2. **Herramienta de compilación:** Apache Maven (disponible [aquí](https://www.oracle.com/java/technologies/downloads/)).
3. **IDE de Java:** Cualquier IDE o CLI compatible con Maven.
4. **Navegador:** Google Chrome instalado localmente (disponible [aquí](https://www.google.com/chrome)).

Inicializa un proyecto Maven estándar en tu IDE o CLI preferido antes de añadir dependencias. Después de instalarlo, puedes verificar tus instalaciones de Java y Maven usando las siguientes líneas:

```
java -version
```

<img src="https://oxylabs.io/oxylabs-web/ZpA8dR5LeNNTxDst_4b72a4dd-3675-4391-b18d-bc2a85414588_java_version.png?auto=format%2Ccompress&#x26;w=3840&#x26;q=75" alt="" height="120" width="681">

```
mvn -v
```

<img src="https://oxylabs.io/oxylabs-web/ZpA8dh5LeNNTxDsu_94c7e32d-acd6-439c-8d60-f047c4de6195_maven_version.png?auto=format%2Ccompress&#x26;w=3840&#x26;q=75" alt="" height="123" width="763">

{% stepper %}
{% step %}

### Crea tu proyecto

Selecciona “Nuevo proyecto”, completa los detalles requeridos y selecciona Maven como sistema de compilación:

<img src="https://oxylabs.io/oxylabs-web/ZpA8dx5LeNNTxDsv_27754abb-a0c9-40af-ad7a-e82de9505fe6_maven1.png?auto=format%2Ccompress&#x26;w=3840&#x26;q=75" alt="" height="705" width="784">
{% endstep %}

{% step %}

### Añade dependencias

Añade las siguientes dependencias al archivo `pom.xml` de tu proyecto para incluir Selenium WebDriver, [BrowserMob Proxy](https://github.com/lightbody/browsermob-proxy) (para autenticación básica HTTP), y [WebDriverManager](https://github.com/bonigarcia/webdrivermanager):

```xml
<dependencies>
   <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
   <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>4.11.0</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/net.lightbody.bmp/browsermob-core -->
   <dependency>
       <groupId>net.lightbody.bmp</groupId>
       <artifactId>browsermob-core</artifactId>
       <version>2.1.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.7.32</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
   <dependency>
       <groupId>io.github.bonigarcia</groupId>
       <artifactId>webdrivermanager</artifactId>
       <version>5.5.2</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
   <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
       <version>32.1.2-jre</version>
   </dependency>

</dependencies>
```

{% endstep %}

{% step %}

### Añade el código fuente

Descarga las clases wrapper de proxy preconfiguradas desde el [Repositorio Java de Selenium de Oxylabs](https://github.com/oxylabs/selenium-proxy-integration-java/tree/main/src/main/java) y añádelas al directorio `src/main/java` :

* `ProxySetup.java`: Guarda los parámetros de tu Proxy Endpoint y las credenciales de la cuenta.
* `ProxyHelper.java`: Gestiona la inicialización de `BrowserMobProxyServer` , la autenticación básica y las opciones de `ChromeDriver` .
* `ProxyDemo.java`: Contiene la lógica de ejecución de ejemplo para solicitudes de proxy estándar y dirigidas por país.
  {% endstep %}

{% step %}

### Configura los proxies

Abre `ProxySetup.java` y actualiza los detalles del proxy según el tipo de proxy de Oxylabs elegido:

* [Proxies residenciales y Mobile Proxies](#residential-and-mobile-proxies-1)
* [Datacenter Proxies](#datacenter-proxies-1)
* [Dedicated Datacenter Proxies (Enterprise)](#dedicated-datacenter-proxies-enterprise-1)
* [Dedicated Datacenter Proxies (autoservicio)](#dedicated-datacenter-proxies-self-service-1)
* [ISP Proxies](#isp-proxies-1)
* [Dedicated ISP Proxies](#dedicated-isp-proxies-1)

#### Proxies residenciales y Mobile Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "pr.oxylabs.io:7777"; //host:port
    static final String USERNAME = "customer-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `pr.oxylabs.io`

**Puerto:** `7777`

**Nombre de usuario:** `customer-USERNAME`

**Contraseña:** `PASSWORD`

{% hint style="warning" %}
**Nota:** No olvides añadir `customer-` prefijo a tu nombre de usuario.
{% endhint %}

También puedes usar parámetros adicionales con Residential Proxies y Mobile Proxies para establecer la geolocalización (país, estado, ciudad, etc.) y controlar las sesiones. Consulta la [documentación de Residential Proxies](/products/es/proxies/residential-proxies.md) para obtener más información.

#### Datacenter Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "dc.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `dc.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `PASSWORD`

**Contraseña:** `PASSWORD`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

{% tabs %}
{% tab title="suscripción de pago por IP" %}
El puerto es el número secuencial asignado a una dirección IP del [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/datacenter-proxies/proxy-list.md). Así, el puerto `8001` usa la primera dirección IP de tu lista. También puedes habilitar [rotación automática de IP del proxy](/products/es/proxies/datacenter-proxies/ip-control.md) estableciendo el puerto en `8000`.

Además, puedes especificar el [geoubicación](/products/es/proxies/datacenter-proxies/select-country.md), por ejemplo, Estados Unidos, estableciendo el **nombre de usuario del proxy** en `user-USERNAME-country-US`.
{% endtab %}

{% tab title="suscripción de pago por tráfico" %}
El puerto `8001` elige una dirección IP aleatoria, pero se mantiene constante durante una sesión. Como alternativa, puedes [rotar las IP de proxy](/products/es/proxies/datacenter-proxies/ip-control.md) con cada solicitud usando el puerto `8000`.

Si quieres usar una [geoubicación](/products/es/proxies/datacenter-proxies/select-country.md), por ejemplo, EE. UU., establece el nombre de usuario del proxy en `user-USERNAME-country-US`.
{% endtab %}
{% endtabs %}

#### Dedicated Datacenter Proxies (Enterprise)

```java
final class ProxySetup {
    static final String ENDPOINT = "1.2.3.4:60000"; //host:port
    static final String USERNAME = "USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `1.2.3.4` (dirección IP de tu [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md))

**Puerto:** `60000` (HTTP), `1180` (SOCKS5)

**Nombre de usuario:** `USERNAME`

**Contraseña:** `PASSWORD`

Para Dedicated Datacenter Proxies Enterprise (comprados a través del equipo de ventas), tendrás que elegir una dirección IP de la adquirida [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md).

#### Dedicated Datacenter Proxies (autoservicio)

```java
final class ProxySetup {
    static final String ENDPOINT = "ddc.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `ddc.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `PASSWORD`

**Contraseña:** `PASSWORD`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Para Dedicated Datacenter Proxies de autoservicio (comprados a través del panel de Oxylabs), el puerto indica el número secuencial de una dirección IP de la adquirida [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/self-service/proxy-list.md). Si quieres obtener una IP distinta con cada solicitud, cambia el Puerto a `8000` para habilitar [la rotación de proxy](/products/es/proxies/dedicated-datacenter-proxies/self-service/proxy-rotation.md).

#### ISP Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "isp.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `isp.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `PASSWORD`

**Contraseña:** `PASSWORD`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Con ISP Proxies, el puerto se asigna a una dirección IP específica y su ubicación. Por lo tanto, el puerto `8001` siempre elegirá la primera IP de tu [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/isp-proxies/proxy-list.md). Si quieres obtener una IP distinta con cada solicitud, cambia el Puerto a `8000` para habilitar [la rotación de proxy](/products/es/proxies/isp-proxies/proxy-rotation.md).

#### Dedicated ISP Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "disp.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `disp.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `PASSWORD`

**Contraseña:** `PASSWORD`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Necesitarás elegir el puerto asignado a una dirección IP de los Proxies comprados [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-isp-proxies/self-service/proxy-list.md), que puedes encontrar en el panel de Oxylabs. El `8001` puerto elegirá la primera dirección IP de tu lista para todas las solicitudes. Usa el puerto `8000` para la [rotación automática de IP del proxy](/products/es/proxies/dedicated-isp-proxies/self-service/proxy-rotation.md).
{% endstep %}

{% step %}

### Ejecuta el script de integración

Ejecutar `ProxyDemo.java` directamente en tu IDE, o compila y ejecuta el archivo JAR empaquetado usando Maven desde la terminal:

```
mvn clean package
java -cp target/oxylabs-selenium-jar-with-dependencies.jar ProxyDemo
```

Al ejecutarse, `ProxyDemo` inicializa el controlador, enruta el tráfico a través del endpoint específico de Oxylabs mediante BrowserMob y muestra la dirección IP de salida resuelta.

Sin embargo, es posible que debas instalar los certificados adecuados para habilitar la compatibilidad con SSL y evitar las advertencias relacionadas con certificados que se tratan en el siguiente paso.
{% endstep %}

{% step %}

### Gestión del certificado SSL (opcional)

El código usa BrowserMob Proxy, que admite MITM completo. Sin embargo, aún podrías ver advertencias de certificado no válido.

#### Bypass programático (recomendado)

Pasa `--ignore-certificate-errors` mediante `ChromeOptions` en `ProxyHelper.java` para omitir la validación SSL durante la ejecución automatizada.

#### Instalación del certificado raíz

Importa el certificado raíz de BrowserMob ([ca-certificate-rsa.cer](https://github.com/oxylabs/selenium-proxy-integration-java/blob/main/certificates/ca-certificate-rsa.cer)) en el almacén de confianza de tu sistema operativo

* **macOS:** Arrastra `ca-certificate-rsa.cer` a *Acceso a Llaveros* > *sección Sistema* > *Certificados*, haz clic derecho y selecciona *Confiar siempre*.
* **Windows:** Haz doble clic en `ca-certificate-rsa.cer`, selecciona *Instalar certificado*, y establece el destino de importación en *Autoridades de certificación raíz de confianza*.
  {% endstep %}
  {% endstepper %}

Si quieres aprender más sobre web scraping con Selenium, lee nuestra [**entrada del blog**](https://oxylabs.io/blog/selenium-web-scraping).

Encuentra la publicación original del blog sobre la integración de Selenium [aquí](https://oxylabs.io/resources/integrations/selenium).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/integrations/es/proxy-integrations/selenium.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
