Langkau ke kandungan
PemantauanLanjutan3 credits

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

POST/api/v1/tools/track_changes
Auth Required
1 permintaan/s pada pelan Free
3 credits

Parameters

NameTypeRequiredDefaultDescription
url
stringRequired-
Halaman yang hendak ditangkap atau dibandingkan.
Example: https://competitor.com/pricing
operation
stringOptionalcompare
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
stringOptional-
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
booleanOptionalfalse
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
booleanOptionaltrue
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
stringOptional0 * * * *
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
stringOptional-
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.

create_baseline
Mengambil halaman, menurunkannya kepada teks kelihatan yang dinormalkan, dan menyimpannya bersama cincangan kandungan dan tandatangan struktur. Garis dasar disimpan 90 hari bagi setiap akaun API. Jalankan ini dahulu — membandingkan tanpa garis dasar memulangkan 404.
compare
Mengambil halaman semula dan membandingkannya baris demi baris dengan garis dasar tersimpan. Memulangkan peratusan perubahan, persamaan struktur, kiraan, serta sampel baris yang ditambah dan dibuang. Ini ialah operasi lalai.
monitor
Mencipta monitor terhos yang dinamakan mengikut hos URL, dengan satu sasaran ini, 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.

Pada mesin anda — pelayan MCP
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.
Terhos — penjadual CrawlForge
Dicipta dengan 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.

change_percent — berapa banyak teks berubah
Baris ditambah campur dibuang sebagai bahagian daripada dokumen yang lebih besar, 0-100. Tinggi pada sebarang kemas kini kandungan sebenar; juga tinggi pada halaman yang membawa cap masa, kaunter paparan atau testimoni berputar, jadi jangkakan lantai bising pada halaman dinamik.
structural_similarity — adakah penanda masih sama
Skor 0-1 yang membandingkan perbendaharaan tag dan kedalaman sarang. change_percent tinggi dengan structural_similarity tinggi bermakna susun atur yang sama dengan teks baharu. Skor rendah bermakna halaman telah dibina semula, dan itulah yang merosakkan pemilih.

Contoh Permintaan

terminalBash
# 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

200 OK1,180ms
{
"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
}
Field Descriptions
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.

Kos credits

3 credits
3 credits setiap panggilan
Kedua-dua 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