Initial commit: navegator - Chrome CDP automation for LLMs
Add complete navegator system for stealthy browser automation: - CDP client with WebSocket communication - Browser API with navigation, storage, network, runtime - Stealth flags and anti-detection scripts - Persistent profile support - Examples and comprehensive documentation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
# YouTube Comments Scraper
|
||||
|
||||
Ejemplo de uso de **navegator** para extraer comentarios de videos de YouTube de manera sigilosa.
|
||||
|
||||
## Características
|
||||
|
||||
- ✅ Extracción de comentarios con autor, texto y likes
|
||||
- ✅ Modo headless para producción
|
||||
- ✅ Ventana pequeña para desarrollo/testing
|
||||
- ✅ Manejo automático de banner de cookies
|
||||
- ✅ Scroll automático para activar lazy loading
|
||||
- ✅ Stealth flags para evitar detección
|
||||
- ✅ Perfiles persistentes (cookies y sesiones se mantienen)
|
||||
|
||||
## Uso
|
||||
|
||||
### Modo básico (headless por defecto)
|
||||
```bash
|
||||
go run examples/youtube_comments.go
|
||||
```
|
||||
|
||||
### Modo visible (para debugging)
|
||||
```bash
|
||||
go run examples/youtube_comments.go -visible
|
||||
```
|
||||
|
||||
### Especificar video y número de comentarios
|
||||
```bash
|
||||
go run examples/youtube_comments.go -url "https://www.youtube.com/watch?v=VIDEO_ID" -n 20
|
||||
```
|
||||
|
||||
### Todas las opciones
|
||||
```bash
|
||||
go run examples/youtube_comments.go -visible -url "URL_DEL_VIDEO" -n 15
|
||||
```
|
||||
|
||||
## Parámetros
|
||||
|
||||
| Flag | Descripción | Default |
|
||||
|------|-------------|---------|
|
||||
| `-visible` | Ejecutar con interfaz gráfica (para debugging) | `false` (headless) |
|
||||
| `-url` | URL del video de YouTube | Video de ejemplo |
|
||||
| `-n` | Número máximo de comentarios a extraer | `10` |
|
||||
|
||||
## Compilar binario
|
||||
|
||||
Para crear un binario standalone:
|
||||
|
||||
```bash
|
||||
go build -o youtube-comments examples/youtube_comments.go
|
||||
```
|
||||
|
||||
Luego usar:
|
||||
```bash
|
||||
# Modo headless (default)
|
||||
./youtube-comments -n 20
|
||||
|
||||
# Modo visible para debugging
|
||||
./youtube-comments -visible -n 20
|
||||
```
|
||||
|
||||
## Ejemplo de salida
|
||||
|
||||
```
|
||||
🚀 Lanzando navegador...
|
||||
✅ Navegador iniciado. Perfil: /home/user/.navegator/profiles/youtube-scraper
|
||||
📺 Navegando a YouTube: https://www.youtube.com/watch?v=S1J8rx2Jw98
|
||||
📊 Extrayendo hasta 5 comentarios
|
||||
⏳ Esperando a que cargue la página...
|
||||
🍪 Cookie banner clicked
|
||||
📜 Haciendo scroll para cargar comentarios...
|
||||
⏳ Esperando a que aparezcan los comentarios...
|
||||
📝 Extrayendo comentarios...
|
||||
|
||||
================================================================================
|
||||
📋 COMENTARIOS EXTRAÍDOS:
|
||||
================================================================================
|
||||
|
||||
1. @herrpez (1K likes)
|
||||
Insane move. Guy is clearly flying that route in August...
|
||||
|
||||
2. @roland_does_things (336 likes)
|
||||
This is the moment you treat all your friends to a great trip to Sicily...
|
||||
|
||||
3. @Starcraft2Krauts (440 likes)
|
||||
Getting money from Wizz air took me months and threatening a lawsuit...
|
||||
|
||||
================================================================================
|
||||
📌 Información del Video:
|
||||
================================================================================
|
||||
Título: I Tried to Profit From Flight Delays Using Data
|
||||
Vistas: 43,845 views
|
||||
|
||||
✅ Extracción completada exitosamente!
|
||||
```
|
||||
|
||||
## Cómo funciona
|
||||
|
||||
1. **Lanzamiento del navegador**: Inicia Chrome/Chromium con flags stealth
|
||||
2. **Navegación**: Carga el video de YouTube especificado
|
||||
3. **Cookies**: Detecta y acepta automáticamente el banner de cookies
|
||||
4. **Scroll**: Hace scroll progresivo para activar el lazy loading de comentarios
|
||||
5. **Extracción**: Usa JavaScript para extraer los datos de cada comentario
|
||||
6. **Formato**: Muestra los comentarios de manera legible en la terminal
|
||||
|
||||
## Selectores utilizados
|
||||
|
||||
El script utiliza los siguientes selectores CSS de YouTube:
|
||||
|
||||
- `ytd-comment-thread-renderer`: Contenedor de cada comentario
|
||||
- `#author-text`: Nombre del autor
|
||||
- `#content-text`: Texto del comentario
|
||||
- `.published-time-text a`: Fecha de publicación
|
||||
- `#vote-count-middle`: Contador de likes
|
||||
|
||||
## Notas
|
||||
|
||||
- **Perfiles persistentes**: El navegador guarda cookies y sesiones en `~/.navegator/profiles/youtube-scraper/`
|
||||
- **Timeouts**: Si la página tarda mucho en cargar, aparecerá una advertencia pero continuará la ejecución
|
||||
- **Stealth**: El navegador se configura con flags anti-detección para evitar ser bloqueado
|
||||
- **Ventana pequeña**: Se usa ventana de 600x400 para menor consumo de recursos
|
||||
- **Headless por defecto**: El navegador corre en segundo plano sin interfaz gráfica (usa `-visible` para debugging)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### No se encuentran comentarios
|
||||
|
||||
- Verifica que el video tenga comentarios habilitados
|
||||
- Aumenta el tiempo de espera modificando los `time.Sleep()`
|
||||
- Ejecuta con `-visible` para ver qué está pasando en el navegador
|
||||
|
||||
### Timeout al navegar
|
||||
|
||||
- Es normal, el script continúa de todos modos
|
||||
- YouTube carga muchos recursos en segundo plano
|
||||
- La advertencia no afecta la extracción de comentarios
|
||||
|
||||
### Selectores no funcionan
|
||||
|
||||
- YouTube puede cambiar su estructura HTML
|
||||
- Ejecuta con `-visible` e inspecciona la página
|
||||
- Actualiza los selectores en el script según sea necesario
|
||||
|
||||
## Próximas mejoras
|
||||
|
||||
- [ ] Exportar comentarios a JSON
|
||||
- [ ] Extraer respuestas a comentarios
|
||||
- [ ] Ordenar por fecha, likes, etc.
|
||||
- [ ] Extraer información adicional (avatares, badges, etc.)
|
||||
- [ ] Scroll infinito para extraer todos los comentarios
|
||||
Reference in New Issue
Block a user