Proyecto flexible de automatización web y scraping que soporta múltiples drivers configurables con capacidades anti-detección. Diseñado para pruebas E2E, automatización de tareas web y scraping avanzado.
- Múltiples Drivers Configurables: SeleniumBase (CDP), Brave Browser, Undetectable Chrome y Incogniton
- Anti-Detección: Drivers optimizados para evitar detección de bots
- Comportamiento Humano: Delays aleatorios, escritura gradual y movimientos de mouse naturales
- Emulación Móvil: Soporte para eventos táctiles y comportamiento móvil
- Gestión de Proxies: Soporte SOCKS5 integrado
- API Consistente: Misma interfaz independientemente del driver subyacente
pip install seleniumbase selenium incogniton- Brave Browser: Instalación local requerida para SeleniumBase con CDP
- ChromeDriver: Necesario para Undetectable Chrome
- Incogniton: Cliente de Incogniton activo con perfiles configurados
- Undetectable: Cliente de Undetectable activo con perfiles configurados
from driver import CustomDriver
# SeleniumBase con Brave (CDP)
driver = CustomDriver(
browser_options={"type": "seleniumbase"}
)
# Undetectable
driver = CustomDriver(
browser_options={"type": "undetectable", "mobile_emulation": False}
)
# Incogniton (con selección de perfil)
driver = CustomDriver(
browser_options={"type": "incogniton", "mobile_emulation": False}
)driver = CustomDriver(
proxy="192.168.1.1:1080", # Formato IP:Puerto
browser_options={"type": "seleniumbase"}
)driver = CustomDriver(
type_speed=1.0, # Velocidad de escritura (multiplicador)
wait_speed=0.5, # Tiempo adicional entre acciones
typeSlowly=True, # Escribir carácter por carácter
browser_options={"type": "seleniumbase", "mobile_emulation": False}
)# Navegar a URL
driver.get("https://example.com")
# Obtener URL actual
current_url = driver.get_current_url()
# Cambiar a nueva pestaña
driver.change_to_new_tab()# Click en elemento
driver.click("#submit-button")
driver.click("//button[text()='Submit']", scroll=True)
# Escribir texto
driver.type("#email", "user@example.com")
driver.type("#password", "secret123", clickOutside=False)
# Seleccionar opción en dropdown
driver.select_option_by_value("#country", "US")# Esperar elemento clickeable
element = driver.wait_for_clickable_element("#button", timeout=20)
# Esperar elemento visible
element = driver.wait_for_visible_element(".popup")
# Obtener elemento
element = driver.getElement("#content")
# Esperar que elemento desaparezca
driver.wait_for_element_to_disappear(".loading-spinner")# Scroll a elemento
element = driver.scroll_to_element("#footer")
# Scroll antes de interactuar
driver.click("#button", scroll=True)
driver.type("#input", "text", scroll=True)Ventajas:
- Integración directa con Chrome DevTools Protocol (CDP)
- Alta velocidad de ejecución
- Excelente para pruebas E2E
Configuración:
driver = CustomDriver(
proxy="socks5h://proxy.example.com:1080",
browser_options={
"type": "seleniumbase"
}
)Ventajas:
- Anti-detección avanzada
- Gestión de perfiles persistentes
- Ideal para scraping de sitios protegidos
Configuración:
driver = CustomDriver(
browser_options={"type": "undetectable"}
)Funcionalidades:
- Selección interactiva de perfiles
- Conexión a perfiles activos
- Gestión automática de puerto de depuración
Ventajas:
- Gestión profesional de fingerprints
- Múltiples perfiles con identidades únicas
- Perfecto para tareas que requieren múltiples sesiones
Configuración:
driver = CustomDriver(
browser_options={"type": "incogniton"}
)Funcionalidades:
- Lista interactiva de perfiles disponibles
- Lanzamiento automático de Selenium
- Integración con API de Incogniton
driver = CustomDriver(
type_speed=0.8,
wait_speed=1.0,
typeSlowly=True,
browser_options={"type": "undetectable"}
)
driver.get("https://example.com/login")
# Escritura natural con delays
driver.type("#username", "myuser@email.com")
driver.type("#password", "mypassword")
driver.click("#login-button")
driver.wait_for_visible_element(".dashboard")driver = CustomDriver(
browser_options={
"type": "undetectable",
"mobile_emulation": True
}
)
driver.get("https://mobile.example.com")
# Usa eventos táctiles en lugar de clicks
driver.click("#menu-icon") # Touch event
driver.type("#search", "query")driver.get("https://example.com")
driver.click("a[target='_blank']") # Abre nueva pestaña
# Cambiar a nueva pestaña
driver.change_to_new_tab()
# Trabajar en nueva pestaña
driver.wait_for_visible_element("#content")
current_url = driver.get_current_url()# Formulario con múltiples campos
driver.type("#first-name", "John", scroll=True)
driver.type("#last-name", "Doe")
driver.type("#email", "john@example.com")
# Dropdown
driver.select_option_by_value("#country", "US")
# Radio button
driver.click("input[value='male']", radio=True)
# Scroll y submit
driver.scroll_to_element("#submit-button")
driver.click("#submit-button")
# Verificar envío
driver.wait_for_visible_element(".success-message")auth/
├── driver.py # Clase principal CustomDriver
├── drivers/
│ ├── incogniton_driver.py # Driver de Incogniton
│ └── undetectable.py # Driver Undetectable Chrome
└── readme.md # Este archivo
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
proxy |
str | None | Proxy en formato IP:Puerto |
browser_options |
dict | {"type": "seleniumbase"} | Configuración del browser |
type_speed |
float | 0.0 | Multiplicador de velocidad de escritura |
wait_speed |
float | 0.0 | Tiempo adicional entre acciones |
typeSlowly |
bool | False | Escribir carácter por carácter |
browser_options = {
"type": "seleniumbase" | "undetectable" | "incogniton",
"mobile_emulation": True | False
}driver.pause() # Pausa hasta presionar Enterdriver.quit()El framework detecta automáticamente el tipo de selector:
# CSS Selector
driver.click("#myId")
driver.click(".myClass")
driver.click("button[type='submit']")
# XPath (detectado por //)
driver.click("//button[text()='Click Me']")
driver.click("//div[@class='container']//a")El framework implementa múltiples técnicas anti-detección:
- ✅ Delays aleatorios entre acciones
- ✅ Escritura gradual con velocidad variable
- ✅ Movimientos de mouse naturales
- ✅ Emulación de eventos táctiles
- ✅ Drivers con fingerprints únicos (Incogniton)
- ✅ Chrome sin detección (Undetectable)
- CDP Mode: Algunos métodos tienen optimizaciones especiales cuando se usa SeleniumBase con CDP
- Mobile Emulation: Cambia el comportamiento de
click()para usar eventos táctiles - Reintentos Automáticos: El método
click()incluye lógica de reintentos automáticos - Selectores: XPath se detecta automáticamente si comienza con
//
Este es un proyecto de uso interno. Para mejoras o sugerencias, contactame.
Uso interno - Todos los derechos reservados.
Última actualización: Diciembre 2025