CrawlForge MCP
Laman UtamaPlaygroundKes PenggunaanIntegrasiHargaDokumentasiBlog
CrawlForge MCP v5.2: setiap perubahan merentas 28 alat
Product Updates
Kembali ke Blog
Kemas Kini Produk

CrawlForge MCP v5.2: setiap perubahan merentas 28 alat

C
CrawlForge Team
Pasukan Kejuruteraan
26 Ogos 2026
16 min bacaan

Pada halaman ini

Jawapan Pantas

CrawlForge MCP v5.2 ialah enam keluaran - 5.2.0 hingga 5.2.5 - yang dihantar dalam dua hari selepas satu pusingan ujian regresi langsung ke atas kesemua 28 alat. Baharu: templat shopify-product membaca /products/<handle>.json kedai itu sendiri untuk harga tepat, harga bandingan dan stok setiap varian; templat yang boleh mengambil endpoint boleh baca mesin dan bukan HTML; responseTime pada fetch_url; cached dan crawled_at pada crawl_deep; dan endpoint Ollama jauh melalui OLLAMA_API_KEY. Dibaiki: amazon-product memulangkan null terhadap setiap halaman Amazon sebenar sedangkan enam ujian unit lulus; track_changes menilai perubahan harga mengikut bahagian halaman sehingga pemantau tidak pernah berbunyi; scrape memadam kandungan strim rangka kerja dan memulangkan gema skema LLM sebagai data; Ollama tidak pernah didaftarkan sebagai pembekal LLM; scrape_with_actions membawa tujuh kecacatan Playwright; stealth_mode membocorkan satu perenderan Chromium setiap panggilan; carian kata kunci seluruh Reddit dibina semula dengan penemuan web serta penghidratan arkib selepas PullPush mula menolak semua klien automatik; dan pengekstrakan jadual PDF memulangkan tatasusunan kosong bagi setiap dokumen. Jumlah alat kekal 28, hanya reddit_search berubah harga (2 kepada 5 credits), dan tiada apa-apa lagi berubah bentuk atau nama. Naik taraf dengan npm install -g crawlforge-mcp-server@latest.

Setiap satu ujian amazon-product kami lulus. Alat itu memulangkan null untuk mata wang harga, null untuk penarafan, null untuk setiap imej, dan rentetan "Brand: Amazon" di tempat yang sepatutnya jenama. Tiada apa-apa nampak rosak dalam CI, kerana fixture ditulis supaya padan dengan pemilih, bukan dengan laman sebenar.

Itulah bentuk sebahagian besar CrawlForge MCP v5.2. Selama dua hari kami menjalankan kesemua 28 alat terhadap laman sebenar — Wikipedia, Hacker News, Amazon, kedai Shopify, npm, YouTube, GitHub, Reddit, sebuah PDF cukai IRS — dan menghantar enam keluaran: v5.2.0 hingga v5.2.5, serta empat keluaran pakej kongsi crawlforge-extractors. Ini keseluruhan set itu, disusun mengikut apa yang ia lakukan untuk anda, bukan mengikut nombor versi.

Jumlah alat kekal 28. Satu harga berubah. Tiada apa-apa dinamakan semula dan tiada bentuk output berubah, jadi ini naik taraf terus pakai.

Isi kandungan

  • Keluaran ini secara ringkas
  • Kenapa begitu banyak pembaikan mendarat serentak
  • Data produk: Shopify, Amazon, npm, YouTube
  • Carian seluruh Reddit selepas PullPush terpadam
  • Penjejakan perubahan yang benar-benar berbunyi
  • Kesetiaan scraping: kandungan yang sedang dipadam
  • LLM tempatan: Ollama akhirnya berfungsi
  • Automasi pelayar dan pelayar stealth yang tersekat
  • Pengesanan bahasa dan jadual PDF
  • Infrastruktur: cache, pengangkutan, Chromium
  • Satu salinan extractor sahaja
  • Kos credits
  • Cara menaik taraf

Keluaran ini secara ringkas

PerubahanAlatVersi
Templat shopify-product baharu membaca JSON kedai itu sendiriscrape_template5.2.0
Templat boleh mengambil endpoint boleh baca mesin, bukan HTMLscrape_template5.2.0
amazon-product dibina semula terhadap halaman sebenarscrape_template5.2.0
responseTime dalam responsfetch_url5.2.0
cached dan crawled_at dalam responscrawl_deep5.2.0
Endpoint Ollama jauh melalui OLLAMA_API_KEYalat berasaskan LLM5.2.0
Perubahan harga dinilai mengikut magnitud, bukan bahagian halamantrack_changes5.2.0
customSelectors benar-benar mengecilkan skop perbandingantrack_changes5.2.0
Kandungan strim rangka kerja tidak lagi dipadamscrape5.2.0
Muatan skrip tidak lagi dikira sebagai teks halamanscrape5.2.0
Gema skema LLM gagal secara jelas, bukan lulus sebagai datascrape5.2.0
Ollama didaftarkan sebagai pembekal LLM; model terpasang terbaik dipilihextract_structured, deep_research5.2.0
Tujuh kecacatan Playwright dibaikiscrape_with_actions5.2.0
Kebocoran perenderan dan pemulihan daripada tersekatstealth_mode5.2.0
Konfigurasi cache cakera dipatuhi; crawl_deep cache dalam memori sahajasemua alat bercache5.2.0
shopify-product disenaraikan dalam perihalan alat yang dibaca modelscrape_template5.2.1
structuralSimilarity boleh memberi skor di bawah 0.5track_changes5.2.1
Jadual susun atur ditukar kepada markdown, bukan dilepaskan sebagai HTMLscrape, extract_text5.2.2
Bahasa Cina, Greek, Arab, Norway dan Melayu kini boleh dikesananalyze_content5.2.2
Carian kata kunci seluruh Reddit dibina semula dengan penemuan web + penghidratan arkibreddit_search5.2.3
npm-package membaca dokumen registri, bukan halaman webscrape_template5.2.3
reddit_search berubah 2 → 5 creditsreddit_search5.2.4
customSelectors pada tag bukan div mengindeks elemen semula; pilihan banding yang diabaikan dilaporkantrack_changes5.2.5
youtube-video memulangkan kiraan tontonan sebenar, menambah sukascrape_templateextractors 1.2.1
Pengekstrakan jadual PDF memulangkan jadual yang sememangnya adaprocess_documentAPI terhos

