
Obtenez des données web pour les agents IA et les LLM
Spider est un moteur d'exploration axé sur la concurrence construit en Rust. Il diffuse les pages dès leur arrivée, rend le JavaScript uniquement lorsqu'une page le demande, et passe à l'échelle d'un seul script à une flotte distribuée sans modifier votre code. Le même moteur alimente Spider Cloud, vous pouvez donc prototyper localement et passer à une infrastructure gérée avec un seul changement de configuration.
La partie la plus difficile de l'exploration à grande échelle n'est pas le code. Ce sont les proxys, les navigateurs sans tête et les changements constants anti-bot. Spider Cloud gère tout cela pour vous derrière la même API.
Obtenez une clé API gratuite → (aucune carte requise)
[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()?;
Le mode Smart achemine d'abord via des proxys et passe au débloqueur uniquement sur les pages qui résistent, vous payez donc pour le contournement exactement quand c'est nécessaire et jamais quand ce ne l'est pas.
Pas de clé, pas de service. Juste le robot d'exploration.
[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();
}
Les pages sont diffusées au fur et à mesure qu'elles sont récupérées. Le robot d'exploration découvre les liens, respecte les limites et s'arrête tout seul.
Spider fonctionne d'abord en HTTP et ne lance Chrome sans tête que lorsqu'une page a réellement besoin de JavaScript. La diffusion est intégrée à la fois dans les chemins HTTP et Chrome, de sorte que les pages sont renvoyées dès qu'elles sont récupérées au lieu d'être regroupées à la fin. Cette conception offre un débit de concurrence de premier ordre, soutenant des volumes de requêtes extrêmement élevés qui passent à l'échelle d'une seule tâche asynchrone à une flotte de travailleurs distribués sur la même API. Les proxys, les tentatives, la limitation de débit et la furtivité sont intégrés.
| Vous voulez… | Exécutez |
|---|---|
| Bibliothèque Rust | cargo add spider |
| Outil en ligne de commande | cargo install spider_cli |
| Paquet Node.js | npm i @spider-rs/spider-rs |
| Paquet Python | pip install spider_rs |
| Serveur MCP (Claude, Cursor, …) | cargo install spider_mcp |
| Exploration gérée | spider.cloud |
Chaque option a une valeur par défaut raisonnable, alors ne définissez que ce dont vous avez besoin.
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();
Référence complète dans la documentation Configuration.
Pour les sites lourds en JavaScript, activez features = ["chrome"] et appelez crawl_smart(). Spider essaie d'abord HTTP et ne lance Chrome que sur les pages qui en ont besoin.
Les équipes utilisent Spider pour alimenter les magasins de vecteurs à partir du web ouvert pour les pipelines LLM et RAG, surveiller les sites pour les changements SEO et de prix, exporter les pages au format Markdown, JSON ou WARC, et piloter Chrome sans tête pour les agents de navigation IA. Il y a 50+ exemples exécutables pour commencer.
Les PRs sont les bienvenus. Voir CONTRIBUTING.md.
cargo test -p spider # unit tests
RUN_LIVE_TESTS=1 cargo test # live network tests
MIT.