Phát hiện thay đổi trang web
Theo dõi một trang web hoặc một phần của trang (CSS selector) và nhận e-mail hay webhook kèm diff khi nội dung thay đổi.
Kết quả
Bấm “Chạy” để xem kết quả.
POST /v1/page-watch với url để tạo watcher: trang được tải ngay để lấy bản gốc, sau đó định kỳ mỗi interval_minutes. Bạn chọn phần được so sánh: selector CSS tuỳ chọn (lấy mọi phần tử khớp), mode text (chữ hiển thị, giữ xuống dòng, bỏ script và style), html (mã HTML, mỗi thẻ một dòng) hoặc regex (chỉ phần do pattern trích ra, ví dụ giá). Loại bỏ phần hay thay đổi trước khi so sánh bằng ignore (tối đa 20 biểu thức chính quy) và ignore_presets (dates, times, numbers, có cả dạng tiếng Việt như “ngày 11 tháng 11”, “5 phút trước”). Nội dung đã chuẩn hoá (tối đa 200 KB) được lưu nén cùng mã SHA-256.
Khi mã băm thay đổi, một sự kiện change kèm diff dạng unified (cắt còn 4 KB; giữ 20 sự kiện gần nhất) được lưu lại và gửi tới webhook_url ({"event": "page.changed", "watcher", "added", "removed", "diff", "hash", "previous_hash"}) cùng e-mail đã xác minh của tài khoản (tối đa một e-mail mỗi giờ cho mỗi watcher, có giới hạn theo ngày). Ba lần kiểm tra lỗi liên tiếp tạo một cảnh báo page.error. Website trả về 429 / 503 sẽ được để yên theo Retry-After (hoặc gấp đôi chu kỳ); robots.txt được kiểm tra khi tạo và hằng tuần, bot của chúng tôi tự giới thiệu là APIBoxBot.
GET /v1/page-watch liệt kê các watcher, /{id} xem một watcher kèm sự kiện (include_snapshot=true để lấy cả nội dung đã lưu), PATCH để sửa (URL hoặc quy tắc mới sẽ lấy lại bản gốc), DELETE để xoá, /{id}/events trả về lịch sử và POST /{id}/check chạy thử mà không thay đổi gì. dry_run=true xem trước nội dung đã chuẩn hoá mà không cần tài khoản. Theo gói: Free 3 watcher, chu kỳ từ 60 phút; Starter 20, từ 30 phút; Pro 100, từ 15 phút.
Dùng trong code của bạn
curl -X POST "https://apibox.io.vn/v1/page-watch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.edu.vn/tuyen-sinh","name":"Tuyển sinh","selector":".news","ignore_presets":"dates","interval_minutes":60,"webhook_url":"https://example.com/hooks/page"}'const res = await fetch('https://apibox.io.vn/v1/page-watch', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"url": "https://example.edu.vn/tuyen-sinh",
"name": "Tuyển sinh",
"selector": ".news",
"ignore_presets": "dates",
"interval_minutes": 60,
"webhook_url": "https://example.com/hooks/page"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/page-watch",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://example.edu.vn/tuyen-sinh", "name": "Tuyển sinh", "selector": ".news", "ignore_presets": "dates", "interval_minutes": 60, "webhook_url": "https://example.com/hooks/page"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/page-watch');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"url":"https://example.edu.vn/tuyen-sinh","name":"Tuyển sinh","selector":".news","ignore_presets":"dates","interval_minutes":60,"webhook_url":"https://example.com/hooks/page"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Tài liệu API → Nhận API key miễn phí
Hỏi đáp
Làm sao tránh cảnh báo vì bộ đếm lượt xem, ngày giờ?
Dùng CSS selector cho đúng phần cần theo dõi, thêm ignore_presets=dates,times,numbers hoặc mẫu ignore riêng, và kiểm tra trước bằng dry_run=true.
Có theo dõi được trang cần đăng nhập không?
Không. Chỉ tải trang công khai, không gửi cookie, và từ chối URL mà robots.txt không cho bot của chúng tôi truy cập.
Việc kiểm tra định kỳ có trừ quota không?
Không. Tạo, sửa, chạy thử và xem trước tính một request mỗi lần; các lệnh đọc GET miễn phí.