Kenapa begitu banyak pembaikan mendarat serentak

Kerana kami berhenti mempercayai suite ujian dan menghalakan alat ke laman sebenar.

Kegagalan amazon-product di atas ialah kes paling jelas. Enam ujian unit melindungi templat itu dan kesemua enam lulus, kerana setiap pemilih yang diuji — meta tag priceCurrency, #acrPopover .a-size-base, img.a-thumbnail-image — tidak wujud di mana-mana pada Amazon hari ini, dan HTML fixture ditulis supaya mengandunginya. Ujian itu hanya menyemak bahawa kod kami bersetuju dengan dirinya sendiri.

Corak itu berulang. scrape_with_actions mempunyai tujuh kecacatan Playwright yang tidak kelihatan kepada suitenya kerana halaman palsunya melaksanakan apa sahaja yang dipanggil oleh pelaksana, termasuk API yang Playwright tidak ada. Templat youtube-video membaca atribut yang tidak muncul di mana-mana pada halaman tontonan YouTube sementara fixturenya mengekalkan ujian itu hijau. process_document membaca medan yang pustaka PDF isytiharkan tetapi tidak pernah tulis.

Jadi suite baharu ditulis supaya gagal dahulu terhadap kod sebelum pembaikan — 15 daripada 24 untuk amazon-product, 8 daripada 10 untuk skop cache crawl_deep, 7 untuk API Playwright scrape_with_actions. Suite itu kini 1,122 ujian unit dengan pematuhan protokol MCP 100% merentas kesemua 28 alat, tetapi angka yang penting ialah yang di atasnya: setiap pembaikan di bawah ditemui oleh halaman sebenar, bukan oleh CI.

Data produk: Shopify, Amazon, npm, YouTube

Empat daripada templat scrape_template berubah, dan tiga daripadanya bergerak ke arah yang sama: berhenti menghurai halaman yang dirender, baca data berstruktur yang laman itu sudah terbitkan.

shopify-product, yang baharu

Tema Dawn Shopify menghantar setiap lencana harga dalam markup tanpa syarat dan menyembunyikan yang tidak berkenaan dengan CSS komponen. Scraper yang membaca DOM nampak lencana "Sold out" pada produk yang ada seratus unit dalam stok. Minta LLM memberi harga bandingan bagi produk yang tidak mempunyainya dan ia akan menghasilkan satu yang munasabah — dalam ujian kami ia mereka-reka 27.99.

Shopify menyajikan data yang sama sebagai JSON di /products/<handle>.json, pada setiap kedai termasuk domain tersuai, jadi templat itu membaca yang itu:

Json
{
  "tool": "scrape_template",
  "params": {
    "template": "shopify-product",
    "url": "https://shop.example.com/products/kelpie-bandana"
  }
}

Anda dapat harga tepat, harga bandingan, on_sale, mata wang, julat harga merentas varian, stok setiap varian, pilihan, imej dan tag — tanpa penghuraian HTML dan tanpa LLM dalam laluan itu. Kerenah kedai yang ditemui dalam tangkapan sebenar sudah dikendalikan: harga bandingan yang tiada ialah "" pada satu kedai dan "0.00" pada kedai lain (kedua-duanya dibaca sebagai null, manakala produk yang betul-betul percuma mengekalkan harga 0.00), tag tiba sebagai tatasusunan atau rentetan bercantum koma, dan kerana endpoint itu tidak membawa bendera available, stok diterbitkan daripada pengurusan inventori, polisi dan kuantiti — melaporkan null dan bukannya meneka "ada stok" apabila muatan itu tidak menyatakannya.

Untuk membolehkannya, satu perubahan diperlukan di lapisan bawah: TemplateRegistry mendapat dua cangkuk pilihan, resolveUrl(url) untuk mengalihkan satu-satunya pengambilan alat itu dan extractRaw(body, url) untuk menghurai respons bukan HTML. Alat itu masih memiliki pengambilan yang dikawal SSRF dan kini melaporkan fetchedUrl apabila berlaku penulisan semula. Templat HTML tidak berubah.

amazon-product, dibina semula

Pemilih diterbitkan semula daripada tangkapan sebenar tiga halaman — sebuah peranti keluaran Amazon sendiri, sebuah kedai berjenama dan sebuah buku:

  • Mata wang datang daripada medan borang tambah-ke-troli yang tersembunyi, bukan meta tag.
  • Penarafan dihurai menjadi nombor daripada atribut title pada #acrPopover, jadi anda dapat 4.7 dan bukan "4.7 out of 5 stars".
  • Kiraan ulasan dihurai daripada "(198,594)" atau "198,594 global ratings" — Amazon guna kedua-duanya — dan memulangkan 198594.
  • Jenama menurunkan ketiga-tiga bentuk baris pengarang kepada nama semata.
  • Imej menggugurkan token saiz Amazon daripada URL. URL bertoken itu ialah thumbnail 1 KB; URL sama tanpanya ialah asal 16 KB.

npm-package, kini membaca registri

