CrawlForge 5.0: Güvenlik ve Doğrulukta Yeni Standartlar
CrawlForge 5.0: CrawlForge v5.0.0 iddiası ne anlatıyor? CrawlForge 5.0 kapsamında, http://2130706433/ geçerli bir URL'dir. WHATWG URL ayrıştırıcısı ondalık, onaltılık (0x7f000001) ve sekizlik tamsayı formlarını noktalı dörtlü IPv4'e normalleştirdiği için tarayıcınız bunu memnuniyetle 127.0.0.1'e çözecektir. SSRF muhafızımız…

CrawlForge 5.0: CrawlForge v5.0.0 iddiası ne anlatıyor?
CrawlForge 5.0 kapsamında, http://2130706433/ geçerli bir URL’dir. WHATWG URL ayrıştırıcısı ondalık, onaltılık (0x7f000001) ve sekizlik tamsayı formlarını noktalı dörtlü IPv4’e normalleştirdiği için tarayıcınız bunu memnuniyetle 127.0.0.1’e çözecektir. SSRF muhafızımız bunu bilmiyordu.
CrawlForge 5.0 kapsamında, Ana bilgisayar adlarını DNS aracılığıyla çözdü ve ortaya çıkan adreslerin aralığını kontrol etti – ancak Node hiçbir zaman bir IP değişmez bilgisini arama yoluyla yönlendirmez, dolayısıyla ana bilgisayarı zaten bir IP olan bir URL, kontrolü doğrudan geçti. Geri döngü, yerel bağlantı, bulut meta verileri: Tüm işi, bir modelin sizin için seçtiği URL’leri getirmek olan bir sunucuda tümüne erişilebilir.
CrawlForge 5.0 kapsamında, Bu, CrawlForge MCP Sunucusu v5.0.0 haline gelen yedi aşamalı iç denetimin bir hatasıdır. Birim paketi 480 testten 914’e çıktı. npm denetimi 16 güvenlik açığından 0’a çıktı. Neredeyse hiçbiri yeni özellik değil.
Tasarım ve teknik ayrıntılar
CrawlForge 5.0 kapsamında, 4: HTTP modunda yalnızca bir oturum vardı Aşama 5: sıfır npm denetim güvenlik açıkları Aşama 6: MCP spesifikasyonlarının benimsenmesi Fiyatlandırma ve nasıl yükseltilir Gerçekte gönderilen şey Aşama Tema Başlık sonucu 0 Bağımlılık para birimi npm denetimi 16 güvenlik açığı → 4 orta, sıfır kod değişikliği 1 Kritik güvenlik SSRF IP-literal bypass, OAuth belirteci basımı, gizli sızıntı, faturalandırma 2 Doğruluk 52 düzeltme — crawl_deep yeniden yazma dahil 3 Sızıntılar ve zaman aşımları 24 düzeltme — kardeşim wser bağlamları, sınırsız önbellekler, gerçek son tarihler 4 HTTP aktarımı 19 düzeltme — çoklu oturumda yayınlanabilir HTTP, çalışma istemleri, web kancası HMAC 5 Bağımlılık modernizasyonu Düğüm ≥ 20 kat, 0 npm denetim güvenlik açıkları 6 MCP spesifikasyonunun benimsenmesi Yapılandırılmış çıktı, eşzamansız görevler, araç beyaz listesi, kayıt defteri sunucusu.json MCP protokolü uyumluluğu %100,0 UYUMLU olarak tutuldu, her aşama kapısında 0 hata.
CrawlForge 5.0 kapsamında, Son derece önemli bir değişiklik: Düğüm 20 Engines.node >=18.0.0’dan >=20.16.0’a taşındı. Düğüm 18, Nisan 2026’da kullanım ömrünün sonuna ulaştı ve 20.16, pdf-parse 2.4.5’in (son denetim bulgularını temizlemek için ihtiyaç duyduğumuz ESM yeniden yazımının) gerektirdiği tabandır. Dockerfile’ımız (düğüm:20-alpine) ve CI (Node 22) bunu zaten karşıladı. Kırılma yüzeyinin tamamı budur.

