track_ changes
Simpan syot kilat sesebuah halaman, kemudian bandingkan halaman langsung dengannya bila-bila masa. Anda memperoleh sama ada sesuatu berubah, sebanyak mana, baris mana yang ditambah atau dibuang, dan satu skor persamaan struktur yang memberitahu sama ada penanda itu sendiri telah dibina semula. Atau hantar operation: "monitor" dan CrawlForge memeriksa halaman itu mengikut jadual untuk anda.
Kes Penggunaan
Kesan scraper yang hampir rosak
structural_similarity yang rendah bermakna penanda halaman telah dibina semula, dan itulah yang sebenarnya merosakkan pemilih — kesannya sebelum saluran pengekstrakan anda mula memulangkan hasil kosong.
Pantau halaman harga pesaing
Hadkan skop kepada jadual harga dengan selector, bandingkan mengikut jadual anda sendiri, dan baca baris yang ditambah dan dibuang untuk melihat apa yang berubah.
Jejaki dokumen undang-undang dan dasar
Bandingkan Terma Perkhidmatan, dasar privasi atau halaman kawal selia, dan simpan rekod boleh audit tentang baris mana sebenarnya yang berubah.
Tangkap perubahan memecahkan dalam dokumentasi API
Tangkap garis dasar halaman rujukan atau changelog vendor, dan bandingkan sebelum setiap keluaran anda.
Sahkan penempatan hanya mengubah apa yang dijangka
Tangkap garis dasar sebelum menghantar, bandingkan selepas itu, dan sahkan bahawa perbezaannya sepadan dengan perubahan yang diniatkan.
Endpoint
/api/v1/tools/track_changesParameters
Titik akhir ini menerima lapan parameter; schedule, notify_emails dan webhook_url terpakai hanya untuk operation: "monitor". Contoh lama menghantar objek trackingOptions, monitoringOptions dan storageOptions — API REST terhos menerima kunci tersebut dan mengabaikannya, jadi menghantarnya tidak mengubah apa-apa. Kawalan setara wujud pada pelayan MCP CrawlForge.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Required | - | Halaman yang hendak ditangkap atau dibandingkan. Example: https://competitor.com/pricing |
operation | string | Optional | compare | Salah satu daripada `"create_baseline"`, `"compare"` atau `"monitor"`. `monitor` mencipta [monitor terhos](/docs/api-reference/monitors) untuk URL itu dan tidak mengenakan apa-apa caj untuk panggilan tersebut. Sebarang nilai lain ditolak dengan 400. Example: compare |
selector | string | Optional | - | Pemilih CSS yang mengehadkan penjejakan kepada sebahagian halaman, contohnya `.pricing-table`. Garis dasar disimpan mengikut pasangan (url, selector), jadi URL yang sama boleh dijejaki pada beberapa skop secara berasingan. Memulangkan 422 jika pemilih tidak sepadan dengan apa-apa. Example: .pricing-table |
update_baseline | boolean | Optional | false | Untuk `compare` sahaja. Selepas membandingkan, tulis ganti garis dasar tersimpan dengan kandungan yang baru diambil. Gunakannya untuk perbandingan bergolek, di mana setiap panggilan melaporkan perubahan sejak panggilan sebelumnya dan bukan sejak tangkapan asal. Example: false |
respect_robots | boolean | Optional | true | Hormati robots.txt tapak sasaran. Dibiarkan pada `true`, laluan yang dilarang untuk `CrawlForge` ditolak dengan 403 sebelum apa-apa diambil dan tiada credits dicaj. Tetapkan kepada `false` hanya untuk sasaran yang anda mempunyai perjanjian sendiri dengannya — respons kemudiannya membawa entri `warnings` dan tindakan mengatasi itu direkodkan pada API key anda. Monitor terhos sentiasa menghormati robots.txt. Example: true |
schedule | string | Optional | 0 * * * * | Untuk `monitor` sahaja. Ungkapan cron lima medan yang dijalankan oleh monitor terhos, dinilai dalam UTC. Larian berturut-turut mesti berjarak sekurang-kurangnya 5 minit, jika tidak panggilan ditolak dengan 400. Example: */15 * * * * |
notify_emails | string[] | Optional | - | Untuk `monitor` sahaja. Sehingga 5 alamat yang dihantar e-mel apabila pemeriksaan menemui halaman baharu, berubah, disekat atau ralat. Example: ["alerts@example.com"] |
webhook_url | string | Optional | - | Untuk `monitor` sahaja. URL `https` awam yang menerima acara bertandatangan `monitor.page` dan `monitor.check.completed`. Satu `webhook_secret` dijana dan dipulangkan bersama monitor. Example: https://example.com/hooks/crawlforge |
Operasi
Cipta garis dasar sekali, kemudian bandingkan dengannya seberapa kerap yang anda mahu — atau serahkan halaman itu kepada monitor terhos.
schedule (setiap jam secara lalai), zon waktu UTC dan pengekalan 30 hari, dan memulangkannya di bawah data.monitor — termasuk webhook_secret. Panggilan itu sendiri tidak berkos; setiap pemeriksaan berjadual mengecaj 3 credits bagi setiap sasaran yang dibandingkan, dan sasaran yang disekat atau ralat adalah percuma. Uruskannya melalui API monitor atau papan pemuka.Tempatan atau terhos
Monitor berjadual berjalan di salah satu daripada dua tempat, dan tempat ia berjalan menentukan siapa yang perlu memastikan proses terus hidup dan bagaimana anda diberitahu.
operation: "create_scheduled_monitor" pada pelayan MCP CrawlForge menyimpan monitor di bawah ~/.crawlforge/monitors dan melancarkannya dalam proses, jadi pemeriksaan hanya berjalan selagi proses pelayan itu hidup; larian yang terlepas dikejar semula semasa mula semula, dan crawlforge monitor:run-due daripada cron sistem ialah laluan yang terjamin. Ia memberitahu melalui webhook atau Slack dari mesin anda dan tidak pernah menghantar e-mel. Setiap pemeriksaan tempatan yang anda jalankan berkos 3 credits.operation: "monitor" di sini, melalui /api/v1/monitors, atau daripada pelayan MCP dengan hosted: true. Penjadual CrawlForge sendiri mengambil, membandingkan dan merekodkan setiap pemeriksaan tanpa sebarang proses anda, dan memberitahu melalui e-mel dan webhook bertandatangan. 3 credits bagi setiap sasaran yang dibandingkan pada setiap pemeriksaan, dengan sasaran yang disekat atau ralat percuma. Uruskannya dari papan pemuka.Cara membaca perbandingan
Kedua-dua skor menjawab soalan yang berbeza, dan gabungannya lebih berguna daripada mana-mana satu.
Pengesanan berasaskan teks: halaman diambil melalui HTTP dan JavaScript tidak pernah dilaksanakan, jadi kandungan yang dipapar di sebelah pelanggan tidak kelihatan kepada titik akhir ini. Untuk pemeriksaan yang berjalan mengikut jadual tanpa proses anda sendiri, dengan webhook dan sejarah pemeriksaan, cipta monitor terhos. Untuk penjejakan terpapar pelayar, gunakan pelayan MCP CrawlForge, yang juga boleh menyerahkan monitor kepada penjadual terhos dengan hosted: true.
structural_similarity ialah null, bukan 0, apabila garis dasar tersimpan mendahului medan ini. Sifar ialah skor sebenar yang bermaksud tiada apa-apa struktur terselamat, jadi perbandingan yang tidak diukur melaporkan null sebaliknya. Jalankan semula create_baseline, atau hantar update_baseline sekali, untuk mula memberikannya skor.
Contoh Permintaan
# Step 1: capture the baseline (once per url + selector, kept 90 days)
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://competitor.com/pricing",
"operation": "create_baseline",
"selector": ".pricing-table"
}'
# Step 2: compare against it, as often as you like
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://competitor.com/pricing",
"operation": "compare",
"selector": ".pricing-table"
}'
# Rolling comparison: diff against the previous call, not the original capture
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://competitor.com/pricing",
"operation": "compare",
"selector": ".pricing-table",
"update_baseline": true
}'
# Hosted monitor: CrawlForge checks the page every 15 minutes on its own
# scheduler and posts signed webhooks. Creating it costs nothing; each check
# bills 3 credits per compared target.
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://competitor.com/pricing",
"operation": "monitor",
"selector": ".pricing-table",
"schedule": "*/15 * * * *",
"webhook_url": "https://example.com/hooks/crawlforge"
}'Contoh Respons
{ "success": true, "data": { "operation": "compare", "url": "https://competitor.com/pricing", "selector": ".pricing-table", "changed": true, "change_percent": 12.5, "structural_similarity": 0.9713, "added_count": 4, "removed_count": 2, "added_samples": [ "Pro $79 / month", "Includes 50,000 credits", "Enterprise", "Contact sales" ], "removed_samples": [ "Pro $99 / month", "Includes 25,000 credits" ], "baseline_captured_at": "2026-08-01T12:00:00.000Z", "compared_at": "2026-08-26T14:30:00.000Z", "baseline_updated": false }, "credits_used": 3, "credits_remaining": 997, "processing_time": 1180}data.changedBenar apabila cincangan kandungan berbeza daripada garis dasar — pemeriksaan terpantas jika anda hanya perlukan ya atau tidak.data.change_percentBaris ditambah campur dibuang sebagai peratusan daripada dokumen yang lebih besar, 0-100.data.structural_similarityPersamaan penanda 0-1. Null apabila garis dasar mendahului medan ini.data.added_samplesSehingga 20 baris ditambah, setiap satu dipangkas kepada 500 aksara. Bukan perbezaan penuh — gunakan added_count untuk jumlah sebenar.data.removed_samplesSehingga 20 baris dibuang, had yang sama seperti added_samples.data.baseline_updatedSama ada panggilan ini menulis ganti garis dasar, mencerminkan parameter update_baseline.credits_used3 credits, dicaj bagi setiap panggilan berjaya. Panggilan gagal tidak dicaj.Pengendalian Ralat
Garis dasar tidak dijumpai (404 BASELINE_NOT_FOUND)
Anda memanggil compare sebelum menyimpan garis dasar, atau garis dasar 90 hari itu telah luput. Jalankan create_baseline untuk pasangan (url, selector) yang tepat itu dahulu.
Pemilih tidak sepadan dengan apa-apa (422 SELECTOR_NOT_FOUND)
Pemilih CSS itu tidak memulangkan sebarang elemen. Semaknya terhadap penanda langsung — pemilih yang berfungsi dalam alat pembangun selepas JavaScript berjalan mungkin tidak wujud dalam HTML mentah yang diambil oleh titik akhir ini.
Sasaran tidak boleh dicapai (502 FETCH_FAILED)
Halaman memulangkan status bukan 2xx. Laman yang mempunyai perlindungan bot lazimnya berakhir di sini — ambilnya dengan stealth_mode sebaliknya.
Parameter tidak sah (400 VALIDATION_ERROR)
URL cacat, atau operation di luar create_baseline, compare dan monitor. Tatasusunan details dalam respons menamakan medan yang gagal. schedule yang bukan ungkapan cron lima medan, atau yang tercetus lebih kerap daripada setiap 5 minit, ditolak dengan kod yang sama.
Storan tidak tersedia (503 STORAGE_UNAVAILABLE)
Storan garis dasar tidak dapat dicapai. Cuba semula — tiada credits dicaj bagi panggilan yang gagal.
Disekat oleh robots.txt (403 Forbidden)
robots.txt tapak sasaran melarang laluan ini untuk CrawlForge. Tetapkan respect_robots: false untuk mengatasinya jika anda mempunyai perjanjian sendiri dengan sasaran — tindakan mengatasi itu direkodkan pada API key anda. Tindakan mengatasi itu tidak sampai kepada hos yang berada dalam senarai penarikan diri kekal CrawlForge, yang ditolak tanpa mengira nilai respect_robots.
Hadkan skop dengan selector dan bukannya menjejaki keseluruhan halaman. Garis dasar satu halaman penuh akan mengambil navigasi, pengaki, sepanduk kuki dan kandungan berputar, dan itulah biasanya yang menghasilkan perubahan pada setiap satu perbandingan.
Kos credits
create_baseline dan compare berharga 3 credits. Panggilan gagal tidak dicaj. Memanggil monitor tidak berkos; monitor terhos yang diciptanya mengecaj 3 credits bagi setiap sasaran yang dibandingkan pada setiap pemeriksaan berjadual, dengan sasaran yang disekat atau ralat percuma. Dengan compare mengikut jadual anda sendiri, kekerapan perbandingan anda — dan dengan itu kos anda — sepenuhnya di bawah kawalan anda.Pecahan Kos:
create_baseline: 3 credits, sekali bagi setiap pasangan (url, selector), sah 90 hari
compare: 3 credits setiap panggilan
monitor: 0 credits untuk mencipta; 3 credits bagi setiap sasaran yang dibandingkan pada setiap pemeriksaan berjadual
Contoh Kos Tinjauan, setiap URL:
Setiap jam: 24 panggilan/hari = 72 credits/hari
Setiap 6 jam: 4 panggilan/hari = 12 credits/hari
Harian: 1 panggilan/hari = 3 credits/hari
Cadangan Pelan:
Pelan Free: 1,000 credits percubaan sekali sahaja = kira-kira 5 URL dibandingkan setiap 6 jam selama sebulan
Pelan Hobby: 5,000 credits/bulan = kira-kira 13 URL dibandingkan setiap 6 jam ($19/bulan)
Pelan Professional: 100,000 credits/bulan = kira-kira 276 URL dibandingkan setiap 6 jam ($99/bulan)
Alat Berkaitan
Bersedia mencuba track_changes? Daftar secara percuma dan dapatkan 1,000 credits untuk menangkap garis dasar halaman pertama anda.