npmjs.com menjawab pengambilan HTTP biasa dengan 403, dan di mana badan respons sampai pun, pemilihnya bergantung pada serpihan nama kelas yang tidak lagi padan — versi kembali null, muat turun mingguan null, dan repository menunjuk ke pautan stargazers. Kini ia meleraikan halaman pakej kepada dokumen registrinya dan membaca yang itu, memulangkan versi, lesen, repositori, laman utama, penyelenggara, keywords, kebergantungan dan sebarang notis penamatan. URL repositori tiba sebagai git+ssh://, git+https://, git:// atau owner/repo ringkas, dan dinormalkan kepada https yang boleh dilayari.

Muat turun mingguan ditinggalkan dan bukan dipulangkan sebagai null, dan itu disengajakan. Ia berada pada endpoint berasingan, dan endpoint registri yang membawanya bersama data pakej ialah endpoint carian: minta left-pad dan ia menjawab pad-left. Memulangkan kiraan muat turun pakej lain lebih buruk daripada tidak memulangkan apa-apa.

youtube-video, mengira statistik yang betul

Templat itu membaca meta[itemprop="interactionCount"], yang tidak muncul di mana-mana pada halaman tontonan, jadi tontonan kembali null terhadap setiap video sebenar. Markup sebenarnya ialah satu blok InteractionCounter schema.org bagi setiap statistik, dibezakan hanya oleh interactionType adik-beradik — dan YouTube mengeluarkan kaunter LikeAction dahulu, jadi pembaikan yang paling jelas akan senyap-senyap memulangkan suka di tempat tontonan. Pemilihan kini mengikut interactionType, dihurai kepada nombor supaya sifar tontonan dibaca sebagai 0 dan bukan null, dan medan likes yang perihalannya sudah janjikan kini wujud.

Carian seluruh Reddit selepas PullPush terpadam

Jika saluran paip Reddit anda mula memulangkan 429 bulan ini, penyelesaiannya bukan tidur lebih lama, memutar user agent atau menambah proksi. Kami menguji ketiga-tiganya. Setiap permintaan ke PullPush kini memulangkan:

Json
{ "error": "Rate limit exceeded. This website does not provide free scraping resources for agents..." }

Apa-apa user agent, tiada user agent, user agent pelayar — tiada bezanya, dan dari sesetengah IP pelayan ia cabaran 403 Cloudflare pula. Ini polisi, bukan had kadar.

Ia lebih penting daripada sekadar satu endpoint mati, kerana peranan unik yang dimainkan PullPush. Arctic Shift, arkib Reddit awam yang satu lagi, tidak boleh mencari kata kunci merentas seluruh Reddit secara reka bentuk. Minta ia satu pertanyaan yang tidak menamakan subreddit dan tidak menamakan pengarang, dan ia memulangkan HTTP 400:

'query' query parameter requires one of: author, subreddit

Jadi carian berskop (satu subreddit, satu pengguna) masih berfungsi, dan yang tidak berskop — di mana anda tahu frasanya tetapi bukan komunitinya — langsung tiada backend. Itulah carian yang paling ramai orang mahukan, dan yang API Reddit sendiri tidak pernah dedahkan dengan kemas.

reddit_search kini menyajikannya dalam dua langkah. Penemuan: carian web terhad ke reddit.com memulangkan URL post mengikut susunan relevan, dan ID post diambil daripada segmen /comments/<id>/. Penghidratan: ID itu dihantar ke arkib Arctic Shift dalam satu carian pukal, yang memulangkan baris post sebenar — skor, kiraan komen, subreddit, pengarang, cap masa, selftext penuh — dan susunan arkib itu dipetakan semula kepada susunan relevan.

Perbezaan yang penting: ini baris arkib, bukan petikan carian. Penemuan hanya membekalkan alamat. Respons membawa source: "web_discovery" supaya anda tahu laluan mana yang menyajikannya.

Dua had, kedua-duanya dilaporkan dan bukan disembunyikan: after dan before tidak boleh digunakan pada laluan penemuan, dan respons menyatakan penapis itu diabaikan dan bukannya memulangkan hasil yang kelihatan tertapis; dan carian komen tanpa skop kini langsung tiada backend, jadi ia meminta skop subreddit atau author dan bukan gagal secara umum. PullPush tidak lagi dicuba secara automatik di mana-mana, termasuk sebagai sandaran carian berskop — di situ ia hanya mampu membelanjakan satu permintaan dan menimbus ralat Arctic Shift yang sebenar di bawah kegagalan kedua. Menghantar source: "pullpush" masih sampai kepadanya.

Apa-apa yang masih memberitahu anda bahawa PullPush ialah satu-satunya alat yang boleh mencari merentas subreddit ditulis sebelum Ogos 2026.

Penjejakan perubahan yang benar-benar berbunyi

track_changes mempunyai tujuh kecacatan merentas keluaran ini, dan yang pertama bermakna pemantauan harga — kegunaan utamanya — tidak berfungsi.

Perubahan harga dinilai mengikut berapa banyak ruang halaman yang diambilnya. Keertian adalah semata-mata isipadu, jadi $19.99 → $29.99 dan $19.99 → $99.99 kedua-duanya dinilai "minor", dan tanpa skop perubahan itu langsung tidak didaftarkan. Dengan notificationThreshold lalai kepada "moderate", pemantau yang disediakan dengan cara paling jelas tidak pernah berbunyi. Jumlah wang kini dibandingkan terus dan magnitud relatifnya menaikkan keertian sekurang-kurangnya kepada "moderate", atau "major" pada 20%+. Hanya nombor bertanda mata wang dikira, jadi kaunter tontonan dan jumlah ulasan tidak berbunyi; pemisah ribuan dihurai, jadi $1,299 dibaca sebagai 1299. Pasangan itu ditunjukkan dalam details.valueChanges supaya anda nampak sebab pemantau berbunyi.

