Volver al blog

Cómo configurar un proxy en Selenium Java para raspado web escalable

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

18-Dec-2025
Echa un vistazo rápido

Mejora tu automatización y raspado con Scrapeless Proxies: rápido, fiable y asequible.

Integrar proxies en tus proyectos de Selenium Java es un requisito fundamental para cualquier tarea seria de raspado web o automatización. Los proxies te permiten enmascarar tu dirección IP real, eludir restricciones geográficas y distribuir tus solicitudes para evitar limitaciones de tasa y prohibiciones de IP. Esta guía se centra en la forma estándar y más efectiva de configurar proxies en Selenium WebDriver usando Java.

Configuración de un proxy utilizando ChromeOptions

El método más común y fiable para establecer un proxy en Selenium Java es configurando las opciones del navegador antes de inicializar el WebDriver. Esto implica crear un objeto Proxy y pasarlo al ChromeOptions (o equivalente para otros navegadores como Firefox).

El objeto Proxy se utiliza para definir la dirección del servidor proxy para el tráfico HTTP y SSL.

java Copy
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import io.github.bonigarcia.wdm.WebDriverManager;

public class Scraper {
    public static void main(String[] args) {
        // 1. Configurar WebDriver (usando WebDriverManager por conveniencia)
        WebDriverManager.chromedriver().setup();

        // 2. Definir los detalles del proxy (IP:PUERTO)
        String proxyAddress = "184.169.154.119:80";

        // 3. Crear un objeto Proxy y establecer los proxies HTTP y SSL
        Proxy proxy = new Proxy();
        proxy.setHttpProxy(proxyAddress);
        proxy.setSslProxy(proxyAddress);

        // 4. Crear una instancia de ChromeOptions y establecer las opciones del proxy
        ChromeOptions options = new ChromeOptions();
        options.setProxy(proxy);
        options.addArguments("--headless=new"); // Opcional: ejecutar en modo sin cabeza

        // 5. Crear una instancia del driver con las opciones configuradas
        WebDriver driver = new ChromeDriver(options);

        // 6. Navegar a una URL de prueba
        driver.get("https://httpbin.io/ip");
        
        // ... resto de tu lógica de raspado
        driver.quit();
    }
}

Implementación de rotación de proxies en Java

Para raspados a gran escala, debes rotar tus direcciones IP para evitar que tus solicitudes se marquen como tráfico de bot. En Java, esto se logra manteniendo una lista de proxies y seleccionando uno al azar para cada nueva sesión de WebDriver. Este enfoque es muy efectivo para distribuir la carga y mantener un perfil bajo [3].

java Copy
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
// ... otras importaciones

public class RotatingScraper {
    public static void main(String[] args) {
        // ... configuración del WebDriver

        // 1. Definir una lista de direcciones proxy (IP:PUERTO)
        List<String> proxyList = new ArrayList<>();
        proxyList.add("190.61.88.147:8080");
        proxyList.add("13.231.166.96:80");
        proxyList.add("35.213.91.45:80");

        // 2. Seleccionar aleatoriamente un proxy para la sesión
        Random rand = new Random();
        String proxyAddress = proxyList.get(rand.nextInt(proxyList.size()));

        // 3. Configurar el objeto Proxy con la dirección seleccionada aleatoriamente
        Proxy proxy = new Proxy();
        proxy.setHttpProxy(proxyAddress);
        proxy.setSslProxy(proxyAddress);

        // 4. Establecer las opciones del proxy en ChromeOptions
        ChromeOptions options = new ChromeOptions();
        options.setProxy(proxy);
        // ... otras opciones

        // 5. Crear una instancia del driver
        WebDriver driver = new ChromeDriver(options);
        // ... lógica de raspado
    }
}

Manejo de proxies autenticados

Para proxies premium que requieren un nombre de usuario y una contraseña, el objeto Proxy estándar por sí solo es insuficiente. Selenium no maneja nativamente la ventana emergente de autenticación que aparece en el navegador. Las soluciones más comunes incluyen:

  1. Uso de una extensión de proxy: Emplear una extensión del navegador que maneje la autenticación proxy y preconfigure las credenciales.
  2. Uso de un administrador de proxies: Utilizar un administrador o gateway de proxies (como el proporcionado por Scrapeless) que maneje la autenticación del lado del servidor, permitiéndote conectarte utilizando un simple punto final IP:PUERTO.

Solución de Proxy Recomendada: Scrapeless Proxies

Copy
Para el raspado web profesional basado en Java, la calidad de su red de proxies es primordial. Los Proxies de Scrapeless están diseñados para proporcionar la velocidad, confiabilidad y anonimato requeridos para operaciones a gran escala con Selenium.

