Cómo configurar un proxy en Selenium Java para raspado web escalable
Advanced Data Extraction Specialist
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
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
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:
- Uso de una extensión de proxy: Emplear una extensión del navegador que maneje la autenticación proxy y preconfigure las credenciales.
- 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
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 >
</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.