customSelectors tidak pernah mengecilkan skop apa-apa. Ia dibaca hanya di dalam analisis peringkat bahagian, di mana ia menambah hash — jadi mengecilkan skop perbandingan menjadikannya lebih teruk. Pada halaman produk Amazon, mengecilkan skop ke blok harga menaikkan elemen terubah 456 → 3204 dan muatan 5.35 MB → 6.18 MB, serta melaporkan perubahan pada halaman yang harganya tidak bergerak. Analisis kini menyempitkan dokumen kepada subpokok yang padan, yang mengecilkan skop hashing, keserupaan dan diff serentak. Pemilih yang tidak memadankan apa-apa berpatah balik kepada dokumen penuh dan memberi amaran, bukannya senyap-senyap menjejak tiada apa-apa.

structuralSimilarity menipu dalam kedua-dua arah. Ia melaporkan 0 apabila ia langsung tidak mengukur — dan sifar ialah skor sebenar yang bermaksud "struktur berubah sepenuhnya", jadi memilih keluar daripada penjejakan struktur menghasilkan isyarat paling kuat bahawa struktur telah berubah. Ia kini null apabila tidak diukur. Kemudian dalam 5.2.1: skor itu tidak pernah boleh jatuh di bawah 0.5, kerana separuh hierarki dalam purata itu membandingkan objek yang dimulakan kosong dan tidak pernah ditulis, memulangkan pemalar 1. Halaman yang dibina semula daripada tag yang sama dalam sarang yang sama sekali berbeza mendapat 1.0 yang sempurna — tepat kes yang metrik itu wujud untuk menangkap. Ia kini histogram kiraan elemen mengikut kedalaman yang dibandingkan sebagai Jaccard berwajaran.

Muatan diff kini terbatas. line_diff membenamkan dokumen penuh sebelum+selepas, kerana pengempisan ruang putih merosotkan diff menjadi "buang semua, tambah semua". Kedua-dua diff kini membawa penanda omittedEntries yang jelas.

Tiga lagi muncul dalam 5.2.5, semasa menguji penjejakan harga di Zillow dan Newegg.

Mengecilkan skop kepada apa-apa selain segelintir tag langsung tidak menjejak apa-apa. Analisis peringkat elemen mengindeks senarai tetap — h1-h6, p, div, span, a — jadi pemantau yang diskopkan kepada address, td, li, tr atau dd membina garis dasar sifar elemen dan tidak akan pernah dapat melaporkan perubahan peringkat elemen. Halaman Zillow yang diskopkan kepada ['address'] membina garis dasar 0 elemen daripada 9 nod yang padan. Padanan di luar senarai itu kini turut di-hash; tag dalam senarai dilangkau, jadi kiraan berskop div tidak berubah.

Perbandingan berskop senyap-senyap berjalan tanpa skop. compareWithBaseline membuang pilihan penjejakan pemanggil dan menggunakan pilihan garis dasar. Itu betul dan diperlukan untuk diff yang sah — kedua-dua belah mesti dianalisis secara identik, dan garis dasar berskop tidak lagi memegang dokumen penuh untuk diskop semula — tetapi ia tidak berkata apa-apa, jadi perbandingan berskop memulangkan hasil yang sama dengan larian tanpa skop tanpa cara untuk mengetahuinya. Pilihan yang diabaikan kini dipulangkan dalam tatasusunan warnings.

"Text content changed" muncul pada perbandingan yang tidak menemui apa-apa perubahan, kerana bunyi token bawah ambang masih mengisi textChanges walaupun hasChanges ialah false. Ringkasan kini merujuk kepada keertian.

Disahkan terhadap halaman Zillow sebenar yang mendedahkannya: garis dasar bergerak daripada 0 kepada 9 elemen, dan perbandingan yang sebelum ini mendakwa true/"moderate"/28 diubah kini melaporkan false/"none"/0 diubah pada keserupaan 100%.

Kesetiaan scraping: kandungan yang sedang dipadam

Tiga kecacatan scrape berkongsi punca yang sama: laluan pembersihan yang melucutkan kandungan tidak kelihatan sedang membuang kandungan yang kelihatan.

Kandungan strim rangka kerja dipadam. Pelucutan kandungan tersembunyi membuang <div id="S:0" hidden>, iaitu tempat App Router Next.js menstrim halaman yang dirender. Pada halaman harga, pembalut itu ialah keseluruhan halaman yang kelihatan, jadi markdown kembali kosong dan setiap harga hilang bersamanya. Pengawal pembalut kini mengambil yang lebih besar antara bahagian teks dan bahagian markup.

Muatan skrip dikira sebagai teks halaman. Pengawal pembuangan pukal mengukur elemen dengan $('body').text(), yang merangkumi sumber setiap <script> sebaris. Pada sebuah kedai Shopify penyebutnya ialah 62,269 aksara yang mana 4,295 sahaja teks kelihatan — jadi pembalut yang memegang keseluruhan bahagian produk terukur di bawah ambang dan dipadam bersama harganya, selepas itu laluan json tiada harga untuk diekstrak dan model mereka-reka satu. Kedua-dua belah nisbah itu kini mengecualikan script/style/noscript/template.

Gema skema LLM dipulangkan sebagai data. Format json membaca hanya success daripada extract_with_llm dan membuang selebihnya, jadi tiga kegagalan sampai kepada pemanggil kelihatan seperti pengekstrakan bersih: dokumen skema dipulangkan dan bukan data halaman (JSON yang terbentuk baik, dan tanpa medan wajib ia lulus pengesahan juga), output yang gagal pengesahan, dan input yang senyap-senyap dipotong pada had 50,000 aksara. extract_with_llm kini mengesan gema skema, mencuba semula sekali, dan gagal dengan ralat yang boleh ditindaki; scrape menunjukkan ketidakpadanan skema dan pemotongan sebagai amaran sambil mengekalkan data.

