SDK de Nstbrowser para Python
Un SDK de Python para interactuar con la API v2 de Nstbrowser
Descripción general
Este SDK implementa la API v2 de Nstbrowser, que es la API recomendada con todas las funciones de la v1 además de funciones adicionales. Proporciona un conjunto completo de herramientas para administrar perfiles de navegador, controlar instancias de navegador, administrar datos locales del navegador y utilizar el Protocolo Chrome DevTools (CDP) para la automatización del navegador.
El SDK le permite:
- Crear y administrar perfiles de navegador con configuraciones detalladas de huellas digitales
- Iniciar y detener instancias de navegador individualmente o en lote
- Configurar y administrar proxies para perfiles
- Administrar etiquetas de perfil para una mejor organización
- Borrar la caché y las cookies del navegador
- Conectarse a navegadores utilizando el Protocolo Chrome DevTools (CDP)
- Automatizar acciones del navegador a través de la integración de CDP
Instalación
pip install nstbrowser
pip install nstbrowser
Comenzando
Para utilizar el SDK, necesita una clave de API de Nstbrowser:
from nstbrowser import NstbrowserClient
# Inicializa el cliente con tu clave de API
client = NstbrowserClient(api_key="your_api_key")
# Ahora puedes usar los diversos servicios
profile_id = "your_profile_id"
# Inicia una instancia del navegador
response = client.browsers.start_browser(profile_id=profile_id)
print(f"Navegador iniciado: {response}")
# Detiene la instancia del navegador
response = client.browsers.stop_browser(profile_id=profile_id)
print(f"Navegador detenido: {response}")
from nstbrowser import NstbrowserClient
# Inicializa el cliente con tu clave de API
client = NstbrowserClient(api_key="your_api_key")
# Ahora puedes usar los diversos servicios
profile_id = "your_profile_id"
# Inicia una instancia del navegador
response = client.browsers.start_browser(profile_id=profile_id)
print(f"Navegador iniciado: {response}")
# Detiene la instancia del navegador
response = client.browsers.stop_browser(profile_id=profile_id)
print(f"Navegador detenido: {response}")
Servicios disponibles
El SDK proporciona los siguientes servicios:
BrowsersService
Administra instancias de navegador, incluyendo el inicio, la detención y la obtención de información sobre los navegadores.
# Inicia un navegador para un perfil específico
response = client.browsers.start_browser(profile_id="your_profile_id")
# Inicia múltiples navegadores en lote
response = client.browsers.start_browsers(profile_ids=["profile_id_1", "profile_id_2"])
# Inicia un navegador único con configuración personalizada
config = {
"name": "testProfile",
"platform": "Windows",
"kernelMilestone": "132",
"headless": False,
"proxy": "http://admin:[email protected]:8000",
"fingerprint": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"screen": {"width": 1280, "height": 1024}
},
"startupUrls": ["https://www.example.com"]
}
response = client.browsers.start_once_browser(data=config)
# Detiene un navegador
response = client.browsers.stop_browser(profile_id="your_profile_id")
# Detiene múltiples navegadores
response = client.browsers.stop_browsers(profile_ids=["profile_id_1", "profile_id_2"])
# Obtiene los navegadores activos
response = client.browsers.get_browsers(status="running")
# Obtiene las páginas del navegador
response = client.browsers.get_browser_pages(profile_id="your_profile_id")
# Obtiene la información del depurador del navegador
response = client.browsers.get_browser_debugger(profile_id="your_profile_id")
# Inicia un navegador para un perfil específico
response = client.browsers.start_browser(profile_id="your_profile_id")
# Inicia múltiples navegadores en lote
response = client.browsers.start_browsers(profile_ids=["profile_id_1", "profile_id_2"])
# Inicia un navegador único con configuración personalizada
config = {
"name": "testProfile",
"platform": "Windows",
"kernelMilestone": "132",
"headless": False,
"proxy": "http://admin:[email protected]:8000",
"fingerprint": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"screen": {"width": 1280, "height": 1024}
},
"startupUrls": ["https://www.example.com"]
}
response = client.browsers.start_once_browser(data=config)
# Detiene un navegador
response = client.browsers.stop_browser(profile_id="your_profile_id")
# Detiene múltiples navegadores
response = client.browsers.stop_browsers(profile_ids=["profile_id_1", "profile_id_2"])
# Obtiene los navegadores activos
response = client.browsers.get_browsers(status="running")
# Obtiene las páginas del navegador
response = client.browsers.get_browser_pages(profile_id="your_profile_id")
# Obtiene la información del depurador del navegador
response = client.browsers.get_browser_debugger(profile_id="your_profile_id")
ProfilesService
Administra perfiles de navegador, incluyendo la creación, eliminación, configuración de proxy y administración de etiquetas.
# Crea un nuevo perfil
profile_data = {
"name": "New Profile",
"platform": "Windows",
"kernelMilestone": "132",
"fingerprint": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"timezone": "Asia/Hong_Kong"
}
}
response = client.profiles.create_profile(data=profile_data)
# Obtiene perfiles con filtrado
response = client.profiles.get_profiles(data={"page": 1, "pageSize": 10})
# Elimina un perfil
response = client.profiles.delete_profile(profile_id="your_profile_id")
# Elimina múltiples perfiles
response = client.profiles.delete_profiles(profile_ids=["profile_id_1", "profile_id_2"])
# Actualiza el proxy de un perfil
response = client.profiles.update_profile_proxy(profile_id="your_profile_id", data={"url": "http://admin:[email protected]:8000"})
# Restablece el proxy de un perfil
response = client.profiles.reset_profile_proxy(profile_id="your_profile_id")
# Administra etiquetas de perfil
response = client.profiles.create_profile_tags(profile_id="your_profile_id", data=[{"name": "social", "color": "#646AEE"}])
response = client.profiles.get_profile_tags()
# Crea un nuevo perfil
profile_data = {
"name": "New Profile",
"platform": "Windows",
"kernelMilestone": "132",
"fingerprint": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"timezone": "Asia/Hong_Kong"
}
}
response = client.profiles.create_profile(data=profile_data)
# Obtiene perfiles con filtrado
response = client.profiles.get_profiles(data={"page": 1, "pageSize": 10})
# Elimina un perfil
response = client.profiles.delete_profile(profile_id="your_profile_id")
# Elimina múltiples perfiles
response = client.profiles.delete_profiles(profile_ids=["profile_id_1", "profile_id_2"])
# Actualiza el proxy de un perfil
response = client.profiles.update_profile_proxy(profile_id="your_profile_id", data={"url": "http://admin:[email protected]:8000"})
# Restablece el proxy de un perfil
response = client.profiles.reset_profile_proxy(profile_id="your_profile_id")
# Administra etiquetas de perfil
response = client.profiles.create_profile_tags(profile_id="your_profile_id", data=[{"name": "social", "color": "#646AEE"}])
response = client.profiles.get_profile_tags()
LocalsService
Administra datos locales del navegador, como la caché y las cookies.
# Borra la caché del navegador
response = client.locals.clear_profile_cache(profile_id="your_profile_id")
# Borra las cookies del navegador
response = client.locals.clear_profile_cookies(profile_id="your_profile_id")
# Borra la caché del navegador
response = client.locals.clear_profile_cache(profile_id="your_profile_id")
# Borra las cookies del navegador
response = client.locals.clear_profile_cookies(profile_id="your_profile_id")
CdpEndpointsService
Proporciona conexiones a navegadores utilizando el Protocolo Chrome DevTools (CDP) para la automatización.
# Conecta a un navegador usando CDP
config = {
"headless": False,
"autoClose": False
}
response = client.cdp_endpoints.connect_browser(profile_id="your_profile_id", config=config)
# Conecta a un navegador único usando CDP
config = {
"name": "testProfile",
"platform": "Windows",
"kernelMilestone": "132",
"autoClose": False,
"headless": False
}
response = client.cdp_endpoints.connect_once_browser(config=config)
# Conecta a un navegador usando CDP
config = {
"headless": False,
"autoClose": False
}
response = client.cdp_endpoints.connect_browser(profile_id="your_profile_id", config=config)
# Conecta a un navegador único usando CDP
config = {
"name": "testProfile",
"platform": "Windows",
"kernelMilestone": "132",
"autoClose": False,
"headless": False
}
response = client.cdp_endpoints.connect_once_browser(config=config)
Ejemplos
El SDK viene con un conjunto completo de ejemplos en el directorio /examples
, organizados por servicio:
Ejemplos de navegador
browsers/start_browser.py
: Inicia un navegador para un perfil específicobrowsers/start_browsers.py
: Inicia múltiples navegadores en lotebrowsers/start_once_browser.py
: Inicia un navegador único con configuración personalizadabrowsers/stop_browser.py
: Detiene un navegadorbrowsers/stop_browsers.py
: Detiene múltiples navegadoresbrowsers/get_browsers.py
: Obtiene información del estado del navegadorbrowsers/get_browser_pages.py
: Obtiene información de las páginas del navegadorbrowsers/get_browser_debugger.py
: Obtiene información del depurador del navegador
Ejemplos de perfil
profiles/create_profile.py
: Crea un nuevo perfil con configuración detalladaprofiles/get_profiles.py
: Obtiene perfiles con opciones de filtradoprofiles/delete_profile.py
: Elimina un perfil específicoprofiles/delete_profiles.py
: Elimina múltiples perfilesprofiles/update_profile_proxy.py
: Actualiza el proxy de un perfilprofiles/batch_update_proxy.py
: Actualiza proxies para múltiples perfilesprofiles/reset_profile_proxy.py
: Restablece el proxy de un perfilprofiles/batch_reset_profile_proxy.py
: Restablece proxies para múltiples perfilesprofiles/create_profile_tags.py
: Crea etiquetas para un perfilprofiles/get_profile_tags.py
: Obtiene todas las etiquetas de perfilprofiles/update_profile_tags.py
: Actualiza etiquetas para un perfilprofiles/batch_update_profile_tags.py
: Actualiza etiquetas para múltiples perfilesprofiles/clear_profile_tags.py
: Borra todas las etiquetas de un perfilprofiles/batch_clear_profile_tags.py
: Borra etiquetas de múltiples perfilesprofiles/batch_create_profile_tags.py
: Crea etiquetas para múltiples perfilesprofiles/get_all_profile_groups.py
: Obtiene todos los grupos de perfilesprofiles/change_profile_group.py
: Cambia un grupo de perfilesprofiles/batch_change_profile_group.py
: Cambios por lotes a grupos de perfiles
Ejemplos de datos locales
locals/clear_profile_cache.py
: Borra la caché del navegadorlocals/clear_profile_cookies.py
: Borra las cookies del navegador
Ejemplos de punto final de CDP
cdp_endpoints/connect_browser.py
: Conecta a un navegador usando CDP y automatiza con Playwrightcdp_endpoints/connect_once_browser.py
: Conecta a un navegador único con CDP y automatiza con Playwright
Para ejecutar un ejemplo:
python examples/browsers/start_browser.py
python examples/browsers/start_browser.py
Integración de CDP con Playwright
Una característica poderosa es la capacidad de conectarse a navegadores utilizando el Protocolo Chrome DevTools (CDP) y automatizarlos con Playwright:
# Obtiene la URL de WebSocket de CDP
websocket_url = client.cdp_endpoints.connect_browser(
profile_id="your_profile_id",
config={"headless": False}
)["data"]["webSocketDebuggerUrl"]
# Usa la URL con Playwright para la automatización
from playwright.async_api import async_playwright
async def automate():
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(websocket_url)
page = browser.contexts[0].pages[0]
await page.goto("https://example.com")
# ... realiza otras acciones
# Obtiene la URL de WebSocket de CDP
websocket_url = client.cdp_endpoints.connect_browser(
profile_id="your_profile_id",
config={"headless": False}
)["data"]["webSocketDebuggerUrl"]
# Usa la URL con Playwright para la automatización
from playwright.async_api import async_playwright
async def automate():
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(websocket_url)
page = browser.contexts[0].pages[0]
await page.goto("https://example.com")
# ... realiza otras acciones
Los ejemplos completos para la automatización de CDP están disponibles en el directorio examples/cdp_endpoints
.
Soporte
Para soporte, no dude en contactarnos a través de Discord. Para una documentación más detallada, visite la documentación oficial de Nstbrowser: Documentación de la API de Nstbrowser.