
Obtén datos web para agentes de IA y LLMs
Spider es un motor de rastreo que prioriza la concurrencia, escrito en Rust. Transmite las páginas en cuanto llegan, renderiza JavaScript solo cuando una página lo requiere y escala desde un único script hasta una flota distribuida sin cambiar tu código. El mismo motor impulsa Spider Cloud, por lo que puedes crear prototipos localmente y migrar a infraestructura gestionada con un solo cambio de configuración.
La parte más difícil de rastrear a gran escala no es el código. Son los proxies, los navegadores sin interfaz y el constante vaivén de las medidas antibot. Spider Cloud gestiona todo eso por ti con la misma API.
Obtén una clave de API gratuita → (sin necesidad de tarjeta)
[dependencies]
spider = { version = "2", features = ["spider_cloud"] }
use spider::configuration::{SpiderCloudConfig, SpiderCloudMode};
use spider::website::Website;
let cloud = SpiderCloudConfig::new("sk-...")
.with_mode(SpiderCloudMode::Smart); // proxy by default, auto-unblock when blocked
let mut website = Website::new("https://example.com")
.with_spider_cloud_config(cloud)
.build()?;
El modo Smart enruta primero a través de los proxies y recurre al desbloqueador solo en las páginas que se resisten, de modo que pagas por el desbloqueo exactamente cuando se necesita y nunca cuando no.
Sin clave, sin servicio. Solo el rastreador.
[dependencies]
spider = "2"
use spider::{tokio, website::Website};
#[tokio::main]
async fn main() {
let mut website = Website::new("https://example.com");
let mut rx = website.subscribe(16);
tokio::spawn(async move {
while let Ok(page) = rx.recv().await {
println!("{} {}", page.status_code, page.get_url());
}
});
website.crawl().await;
website.unsubscribe();
}
Las páginas se transmiten a medida que se obtienen. El rastreador descubre enlaces, respeta los límites y se detiene por sí solo.
Spider usa HTTP primero y solo lanza Chrome sin interfaz cuando una página realmente necesita JavaScript. La transmisión está integrada tanto en la ruta HTTP como en la de Chrome, de modo que las páginas regresan en el momento en que se obtienen, en lugar de agruparse en lotes al final. Ese diseño ofrece un rendimiento de concurrencia de primer nivel, manteniendo volúmenes de peticiones extremadamente altos que escalan desde una única tarea asíncrona hasta una flota distribuida de trabajadores con la misma API. Los proxies, los reintentos, la limitación de velocidad y el modo sigiloso están integrados.
| Quieres… | Ejecuta |
|---|---|
| Librería Rust | cargo add spider |
| Herramienta de línea de comandos | cargo install spider_cli |
| Paquete Node.js | npm i @spider-rs/spider-rs |
| Paquete Python | pip install spider_rs |
| Servidor MCP (Claude, Cursor, …) | cargo install spider_mcp |
| Rastreo gestionado | spider.cloud |
Cada opción tiene un valor predeterminado razonable, así que solo configura lo que necesites.
let mut website = Website::new("https://example.com")
.with_limit(50) // concurrent requests
.with_depth(10) // how deep to follow links
.with_delay(500) // pause between requests (ms)
.with_respect_robots_txt(true)
.with_subdomains(true)
.with_user_agent(Some("MyBot/1.0"))
.with_stealth(true)
.build()
.unwrap();
Referencia completa en la documentación de Configuration.
Para sitios con mucho JavaScript, activa features = ["chrome"] y llama a crawl_smart(). Spider intenta primero con HTTP y solo lanza Chrome en las páginas que lo necesitan.
Los equipos usan Spider para introducir la web abierta en almacenes vectoriales para pipelines de LLM y RAG, monitorear sitios para SEO y cambios de precios, exportar páginas como Markdown, JSON o WARC, y controlar Chrome sin interfaz para agentes de navegación con IA. Hay más de 50 ejemplos ejecutables para empezar.
Las PRs son bienvenidas. Consulta CONTRIBUTING.md.
cargo test -p spider # unit tests
RUN_LIVE_TESTS=1 cargo test # live network tests
MIT.