Dan dalam 5.2.2, format markdown berhenti memulangkan HTML mentah. turndown-plugin-gfm menukar jadual hanya apabila baris pertamanya sepenuhnya <th>; setiap jadual lain terkena penapis keep pemalam itu dan dikeluarkan sebagaimana adanya. Halaman sebenar penuh dengan jadual susun atur — jadual yang digunakan untuk mengatur halaman, bukan untuk membentangkan data, dan Hacker News dibina sepenuhnya daripadanya — jadi scrape dengan formats: ["markdown"] dan extract_text dengan output_format: "markdown" memulangkan markup <table>. Peraturan yang didaftarkan selepas pemalam itu kini memadankan jadual tersebut dahulu dan meratakannya kepada kandungan selnya. Jadual dengan baris pengepala sebenar tidak disentuh dan masih dirender sebagai jadual paip GFM; kami menyemak sebuah jadual data Wikipedia sebelum dan selepas dan ia sama bait demi bait.

LLM tempatan: Ollama akhirnya berfungsi

Ollama tidak pernah didaftarkan sebagai pembekal LLM. LLMManager mendaftarkan hanya OpenAI dan Anthropic, kedua-duanya berpagar API key. Jadi pada mesin yang menjalankan Ollama tanpa kunci awan, extract_structured melangkau pengekstrakan LLM sepenuhnya dan melaporkan css_fallback — menghasilkan nilai seperti "$79.99$79.99" dan menggugurkan medan — dan deep_research senyap-senyap mematikan pengembangan pertanyaan, pemeringkatan semantik dan sintesis. extract_with_llm mempunyai klien peribadinya sendiri, itulah sebabnya ia berfungsi dan menutup jurang itu. Panggilan LLM yang gagal juga tidak lagi melaporkan extraction_method: "llm" dengan keyakinan 0.9.

Penghalaan model memilih model terpasang yang terbaik dan bukan sentiasa llama3.2. Diukur terhadap tiga halaman produk sebenar dengan jawapan rujukan yang disahkan, gemma3:4b mendapat 18/18 pada 1040 ms manakala llama3.2 mendapat 16/18 — dan kegagalannya bersistem, bukan bunyi pensampelan: sepanjang lima larian llama3.2 mereka-reka harga bandingan kelima-lima kali. Bilangan parameter tidak meramalkan ketepatan; model 4B itu mengalahkan kedua-dua 12B dan 20B. selectOllamaModel() memilih model terpasang berpangkat tertinggi; OLLAMA_DEFAULT_MODEL masih menang jika anda menetapkannya.

Endpoint Ollama jauh berfungsi melalui OLLAMA_API_KEY. Setiap panggilan HTTP Ollama menghantar Authorization: Bearer apabila pemboleh ubah itu ditetapkan, jadi pemasangan terhos boleh menghala ke Ollama Cloud atau mana-mana instance berpagar pengesahan tanpa kunci OpenAI atau Anthropic. Jika tidak ditetapkan, tiada apa-apa berubah.

Automasi pelayar dan pelayar stealth yang tersekat

scrape_with_actions membawa tujuh kecacatan API Playwright dan pemulihan ralat, semuanya tidak kelihatan kepada suite kerana halaman palsunya melaksanakan apa sahaja yang dipanggil pelaksana — termasuk API yang Playwright tidak ada:

  • scroll toElement memanggil scrollIntoView(), yang tidak wujud pada handle atau locator, jadi cabang itu melontar ralat setiap kali ia berjalan.
  • Tindakan wait mengiklankan enabled/disabled/stable tetapi menghantarnya ke API yang menolaknya.
  • Promise.race setiap tindakan berkongsi tarikh akhir dengan kerja yang dilumbanya dan menang, menggantikan ralat sebenar Playwright dengan "Action timeout" kosong — dan meninggalkan pemasa hidup bagi setiap tindakan.
  • Klik dan tekanan kekunci tidak menunggu dokumen yang digantikannya.
  • Percubaan semula rantaian dimainkan semula terhadap apa sahaja yang ditinggalkan percubaan gagal, tanpa pernah memuat semula.
  • Setiap strategi pemulihan terletak di sebalik retries > 0 sedangkan skema itu menetapkan retries lalai kepada 0, jadi tiada satu pun boleh berjalan.

Pelayar stealth menyekat dirinya sendiri. stealth_mode create_page tidak pernah menutup halamannya, membocorkan satu perenderan Chromium setiap panggilan sehingga instance itu kehabisan memori. Pelayar yang tersekat kemudian digunakan semula selama-lamanya di sebalik semakan kebenaran semata-mata, dan pembersihan tergantung pada panggilan protokol ke pelayar yang sudah mati, jadi ia tidak boleh dilepaskan dari jauh. Kini ada pengesanan mayat isConnected(), pengendali putus sambungan, pembersihan yang melumbakan penutupan terhadap tarikh akhir 5 s dengan sandaran SIGKILL dan penciptaan semula kolam, serta mutex pelancaran dalam penerbangan.

Imej terhos mengabaikan Chromium sistem. chromium.launch kini mematuhi PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH — Dockerfile menetapkannya sejak dahulu, tetapi Playwright sendiri tidak pernah membaca pemboleh ubah persekitaran — jadi laluan pelayar berhenti mati pada Alpine mencari chrome-headless-shell yang tidak pernah dimuat turun.

Pengesanan bahasa dan jadual PDF

Lima bahasa tidak boleh dikesan. analyze_content menapis output franc terhadap peta nama bahasa, dan lima kunci dalam peta itu ialah kod ISO 639-2/B — chi, gre, ara, nor, msa — yang franc, yang mengeluarkan ISO 639-3, tidak pernah hasilkan. Kesannya senyap dan menyeluruh: halaman yang ditulis sepenuhnya dalam bahasa Cina memulangkan null. Begitu juga Greek, Arab, Norway dan Melayu. Kodnya kini cmn, ell, arb, nob dan zlm/zsm.