CrawlForge 5.0 kapsamında, Hiçbir araç şeması, çıktı şekli veya kredi maliyeti değişmedi ve araç sayısı 27’de kaldı. düğüm –versiyon # >= 20.16.0 olmalıdır Aşama 1: gönderdiğimiz SSRF bypass Özel bir ağın yakınında herhangi bir MCP kazıma sunucusu çalıştırıyorsanız bu aşamayı okuyun. ÖNCE: url -> ayrıştırma -> DNS araması -> ipBlocked(çözüldü)? -> getir | +–> IP değişmezi mi? hiçbir arama gerçekleşmez. gardiyan asla koşmaz. istek çıkıyor.
Bugünden bakınca ne kadar güvenilir?
CrawlForge 5.0 kapsamında, SONRA: url -> ayrıştırma -> ipBlocked (gerçek ana bilgisayar)? ——–+ -> DNS araması -> ipBlocked(addrs)?
CrawlForge 5.0 kapsamında, –+-> getir -> undic dağıtıcısında bağlantı başına kontrol (her yeniden yönlendirme atlamasını da yakalar) v5.0.0, uçuş öncesinde IP değişmez ana bilgisayar adları üzerinde ipBlocked() işlevini çalıştırır ve undic dağıtıcının buildConnector’unu sarar bağlantı başına kontrol ile doğrudan dahili bir adrese yönlendirme atlaması da engellenir. Bununla birlikte üç koruma düzeltmesi daha geldi: IPv4 eşlemeli IPv6.
CrawlForge 5.0 kapsamında, ::ffff:127.0.0.1 ve ::ffff:169.254.169.254, hem varsayılan hem de katı modlarda aralık kontrollerinden önce yerleşik IPv4’lerine normalleştirilir. DNS kontrollü AAAA kaydı bypassını sonlandırır. BLOCKED_DOMAINS yapılandırması ölüydü. Hiçbir şey tarafından ilan edildi ve okunmadı. Artık uçuş öncesi uygulanıyor. İzin verilenler listesi atlama başına değerlendirilir.
Okuyucu için pratik anlamı
CrawlForge 5.0 kapsamında, İzin verilenler listesindeki ilk atlama, kendisinden sonraki her yönlendirmenin korumasını kaldırmak için kullanılır.
Ayrıca korumayı, buna hiç sahip olmayan beş yola da bağladık: scrape_with_actions (sayfayı engellenen bir aralığa yönlendirmede kapatan bir navigasyon sonrası page.url() yeniden kontrolü ile – bu, Playwright dahili ağ okuma ilkeldi), harita_site, süreç_document PDF indirmeleri, web kancası teslimi ve durum kontrolleri ve deep_research web kancası bildirimleri.
SSRF’nin ötesinde: OAuth, gizli sızıntı ve faturalandırma OAuth. /oauth/authorize artık bir kod yayınlamadan önce sabit zamanlı özet karşılaştırmasıyla operatörün API anahtarının kanıtını gerektiriyor. Operatör tarafından faturalandırılan taşıyıcı jetonlarının basıldığı anonim kayıt → yetkilendirme → jeton akışı kapatıldı. Gizli sızıntı.
Kullanım telemetrisi, yük işlemden ayrılmadan önce araç parametrelerini maskSecrets() üzerinden geçirir; üçüncü taraf API anahtarları, kimlik doğrulama başlıkları ve web kancası imzalama sırları artık düz metin olarak dolaşmaz. deep_research s LLM API anahtarlarını Winston dosya günlüklerine yazmanın zirvesi. Faturalandırma.
Kredi kontrolünün kendisinden yapılan bir atış artık sıfır faturalandırıyor; hata yolu yarı şarjı yalnızca işleyici gerçekten başlatıldığında uygulanır. checkCredits, her ikisini de “yetersiz kredi” olarak raporlamak yerine 401/403’ü (geçersiz veya iptal edilmiş anahtar) 5xx’ten (yetkisiz kullanım süresi) ayırır.
Bu sorunun özel versiyonunu değil de genel versiyonunu istiyorsanız, ayrı olarak yazdık: MCP sunucularında SSRF. Aşama 2: Araçların sessizce yanlış yaptığı 52 yol Bu, “duman testlerini geçer, yanıltıcı çıktılar verir” sınıfıdır; günlüklerinizde hiçbir zaman hata olarak görünmez. crawl_deep tekrar gerçek taramalar için kullanılabilir.
BFS alt sayfaları, dolu bir kuyruk yuvasının içinden bekleniyordu; bu nedenle, görev başına kuyruk zaman aşımı, bir sayfa yerine özyinelemeli taramanın tamamını sınırladı. 30 saniyelik zaman aşımını aşan herhangi bir tarama, zaten getirdiği her sayfayı çıplak bir Söz ile zaman aşımına uğrattı ve düşük eşzamanlılık ayarları (eşzamanlılık: 1 dahil) tamamen kilitlendi. Her ikisi de düzeltildi.
İstekle çelişen diğer 51 Önbellek anahtarının temsili bir örneği. crawl_deep’in sonuç önbellek anahtarı artık extract_content, içerik uzunluğu, dahil etme/hariç tutma kalıpları, follow_external, revere_robots, eşzamanlılık, etki alanı filtresi ve oturumu kapsıyor. Map_site, aramayı, etki alanı filtresini, include_metadata’yı ve group_by_path’i kapsar.
Daha önce önbelleğe alınmış bir çağrı sizinle çelişebiliyordu tam bir saatlik TTL için parametreleriniz. Karakter kodlaması. Gövdeler, her zaman UTF-8 yerine, bildirilmiş karakter kümeleriyle (Content-Type başlığı veya sniff) kod çözer. Artık ISO-8859-1 veya Shift_JIS sitelerinden U+FFFD çorbası yok. Sessizce soyulmuş seçenekler.
extract_content, Summary_content ve analyze_content için seçenek şemaları artık .passthrough() yöntemini kullanıyor. Belgelenen her seçenek anahtarı, işleyiciye ulaşmadan önce ayıklanıyordu; bu da özet_content’in her zaman aynı 2 cümlelik geri dönüş, yanlış etiketlenmiş çıkarıcıyı döndürmesinin nedenidir. Çıkarıcı özetleyici artık gerçekten çalışıyor ve SummaryLength çıktıyı değiştiriyor. Bağlantı çözünürlüğü.
extract_links, göreli hrefleri kaynak yerine son sayfa URL’sine göre çözümler, ‘e saygı gösterir ve protokole bağlı bağlantıları harici olarak sınıflandırır. Aynı düzeltmeler scrape’in çıkarıcısına da uygulandı, böylece ikisi sonunda aynı fikirde oldu. track_changes benzerliği. Şimdi içeriğin üzerinde Jaccard’ı belirtelim.
Daha önce sha256 hex özetleri arasındaki Hamming mesafesiydi; dolayısıyla her önemsiz düzenleme kabaca %0 benzer puan aldı ve “orta düzeyde değişiklik” uyarısı verdi. search_web puanlaması. Kısmi sıralama_ağırlıkları, varsayılanları toptan değiştirmek yerine derinlemesine birleştirir, böylece artık NaN final puanları veya sessizce devre dışı bırakılan mükerrer kontroller ortadan kalkar.
Sıfır sonuçlu genişletme yeniden denemesi, beş adede kadar faturalandırılmış arka uç araması yerine tek bir geri dönüşle sınırlıdır. Aşama 3: 24 gün boyunca çalıştırmak güvenlidir sınıfta yalnızca uzun süren süreçlerde ortaya çıkan bulgular. Tarayıcı yaşam döngüsü.
Bir Oyun Yazarı sayfasını kapatmak, o sayfanın içeriğini kapatmaz; dolayısıyla her scrape_with_actions çağrısı ve tarayıcı tarafından oluşturulan her extract_content, kapatılana kadar bir bağlamı sızdırır. İçerikler artık sayfalarıyla birlikte kapatılmıştır ve başarısız bir page.goto (DNS hatası, zaman aşımı, engellenen URL), onları yetim bırakmak yerine her ikisini de yıkar. Sınırlı önbellekler.
crawl_deep, sonunda tarama başına CacheManager’ı yok eder. Daha önce N, her biri 1000’e kadar tam HTML belgesinden oluşan, kalıcı olarak sızdırılmış N önbelleklerini tarar; bunların her biri sonsuza kadar her 60 saniyede bir JSON.stringify bellek taramasını yeniden çalıştırırdı. Bırakılan örnekler artık WeakRef regresyon testiyle GC tarafından doğrulanıyor. Okunan her kurum için son tarihler.
İptal zamanlayıcısı gövde akışı boyunca hazır durumda kalır, böylece zaman aşımı sonunda başlıkları döndüren ve ardından duraklayan bir sunucuyu kapsar. Parçanın yeniden birleştirilmesi tek geçişlidir – 25 MB’lık bir gövdede yaklaşık 1,5 saniyelik eşzamanlı olay döngüsü bloğu olan O(n²) idi.
PDF indirmelerinde gerçek bir AbortSignal.timeout var (eski zaman aşımı: fetch-init seçeneği unici tarafından sessizce göz ardı ediliyor). Claude Masaüstü kullanıcıları için bir tane: anlık görüntü depolama varsayılan olarak proses.cwd() yerine ~/.crawlforge/snapshots şeklindedir. MCP istemcileri, sunucuyu / çalışma dizini ile başlatır; burada her anlık görüntü yazma işlemi sessizce başarısız olur.
Aşama 4: HTTP modunda yalnızca bir oturum vardı. Npm run sta üzerinden dağıtım yaptıysanız rt:http, düşündüğünüzden daha kötüydü. Tek bir paylaşılan aktarım, tam olarak bir oturumun var olduğu ve işlemi yeniden başlatana kadar herhangi bir temiz bağlantının /mcp ile tuğlalandığı anlamına geliyordu.
Durum bilgisi olan mod artık SDK’nın belgelenen oturum başına modelini takip ediyor – yeni bir aktarıma sahip bir Map ve başlatma başına klonlanmış McpServer, DELETE’de elden çıkarma ve bilinmeyen oturum kimlikleri için bir JSON-RPC 404. İkinci eşzamanlı istemci, ağ kesintisinden sonra yeniden bağlanın, SİLİN ve ardından yeniden başlatın: hepsi şimdi çalışıyor.
Ayrıca Aşama 4’te: Başlangıç istemi herhangi bir istemci tarafından alınamıyordu – config nesnesi SDK’nın konumsal argsSchema aşırı yüklemesine çarptı, sahte bir gerekli argümanın reklamını yaptı ve her istem/almada başarısız oldu. Uyumluluk paketi artık 6 istemin tamamının keşfedilmesini ve alınmasını kapsıyor. Webhook HMAC imzaları, POST’lanan serileştirilmiş gövdenin tamamını kapsar.
Yalnızca veri alt nesnesi imzalanıyordu, bu nedenle standart alıcı tarafı ham gövde doğrulaması her seferinde başarısız oluyordu. Artık çoklu megabaytlık base64 ekran görüntülerini satır içi olarak JSON sonucuna kazımaz; meta verileri artı bir crawlforge://screenshot/{id} kaynak URI’sini tutar.
Otomatik kurulum banner’ları stdout’tan stderr’e taşındı, bu nedenle ilk başlatma artık JSON olmayan satırları stdio JSON-RPC kanalına enjekte etmiyor. Aşama 5: sıfır npm denetim güvenlik açıkları Node 20 tabanının devreye girmesiyle, terk edilen tüm bağımlılıkları kullanımdan kaldırdık ve güvenliği üstlendik eski katın bloke ettiği yükseltmeler. 4 orta → 0. Tamamen kaldırıldı: node-cron (3.
Aşama planlamayı setInterval’a taşıdıktan sonra kullanılmadı; kaldırma, savunmasız uuid zincirini temizledi), @googleapis/customsearch (kullanılmadı – Google bağdaştırıcısı doğrudan REST uç noktasını çağırır) ve node-summerizer (2019’dan beri terk edildi; çıkarıcı özetleyici, aynı sonuç şekilleriyle uzlaşma tabanlı Luhn tarzı bir kelime frekansı puanlayıcı olarak yeniden yazıldı).
En önemli yükseltme: pdf-parse 1.1.1 → 2.4.5. PDFProcessor, v2 sınıfı API’ye taşındığından, parola seçeneği artık aslında korumalı PDF’lerin şifresini çözüyor; v1 bunu sessizce görmezden geldi. Tedarik zincirinde: Bu aşama ChainDrop npm solucanı sırasında yürütüldü.
Her yükleme –ignore-scripts ile çalıştırıldı, benimsenen her sürüm yayınlanma tarihine bağlıydı ve tam kilit dosyası farkı, sıfır eşleşme içeren, tehlikeye atılmış genel paket listeleriyle çapraz kontrole tabi tutuldu. Aşama 6: MCP spesifikasyonlarının benimsenmesi Yapılandırılmış çıktı (MCP 2026-06-18).
scrape, map_site, serp_rank, search_web, extract_structured ve crawl_deep bir çıktıSchema bildirir ve eski JSON metninin yanında yapılandırılmışContent’i döndürür. Şemalar tasarım gereği hoşgörülüdür, dolayısıyla meşru bir sonuç hiçbir zaman SDK çıkış doğrulamasında başarısız olamaz. Eşzamansız görevler.
crawl_deep, Batch_scrape, Deep_research ve Agent, io.modelcontextprotocol/tasks uzantısı altında TaskSupport: ‘isteğe bağlı’ ile kayıtlıdır. Görev bilincine sahip istemciler anında işlem yapar hemen ve görevleri yokla/al; görev desteği olmayan istemciler, senkronize sonucu tam olarak eskisi gibi almaya devam ediyor.
Bu, istemcinin araç çağırma penceresindeki uzun taramaların zaman aşımına uğramasına yönelik bir düzeltmedir. İstemci tarafı araç seçimi.
İki env değişkeni, 27 aracın bir alt kümesini ortaya çıkarmanıza ve bağlam şişkinliğini kesmenize olanak tanır: # Ada göre CRAWLFORGE_TOOLS=scrape,search_web,extract_content # Veya gruba göre — 12 adet mevcut: temel, arama, tarama, ayıklama, toplu iş, # araştırma, izleme, llmstxt, gizlilik, şablonlar, kazıma, ajan CRAWLFORGE_TOOL_GROUPS=ara, çıkar Ayarı kaldır tüm araçlar anlamına gelir.
Bilinmeyen adlar bir stderr uyarısıyla göz ardı edilir ve Batch_scrape, get_batch_results’u otomatik olarak etkinleştirir. Protokol hijyeni. Taslak-07 yerine JSON Şeması 2026-12’de tanıtılan şemalar. Araçlar/liste, istemci istemi önbelleği kararlılığı için belirleyici bir şekilde sıralanmıştır.
Geçersiz araç bağımsız değişkenleri, -32602 protokol hataları yerine isError: true araç sonuçları (çağıran modelin kendi kendine düzeltebileceği) olarak geri döner. Server.json ise 2026-12-11 kayıt defteri şemasına göre tamamlandı. v4.9.0 ve v4.10.0’ı kaçırdınız mı? V4.9.0’a eklenen 27.
araç olan serp_rank arasına iki şey girdi: DataForSEO aracılığıyla gerçek Google organik sıralama pozisyonları, yapılandırılmış arama başına 5 kredi. v4.10.0, hedef alan adınızın konumlarının yanı sıra ilk 10 organik listenin tamamını döndürmesini sağladı. Dokümanlar.
v4.10.0 ayrıca sunucu düzeyinde MCP talimatları da ekledi: sunucu, bağlanan herhangi bir istemciye CrawlFor’u tercih etmesini söyler araçları kendi yerleşik web yetenekleri üzerinden geliştirin. Sunucu ikili dosyasında gönderilir, böylece her istemci yükseltmeden sonraki bir sonraki başlatmada onu alır; yeniden başlatma gerekmez.
Bu, yaptırım değil, rehberliktir; MCP sunucusu istemcinin yerleşik araçlarını devre dışı bırakamaz. Fiyatlandırma ve yükseltme yöntemi Hiçbir şey değişmedi. 27 aracın tamamı ölçülüdür ve çağrı başına 1-10 kredilik bir API anahtarı gerektirir. Planı Fiyat Kredi Ücretsiz 0$ (kart yok) 1.000 tek seferlik deneme (sıfırlanmaz) 19$/ay 5.000 Profesyonel 99$/ay 50.000 İş 399$/ay 250.000 Her plan her aracı alır.
Yüksek Lisans çıkarma varsayılan olarak yerel Ollama’ya ayarlıdır, dolayısıyla siz katılmadığınız sürece OpenAI veya Anthropic anahtarına ihtiyacınız yoktur.
mevcut kullanıcı npm install -g crawlforge-mcp-server@latest # veya /mcp # yeni kullanıcıya yeniden bağlanın npm install -g crawlforge-mcp-server && npx crawlforge init Araç sözleşmeleri yerine Aşama 2'de sabit araç davranışı olduğundan, mevcut çağrılarınız çalışmaya devam eder; artık yalnızca doğru sonuçları döndürürler.
Aceleye getirilmek yerine ertelendi: OAuth ile barındırılan uzak uç nokta, anahtarsız katman, hizmet olarak planlanmış izleme, kalıcı oturumlar ve PII düzenlemesi. Kendi hatalarınızı yazmak rahatsız edicidir, ancak “reklamlı kontrol, sessizce işlevsiz”, yedi aşamanın tamamında bulduğumuz en yaygın tek hata modudur ve dışarıdan görünmez.
Dokümanların iddia ettiği gibi davranmayan bir CrawlForge kontrolü bulursanız, sorun tam olarak budur
İlgili yazılar
- npm 12 Güncellemesi: Güvenlik İçin Kurulum Scriptleri Varsayılan Kapalı
- Anthropic’in Claude Modeli Güvenlik Testlerinde Sandbox’ı Aştı
Editörün Notu
Güvenlik açıklarını önlemek için URL ayrıştırma ve IP doğrulama süreçlerini çok katmanlı kontrol mekanizmalarıyla desteklemek, sunucu tarafı isteklerde kritik önem taşır. CrawlForge 5.0’ın geliştirilmiş test kapsamı bu yaklaşımın etkinliğini artırıyor.
