
احصل على بيانات الويب لوكلاء الذكاء الاصطناعي ونماذج اللغات الكبيرة (LLMs)
Spider هو محرك زحف يضع التوافقية أولاً، مبني بلغة Rust. يبثّ الصفحات لحظة وصولها، ويعرض JavaScript فقط عندما تطلبه الصفحة، ويتوسّع من سكربت واحد إلى أسطول موزّع دون تغيير كودك. نفس المحرك يشغّل Spider Cloud، لذا يمكنك إنشاء نموذج أولي محلياً والانتقال إلى بنية تحتية مُدارة بتغيير إعداد واحد.
أصعب جزء في الزحف على نطاق واسع ليس الكود نفسه، بل الوكلاء والمتصفحات عديمة الواجهة والتغيّر المستمر في أنظمة مكافحة الروبوتات. يدير Spider Cloud كل ذلك نيابةً عنك خلف نفس واجهة API.
احصل على مفتاح API مجاني → (بدون بطاقة ائتمان)
[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()?;
يوجّه وضع Smart الطلبات عبر الوكلاء أولاً، ثم ينتقل إلى أداة إزالة الحظر فقط على الصفحات التي تقاوم، لذا تدفع مقابل التجاوز عند الحاجة إليه بالضبط وليس عند عدم الحاجة.
بدون مفتاح، وبدون خدمة. فقط الزاحف.
[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();
}
تُبث الصفحات فور جلبها. يكتشف الزاحف الروابط، ويحترم الحدود، ويتوقف من تلقاء نفسه.
يعتمد Spider على HTTP أولاً، ولا يشغّل متصفح Chrome عديم الواجهة إلا عندما تحتاج الصفحة فعلاً إلى JavaScript. البث مدمج في مساري HTTP وChrome معاً، فتعود الصفحات لحظة جلبها بدلاً من أن تتجمّع في النهاية. هذا التصميم يحقق إنتاجية توافقية من الطراز الأول، مع تحمّل أحجام طلبات هائلة تتوسع من مهمة async واحدة إلى أسطول عاملين موزّع على نفس واجهة API. الوكلاء وإعادة المحاولة والحد من المعدل والتخفي كلها مدمجة.
| ماذا تريد… | الأمر |
|---|---|
| مكتبة Rust | cargo add spider |
| أداة سطر الأوامر | cargo install spider_cli |
| حزمة Node.js | npm i @spider-rs/spider-rs |
| حزمة Python | pip install spider_rs |
| خادم MCP (Claude, Cursor, …) | cargo install spider_mcp |
| زحف مُدار | spider.cloud |
لكل خيار قيمة افتراضية منطقية، لذا اضبط فقط ما تحتاجه.
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();
المرجع الكامل في توثيق Configuration.
بالنسبة للمواقع المعتمدة على JavaScript بشكل كبير، فعّل features = ["chrome"] واستدعِ crawl_smart(). يجرب Spider HTTP أولاً ولا يشغّل Chrome إلا على الصفحات التي تحتاجه.
تستخدم الفرق Spider لتغذية الويب المفتوح إلى مخازن المتجهات في خطوط أنابيب LLM وRAG، ولمراقبة المواقع لرصد تغيّرات SEO والأسعار، ولتصدير الصفحات بصيغ Markdown أو JSON أو WARC، وقيادة متصفح Chrome عديم الواجهة لوكلاء التصفح بالذكاء الاصطناعي. هناك أكثر من 50 مثالاً قابلاً للتشغيل يمكن البدء منها.
نرحب بطلبات السحب (PRs). راجع CONTRIBUTING.md.
cargo test -p spider # unit tests
RUN_LIVE_TESTS=1 cargo test # live network tests
MIT.