Satu lagi pepijat berada di belakangnya: franc menilai sistem tulisan yang paling kerap, dan halaman Cina atau Jepun membawa deretan biasa nama produk dan contoh kod bahasa Inggeris, jadi ia dinilai sebagai prosa tulisan Latin. Pengesanan kini memintas apabila bahagian Han, kana atau hangul mencapai sekurang-kurangnya 10% daripada huruf — diukur merentas halaman sebenar, halaman tulisan Latin berada pada 0% dan halaman CJK tulen pada 24–51%.

Pengekstrakan jadual PDF memulangkan [] untuk setiap dokumen yang pernah dihantar kepadanya. Laluan process_document terhos membaca TableResult.mergedTables, medan yang pustaka PDF isytiharkan tetapi tidak pernah tulis; jadualnya berada pada result.pages[].tables. Terhadap tiga PDF sebenar — kertas arXiv "Attention Is All You Need", borang W-9 dan borang 1040 IRS — medan yang dibaca itu memegang 0 jadual dalam setiap kes manakala tatasusunan setiap halaman memegang 7, 6 dan 11. Bersama pembaikan itu, jadual yang selnya kosong semua digugurkan (ia kotak yang dilukis — garis luar borang dan sempadan rajah — bukan data), setiap jadual melaporkan halamannya, had 20 jadual menyatakan berapa banyak yang ditinggalkannya, dan jadual yang bergaris mendatar sahaja membawa nota dan bukannya dibaca sebagai jadual satu lajur yang tulen.

Infrastruktur: cache, pengangkutan, Chromium

CACHE_DIR dan CACHE_ENABLE_DISK tidak melakukan apa-apa. Kedua-duanya sentiasa didedahkan dalam konfigurasi, tetapi CacheManager tidak membaca satu pun: direktorinya dipasang mati dan cache cakera dihidupkan tanpa syarat. Setiap proses ujian oleh itu berkongsi satu direktori yang bertahan setiap larian — 1,778 fail telah terkumpul — dan kerana crawl_deep berkunci pada URL yang dirangkak manakala pelayan ujian mengikat port sementara yang OS kitar semula, satu larian boleh diberikan rangkakan larian terdahulu terhadap laman yang berbeza. Itulah punca satu kegagalan sekejap-sekejap yang jarang berlaku dalam larian selari, yang petandanya ada pada masa: dua kegagalan mengambil 13 ms dan 5 ms untuk ujian yang melakukan dua rangkakan penuh setiap satu. Nilai lalai tidak berubah — pemboleh ubah itu cuma melakukan apa yang sentiasa didakwanya.

cacheEnabled: false pada crawl_deep mematikan hanya separuh daripada cache. BFSCrawler membina cachenya sendiri dan menyimpan setiap badan halaman yang diambil tanpa cara untuk mematikannya, jadi pemanggil yang secara jelas meminta tiada cache masih disajikan halaman bercache. Kedua-dua cache juga menulis ke cakera walaupun diperihalkan dalam kod sebagai setiap-sesi; pada cakera, badan halaman hidup lebih lama sejam daripada perangkak itu dan merentas sempadan proses. Kedua-duanya kini dalam memori sahaja.

Alat berkeupayaan tugas gagal melalui Streamable HTTP. cloneServerForSession menggugurkan keupayaan dan stor tugas, jadi tools/call pada agent, crawl_deep, batch_scrape atau deep_research melontar "No task store provided for task-capable tool."

Satu salinan extractor sahaja

Pelayan MCP dan API REST CrawlForge masing-masing membawa salinan extractor templat mereka sendiri, dalam dua bahasa, tanpa apa-apa yang mengesan percanggahan — dan ia bercanggah dua kali dalam dua hari. amazon-product dibaiki di pihak MCP pada 25 Ogos manakala salinan REST terus memulangkan penarafan null dan "Brand: Amazon" sehingga 26 haribulan, dan shopify-product wujud di satu pihak sahaja.

Kini ada satu pelaksanaan sahaja, diterbitkan sebagai crawlforge-extractors, yang dipasang oleh kedua-dua permukaan. TemplateRegistry dieksport semula dengan API yang tidak berubah — tiada apa-apa tentang scrape_template berubah bagi pemanggil. Ia kebergantungan masa jalan, bukan peer dependency, jadi npm install -g crawlforge-mcp-server menariknya masuk secara automatik; tiada apa-apa tambahan untuk dipasang.

Dua lagi kelakuan berpindah ke sana kerana satu permukaan memilikinya dan yang satu lagi tidak:

  • readBody menyahkod respons menggunakan charsetnya sendiri dan enggan menimbal melebihi had. Pelayan MCP melakukan kedua-duanya; API REST memanggil response.text(), yang menganggap UTF-8 — jadi halaman yang disajikan sebagai Shift_JIS, GBK atau ISO-8859-1 kembali sebagai mojibake — dan akan menimbal badan bersaiz apa pun ke dalam fungsi serverless.
  • structureSignature mencap jari dokumen sebagai perbendaharaan tagnya campur histogram kiraan elemen mengikut kedalaman, cukup kecil untuk disimpan bersebelahan garis dasar penjejakan perubahan, dan menerima punca pilihan supaya pemanggil yang menjejak pemilih CSS menilai kawasan itu sahaja.

Pilihan lain ialah ujian pariti yang memberitahu kami selepas kejadian salinan mana yang salah. Memadam salinan kedua lebih murah daripada mengesan percanggahan di dalamnya.

Kos credits

