OTA PortalHarth Living
Dữ liệu đọc tới 24/09/2026 (số liệu Booking) · PriceLabs 27/09/2026 · nguồn sửa lần cuối 29/09/2026 09:28
Tổng quan › Dữ liệu & báo cáo › Tài liệu kỹ thuật

Luật truy cập OTA và PriceLabs — đọc tự do, ghi phải xin phép

Tổng quanBáo cáo & auditKho dữ liệuTài liệu kỹ thuậtVề dữ liệu

Luật truy cập OTA và PriceLabs — đọc tự do, ghi phải xin phép

Nguồn: 10-rules/ota-readonly-rule.md
Mục lục

Luật truy cập — Booking.com · Airbnb · Agoda · PriceLabs

User chốt 03/09/2026, sửa lại cùng ngày sau khi user chỉ ra bản đầu quá chặt. Áp cho MỌI agent trong workspace (Claude Code, Codex, Cline, Antigravity) và MỌI công cụ điều khiển trình duyệt.

0. Nguyên tắc gốc

Agent truy cập bốn hệ thống này để đọc và hiểu thông tin. Không tự ý chỉnh sửa, không áp dụng, không kích hoạt bất cứ thay đổi nào. Mọi việc chỉnh sửa chỉ làm khi user ra lệnh trực tiếp cho đúng việc đó.

Ranh giới đúng là ĐỌC ↔ GHI, không phải BẤM ↔ KHÔNG BẤM

Bản luật đầu tiên cấm thẳng mọi cú click. Sai ở chỗ: nó rộng hơn chính mục đích của mình. Bấm sang trang 2 của một bảng không đổi giá, không đổi lịch, không gửi gì cho ai — nó chỉ đổi cái agent đang nhìn. Cấm nó không bảo vệ được gì, chỉ làm mất dữ liệu.

Phép thử một câu, dùng trước mọi thao tác:

Sau thao tác này, có thứ gì trên tài khoản khác đi mà khách, nền tảng, hoặc user nhìn thấy được không?

  • Không → đọc hoặc điều khiển hiển thị. Xem tầng A và B.
  • Có → ghi. Cấm, trừ khi user vừa ra lệnh đúng việc đó. Xem tầng C.
  • Không chắc → coi như CÓ. Dừng và hỏi.

Gọn lại thành một câu để nhớ: bấm để xem thì tự làm, save hay apply thì phải xin.

1. Bốn hệ thống bị ràng buộc