Los **Proxies Residenciales** de Scrapeless son altamente recomendados para proyectos de Selenium en Java, ya que proporcionan direcciones IP reales que son mucho menos propensas a ser detectadas y bloqueadas por sistemas avanzados de anti-bots. Además, sus **Proxies de ISP Estáticos** ofrecen el equilibrio perfecto entre confianza residencial y velocidad constante, lo cual es ideal para mantener un entorno de raspado estable. Al utilizar un servicio como Scrapeless, puede asegurarse de que su <a href="https://www.scrapeless.com/es/wiki/scrapeless-browser-full-guide-2026" rel="nofollow">**navegador de raspado**</a> siempre esté operando con una IP limpia y de alta reputación.

<div style="padding: 20px 0; text-align: center;">
  <a
    style="
      margin: 8px;
      display: inline-block;
      text-decoration: none;
    "
    href="https://www.goproxy.com/register?link=https://app.scrapeless.com/passport/login?utm_source=official&utm_medium=blog&utm_campaign=nebula-proxy"
  >
    <div
      style="
        font-weight: bold;
        width: 100%;
        max-width: 400px;
        padding: 12px 40px;
        background: #12A594;
        border-radius: 5px;
        border: 2px solid #12A594;
        color: #fff;
        cursor: pointer;
        box-sizing: border-box;
        font-size: 18px;
      "
    >
      Prueba Gratis &gt;
    </div>
  </a>
</div>

### Preguntas Frecuentes (FAQ)

**P: ¿Puedo usar las propiedades del sistema Java para configurar el proxy para Selenium?**
R: Si bien puede establecer propiedades del sistema como `System.setProperty("http.proxyHost", "...")`, esto solo afecta la pila de red subyacente de Java y **NO** el navegador controlado por Selenium. Debe utilizar el objeto `Proxy` con `ChromeOptions` para configurar la configuración de red del navegador.

**P: ¿Cuál es la diferencia entre la configuración de proxy HTTP y SSL en el objeto `Proxy`?**
R: El método `setHttpProxy()` configura el proxy para el tráfico HTTP estándar, mientras que `setSslProxy()` lo configura para el tráfico HTTPS seguro (SSL/TLS). Es una buena práctica establecer ambos a la misma dirección de proxy para asegurar que todo el tráfico se enruté correctamente.

**P: ¿Es mejor usar una extensión de proxy o un gestor de proxy para la autenticación?**
R: Un gestor de proxy o gateway es generalmente preferido para el raspado a gran escala y en producción. Centraliza la autenticación y la lógica de rotación fuera de su código de Selenium, haciendo que su script de raspado sea más limpio y más robusto contra cambios.

***

# Referencias

[1] <a href="https://www.gnu.org/software/wget/manual/html_node/Wgetrc-File.html" rel="nofollow">**Manual de GNU Wget: Archivo Wgetrc**</a>
[2] <a href="https://www.geeksforgeeks.org/web-scraping-using-wget/" rel="nofollow">**GeeksforGeeks: Raspado Web usando Wget**</a>
[3] <a href="https://www.selenium.dev/documentation/webdriver/getting_started/install_libs/" rel="nofollow">**Documentación de Selenium: Instalando Bibliotecas**</a>
[4] <a href="https://www.oracle.com/java/technologies/javase/proxy.html" rel="nofollow">**Oracle Java Networking y Proxies**</a>
[5] <a href="https://www.baeldung.com/java-selenium-proxy" rel="nofollow">**Baeldung: Selenium con Proxy en Java**</a>
[6] <a href="https://www.w3.org/TR/WD-proxy-req" rel="nofollow">**Borrador de Trabajo de W3C: Requisitos de Proxy**</a>
[7] <a href="https://www.scrapeless.com/es/wiki/what-is-headless-browser" rel="nofollow">**Wiki de Scrapeless: ¿Qué es un Navegador Sin Cabeza?**</a>
[8] <a href="https://www.scrapeless.com/es/wiki/best-web-scraping-services-with-the-fastest-headless-browsers" rel="nofollow">**Wiki de Scrapeless: Mejores Servicios de Raspado Web**</a>
[9] <a href="https://www.scrapeless.com/es/wiki/web-scraping-with-lxml" rel="nofollow">**Wiki de Scrapeless: Raspado Web con LXML**</a>
[10] <a href="https://www.scrapeless.com/es/wiki/recommended-free-automated-data-collection-tools" rel="nofollow">**Wiki de Scrapeless: Herramientas Recomendadas de Recolección de Datos Automatizada Gratis**</a>
[11] <a href="https://www.scrapeless.com/es/wiki/scrapeless-browser-full-guide-2026" rel="nofollow">**Wiki de Scrapeless: Guía Completa del Navegador Scrapeless**</a>

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.

Artículos más populares

Catalogar