Satu harga berubah dalam keluaran ini. reddit_search berubah daripada 2 credits kepada 5, sepadan dengan search_web.

Sebabnya ialah mekanisme di atas: carian seluruh Reddit kini membelanjakan panggilan carian huluan yang sama seperti search_web, pada kos yang sama kepada kami. Carian berskop masih menanyakan arkib secara terus dan tidak menelan kos tambahan kepada kami, tetapi turut dibilkan 5, kerana alat itu mempunyai satu harga terbitan dan bukan harga setiap permintaan yang anda perlu modelkan. Pada 1,000 credits sekali sahaja pelan Free, itu 200 carian Reddit.

Selebihnya tidak berubah: scrape_template ialah 1 credit setiap panggilan templat mana pun yang anda guna, fetch_url 1, track_changes 3, crawl_deep 4, batch_scrape 5 setiap URL. Permintaan yang gagal tidak pernah dicaj.

Cara menaik taraf

Bash
npm install -g crawlforge-mcp-server@latest
crawlforge --version   # 5.2.5

Jika klien MCP anda melancarkan pelayan dengan npx, ia mengambil keluaran itu pada mula semula berikutnya. 5.2.5 bergantung terus pada crawlforge-extractors@^1.2.1, jadi pembaikan kiraan tontonan youtube-video datang bersamanya.

Tiada perubahan yang memecahkan apa-apa: tiada alat dinamakan semula, tiada bentuk output berubah, dan hanya reddit_search mengubah harga. Satu perkara untuk disemak sebelum menaik taraf ialah kiraan bajet anda jika anda memanggil reddit_search dalam gelung — ia 5 credits sekarang, bukan 2.

Pembaikan yang sama sudah aktif pada API REST terhos, jadi tiada apa-apa untuk dipasang jika anda memanggil CrawlForge melalui HTTP.

Mahu mencuba mana-mana daripada ini tanpa menyediakan pelayan? Mula percuma dengan 1,000 credits — tanpa kad kredit — kemudian layari rujukan API untuk kesemua 28 alat. Bacaan berkaitan: alternatif API Reddit yang masih berfungsi pada 2026 dan mengekstrak data dengan LLM tempatan dan Ollama.

Cuba sendiri — tiada pendaftaran diperlukan

Jalankan mana-mana daripada 28 alat scraping dan pengekstrakan CrawlForge dalam playground, kemudian mula secara percuma dengan 1,000 credits.

1,000 credits percuma • Sekali sahaja • Tiada kad kredit diperlukan

Tag

releasev5.2.5changelogscrape_templatetrack_changesreddit_searchOllamaMCP

Tentang Penulis

C

CrawlForge Team

Pasukan Kejuruteraan

Membina MCP server web scraping yang paling menyeluruh. Kami mencipta alatan yang membantu pembangun mengekstrak, menganalisis dan mengubah data web untuk aplikasi AI.

Kekal dikemas kini dengan pandangan terkini

Dapatkan tutorial, kemas kini produk dan petua web scraping terus ke peti masuk anda.

Tiada spam. Berhenti melanggan bila-bila masa.

Praktikkan ini

Uji alat CrawlForge pada mana-mana URL — percuma, tanpa pendaftaran.

Pada halaman ini

Frequently Asked Questions

Apa yang baharu dalam CrawlForge MCP v5.2?+

v5.2 ialah enam keluaran (5.2.0 hingga 5.2.5) yang dihantar dalam dua hari selepas menjalankan kesemua 28 alat terhadap laman sebenar. Baharu: templat shopify-product yang membaca /products/<handle>.json kedai itu sendiri, keupayaan mana-mana templat mengambil endpoint boleh baca mesin dan bukan HTML, responseTime pada fetch_url, cached dan crawled_at pada crawl_deep, serta endpoint Ollama jauh melalui OLLAMA_API_KEY. Dibaiki: templat amazon-product yang memulangkan null terhadap setiap halaman Amazon sebenar, pemantauan harga yang tidak pernah berbunyi, scrape memadam kandungan strim rangka kerja, gema skema LLM lulus sebagai data, tujuh kecacatan Playwright dalam scrape_with_actions, kebocoran perenderan pelayar stealth, carian seluruh Reddit selepas PullPush terpadam, templat npm-package dan youtube-video, lima bahasa yang tidak dapat dikesan, dan pengekstrakan jadual PDF yang memulangkan tatasusunan kosong bagi setiap dokumen. Jumlah alat kekal 28.

Adakah menaik taraf ke CrawlForge MCP v5.2.5 memecahkan apa-apa?+

Tidak. Tiada alat dinamakan semula dan tiada bentuk output berubah, jadi ia naik taraf terus pakai. Satu-satunya perubahan harga ialah reddit_search, daripada 2 credits kepada 5 - semak kiraan bajet anda jika anda memanggilnya dalam gelung. Medan baharu bersifat tambahan: responseTime pada fetch_url, cached dan crawled_at pada crawl_deep, fetchedUrl pada scrape_template apabila templat mengalihkan pengambilannya sendiri. Jalankan npm install -g crawlforge-mcp-server@latest, atau mulakan semula klien MCP anda jika ia melancarkan pelayan dengan npx.

Adakah terdapat alternatif PullPush untuk mencari seluruh Reddit?+

Ya. PullPush kini menjawab setiap permintaan automatik dengan HTTP 429 dan mesej "This website does not provide free scraping resources for agents" - itu polisi, bukan had kadar, jadi percubaan semula, backoff dan menukar user agent tidak membantu. Ia satu-satunya backend awam yang boleh mencari kata kunci merentas seluruh Reddit, kerana Arctic Shift menolak sebarang pertanyaan kata kunci yang tidak menamakan subreddit atau pengarang dengan HTTP 400. reddit_search CrawlForge menggantikannya dengan laluan dua langkah: carian web terhad menemui ID post, kemudian arkib Arctic Shift dibaca mengikut ID, jadi hasilnya baris arkib sebenar dengan skor, kiraan komen dan selftext penuh, bukan petikan carian.