# Hệ thống Miền
1 Booking.com — Extranet / Group homepage admin.booking.com, account.booking.com, partner.booking.com
2 Airbnb — Host / Hosting dashboard airbnb.com/hosting/*, airbnb.com/multicalendar, airbnb.com/users/*
3 Agoda — Partner Portal / YCS portal.agoda.com, ycs.agoda.com, partnerhub.agoda.com
4 PriceLabs — Dynamic Pricing app.pricelabs.co, pricelabs.co

Bốn hệ thống này điều khiển tiền thật và phòng thật. PriceLabs còn đẩy giá xuống cả ba kênh cùng lúc, nên một thao tác sai ở đó lan ra toàn danh mục.

2. Thang ưu tiên — thử hết bậc trên rồi mới xuống bậc dưới

Bài học 03/09: 26 dòng bảng giá PriceLabs không bị luật chặn, mà bị agent thiếu ý tưởng. Có đường lấy dữ liệu không cần bấm mà agent không nghĩ ra.

Bậc Cách lấy Ghi chú
1 Đọc response API đã tải — list_network_requests rồi get_network_request Rẻ nhất, đầy đủ nhất. Endpoint dạng /api/... thường trả trọn bộ dữ liệu, không phân trang như giao diện
2 Tải lại trang rồi đọc lại network Dùng khi DevTools bắt đầu ghi sau lúc trang đã tải nên không bắt được request gốc. Reload là điều hướng tới URL xem — hợp lệ
3 evaluate_script chỉ-đọc trên DOM Khi dữ liệu đã render sẵn
4 Điều khiển hiển thị (tầng B) Chỉ khi ba bậc trên không ra
5 Dừng, báo user Khi cả bốn bậc đều không được

3. Tầng A — được làm tự do

  • Liệt kê tab, chọn tab, mở tab mới tới một URL xem, tải lại trang, quay lại / tiến tới.
  • Chụp màn hình, chụp snapshot a11y.
  • evaluate_script chỉ để đọc: textContent, innerText, getAttribute, đọc bảng, đếm phần tử, dò biến toàn cục.
  • Đọc console log; liệt kê và đọc nội dung network request đã xảy ra.
  • Cuộn trang, đổi kích thước cửa sổ, phóng to thu nhỏ.

4. Tầng B — BẤM ĐỂ XEM, được phép

User chốt 03/09/2026: "bạn có thể tự bấm chỗ cần xem, miễn là không save hay áp dụng thay đổi gì."

Agent được tự bấm vào bất cứ thứ gì mà mục đích là mở ra để nhìn, không cần xin phép từng lần.

Được bấm — mọi thao tác nhằm xem

  • Phân trang · số dòng mỗi trang · sắp xếp cột · bộ lọc hiển thị · bật/tắt cột.
  • Chuyển tab, bung/thu hàng và khối chi tiết.
  • Chuyển tháng / đổi dải ngày trên lịch.
  • Mở một listing, một property, một đơn đặt phòng để xem chi tiết.
  • Mở panel, popover, drawer, modal chỉ để hiển thị thông tin.
  • Mở trang cài đặt để ĐỌC giá trị đang đặt — phí, chính sách, cấu hình listing.
  • Đóng modal, đóng banner, quay lại trang trước.

Ba rào chắn vẫn bắt buộc

  1. Đọc nhãn phần tử trước khi bấm. Lấy innerText / aria-label của đúng phần tử sắp bấm. Không bao giờ bấm theo toạ độ, không bấm theo thứ tự phần tử. Nhãn khớp danh sách cấm ở tầng C → dừng.
  2. Vào rồi thì chỉ đọc. Mở một trang cài đặt để xem giá trị là hợp lệ; chạm vào ô nhập, kéo thanh trượt, gạt công tắc trong đó thì không — kể cả khi chưa bấm Save. Nhiều giao diện tự lưu khi rời ô.
  3. Thử bậc 1–3 của thang ưu tiên trước. Đọc API vẫn rẻ và đầy đủ hơn bấm qua từng trang. Bấm là đường sau cùng, không phải đường đầu tiên.

Điều phải khai với user

Vài thao tác xem có ghi thiết lập hiển thị — ví dụ đổi số dòng/trang ghi cookie manage_listings_page_size của PriceLabs. Đó là thiết lập giao diện của chính user, không phải dữ liệu kinh doanh, nên vẫn thuộc tầng B. Nhưng phải nói ra, không lờ đi như thể không ghi gì.

Cạm bẫy: trang xem chứa nút ghi

Vào xem thì được, chạm vào thứ gì bên trong thì không. Review Prices của PriceLabs mở ra lịch giá — đọc thoải mái, nhưng bên trong có nút lưu và duyệt giá.

5. Tầng C — cấm tuyệt đối

Cấm không cần hỏi, kể cả khi trông có vẻ vô hại:

  • Điền form (fill, fill_form), tải file lên (upload_file), gõ phím vào ô nhập (press_key vào input).
  • Kéo thả (drag) — kéo trên lịch là đổi ngày hoặc đổi giá.
  • Bấm nút xác nhận trong hộp thoại (handle_dialog với accept).
  • evaluate_script có tác dụng phụ: gán DOM, el.click(), form.submit(), fetch/XHR phương thức POST · PUT · PATCH · DELETE, ghi localStorage, gọi hàm nội bộ của trang.
  • Điều hướng tới URL mang hành động — chứa action=, save, apply, confirm, delete, bulk, sync, publish, send, approve.
  • Trả lời tin nhắn khách ở bất kỳ hộp thư nào của bốn kênh.
  • Đăng nhập, đăng xuất, đổi tài khoản, đổi mật khẩu, đổi cài đặt thông báo. Gặp trang đăng nhập thì dừng và báo user, không tự điền.

Nhãn nút cấm chạm — dừng ngay khi thấy

Save · Apply · Update · Publish · Send · Confirm · Submit · Approve · Delete · Remove · Bulk edit · Sync now · Sync Price · Update My Prices Now · Add/Re-import Listings · Open / Close phòng · List a property · Accept · Decline · Cancel booking · Mark as no-show

6. Vùng nguy hiểm theo từng nền tảng

Nền tảng Chỗ dễ bấm nhầm nhất
Booking Extranet Nút Bulk edit nằm ngay góc phải khối lịch, sát vùng bảng. Hàng Room status bấm được để mở/đóng phòng. Ô giá trong lịch là input, chạm vào là sửa được
Airbnb Banner "We're simplifying service fees" dẫn vào luồng có thể xác nhận đổi phí — chỉ đọc chữ, không bấm. Multicalendar sửa giá ngay tại ô. Toggle Listed/Unlisted gỡ listing khỏi sàn
Agoda Partner Portal Nút List a property. Tab Reservations có hành động với đơn thật
PriceLabs Nguy hiểm nhất vì đẩy giá xuống cả ba kênh. Sync Price ở mỗi hàng, banner Update My Prices Now, Add/Re-import Listings. Review Prices mở trang xem nhưng bên trong có nút lưu

7. Khi thấy việc cần sửa

Không sửa. Làm đủ ba bước:

  1. Ghi lại vào vault/18-ota-listings/issues.md — mã L-nn, mức ưu tiên, sửa ở đâu.
  2. Báo user kèm: thấy gì, ở đâu (kênh + ID listing + ngày), hậu quả nếu để nguyên, và các bấm cụ thể cần làm.
  3. Đợi lệnh. User nói làm cái gì thì làm đúng cái đó, không làm kèm thứ khác.

8. Phạm vi của một lệnh cho phép

Khi user ra lệnh sửa, quyền đó là một lần, cho đúng việc đó, trên đúng listing đó.

  • Không suy ra quyền cho listing khác, ngày khác, kênh khác.
  • Không suy ra quyền cho lần sau.
  • "Mở giá 17/09–01/10 cho căn 502 trên Booking" không cho phép mở giá căn 305, cũng không cho phép mở tháng 10.
  • Việc khó lùi (đóng listing, xoá property, gửi tin cho khách, apply giá hàng loạt) phải xác nhận lại một lần nữa ngay trước khi bấm, kể cả khi user đã ra lệnh.
  • Báo cáo lại sau khi làm: đã bấm gì, kết quả ra sao, có gì ngoài dự kiến không.

9. Bảo mật và phạm vi trình duyệt

  • Chrome DevTools MCP bám profile Chrome mặc định và thấy mọi cửa sổ của profile đó — gồm cả ngân hàng, email, extranet đang mở. User đóng tab nhạy cảm trước khi cho agent chạy tự do.
  • Agent chỉ thao tác trên tab thuộc bốn miền ở mục 1.
  • Không ghi thông tin xác thực vào vault. URL extranet chứa ses=...; response header của API chứa cookie phiên (remember_user_token, cf_clearance…). Lưu hotel_id, listing_id — bỏ hết token, cookie, session.
  • Không ghép session token vào URL tự chế. Token hết hạn thì trang bật ra màn đăng nhập; agent không được đăng nhập, nên chỉ tạo ra một tab chết. Nhờ user tự mở trang cần xem.

10. Nhật ký sửa luật

Ngày Sửa gì Vì sao
03/09/2026 Bản đầu: cấm thẳng mọi click User yêu cầu chỉ-đọc trên bốn hệ thống
03/09/2026 Tách ba tầng A/B/C; thêm thang ưu tiên 5 bậc; thêm vùng nguy hiểm từng nền tảng User chỉ ra bản đầu tự mâu thuẫn: tiêu đề nói "cấm thứ làm đổi trạng thái" nhưng lại cấm cả cú bấm không đổi gì. Hệ quả thật: mất 26/36 dòng bảng giá PriceLabs, trong khi có đường API lấy được mà agent không nghĩ ra
03/09/2026 Tầng B mở rộng từ danh sách trắng hẹp thành bấm để xem nói chung User: "bạn có thể tự bấm chỗ cần xem, miễn là không save hay áp dụng thay đổi gì." Ranh giới chốt ở save/apply, không ở cú bấm

11. Liên quan

  • vault/18-ota-listings/README.md — kho hồ sơ listing, luồng làm việc
  • vault/10-rules/ota-messaging-rules.md — luật nội dung tin nhắn gửi khách (khác việc, cùng ba kênh)