Bagaimana saya mendapatkan data produk Shopify tanpa menghurai HTML?+

Gunakan templat shopify-product, yang membaca endpoint /products/<handle>.json kedai itu sendiri dan bukan halaman yang dirender. Ia berfungsi pada mana-mana kedai Shopify termasuk domain tersuai dan memulangkan harga tepat, harga bandingan, on_sale, mata wang, julat harga merentas varian, stok setiap varian, pilihan, imej dan tag. Ini penting kerana tema Dawn Shopify menghantar setiap lencana harga dalam markup tanpa syarat dan menyembunyikan yang tidak berkenaan dengan CSS, jadi scraper DOM membaca lencana "Sold out" pada produk yang ada stok, dan LLM yang diminta harga bandingan yang tidak wujud akan mereka-rekanya.

Kenapa reddit_search berubah daripada 2 credits kepada 5?+

Kerana carian seluruh Reddit kini membelanjakan panggilan carian huluan yang sama seperti search_web, pada kos yang sama. Carian berskop masih menanyakan arkib secara terus dan tidak menelan kos tambahan, tetapi turut dibilkan 5, kerana alat itu mempunyai satu harga terbitan dan bukan harga setiap permintaan yang anda perlu modelkan. Pada 1,000 credits sekali sahaja pelan Free, itu 200 carian. Harga setiap alat lain tidak berubah: scrape_template 1, fetch_url 1, track_changes 3, crawl_deep 4, batch_scrape 5 setiap URL.

Adakah saya perlukan kunci OpenAI atau Anthropic untuk alat berasaskan LLM?+

Tidak jika anda menjalankan Ollama. Sebelum ini LLMManager mendaftarkan hanya OpenAI dan Anthropic, kedua-duanya berpagar API key, jadi pada mesin yang menjalankan Ollama tanpa kunci awan, extract_structured senyap-senyap berpatah kepada pengekstrakan CSS dan deep_research diam-diam mematikan pengembangan pertanyaan, pemeringkatan dan sintesis. Ollama kini pembekal berdaftar, penghalaan model memilih model terpasang terbaik dan bukan menetapkan llama3.2 secara keras, dan OLLAMA_API_KEY membolehkan pemasangan terhos menghala ke Ollama Cloud atau mana-mana instance berpagar pengesahan.

Bagaimana pepijat ini lulus suite ujian?+

Fixture ditulis supaya padan dengan kod, bukan dengan dunia sebenar. Setiap pemilih yang diuji oleh ujian amazon-product - meta tag priceCurrency, #acrPopover .a-size-base, img.a-thumbnail-image - tidak wujud di mana-mana pada Amazon hari ini, tetapi HTML fixture mengandunginya, jadi kesemua enam ujian lulus sementara alat itu memulangkan null. scrape_with_actions mempunyai tujuh kecacatan Playwright yang tidak kelihatan kepada suitenya kerana halaman palsunya melaksanakan apa sahaja yang dipanggil pelaksana, termasuk API yang Playwright tidak ada. Suite baharu ditulis supaya gagal dahulu terhadap kod sebelum pembaikan: 15 daripada 24 untuk amazon-product, 8 daripada 10 untuk skop cache crawl_deep, 7 untuk API Playwright scrape_with_actions.

Artikel Berkaitan

CrawlForge MCP v5.2.0: Shopify Product Data Without Parsing HTML
Product Updates

CrawlForge MCP v5.2.0: Shopify Product Data Without Parsing HTML

v5.2.0 adds a shopify-product template that reads the store's own JSON instead of its markup, rebuilds the Amazon template against live pages after it passed six tests while returning nulls, and fixes price monitoring that never fired.

C
CrawlForge Team
|
26 Ogo
|
11m
CrawlForge MCP v5.1.0: cari Reddit tanpa API
Product Updates

CrawlForge MCP v5.1.0: cari Reddit tanpa API

reddit.com menyekat setiap scraper kami — jadi v5.1.0 menghantar reddit_search, alat ke-28 yang mencari post dan komen serta membaca thread penuh melalui arkib komuniti. Tanpa API key Reddit, tanpa kelayakan, 5 credits.

C
CrawlForge Team
|
24 Ogo
|
9m
CrawlForge v5.0.4: 34 pembaikan daripada ujian langsung 27 alat MCP
Product Updates

CrawlForge v5.0.4: 34 pembaikan daripada ujian langsung 27 alat MCP

Empat tampalan dalam sehari: kami menguji secara langsung semua 27 alat MCP dan setiap subarahan CLI terhadap laman sebenar dan membaiki 34 kecacatan.

C
CrawlForge Team
|
20 Ogo
|
10m

Footer

CrawlForge MCP

Web scraping gred perusahaan untuk Ejen AI. 28 alat MCP khusus yang direka untuk pembangun moden yang membina sistem pintar.

Produk

  • Ciri
  • Playground
  • Harga
  • Kes Penggunaan
  • Integrasi
  • Alternatif
  • Changelog

Sumber

  • Mula Bekerja
  • Rujukan API
  • Templat
  • Panduan
  • Blog
  • Glosari
  • Soalan Lazim
  • Peta Laman

Pembangun

  • Protokol MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Syarikat

  • Tentang
  • Hubungi
  • Privasi
  • Terma
  • Penggunaan Boleh Diterima
  • Cookies

Kekal dikemas kini

Dapatkan kemas kini terkini tentang alat dan ciri baharu.

Dibina dengan Next.js dan protokol MCP

© 2025-2026 CrawlForge. Hak cipta terpelihara.