OTA PortalHarth Living

Chrome nào được dùng để làm việc

User chốt 24/09/2026. Mọi thao tác đọc OTA (Booking · Airbnb · Agoda · PriceLabs) phải chạy trên profile Chrome đang đăng nhập Huy · huyngstr@gmail.com (avatar Harth Living).

Máy này có nhiều profile Chrome khác — Brandee · Duy · Hanh · Hiếu · Living · Trọng — không dùng bất kỳ profile nào trong số đó.

Vì sao có luật này

Các profile khác đăng nhập tài khoản khác, nên vừa không thấy đúng listing, vừa có nguy cơ thao tác nhầm trên tài sản của người khác.

🔴 Bẫy lớn nhất: tab mới mở SAI PROFILE, không phải hết phiên

Một user-data-dir chứa nhiều profile; mỗi profile là một browserContextId. Target.createTarget luôn mở ở context MẶC ĐỊNH — và context mặc định ở máy này không phải profile Huy. Nên tab mới chưa bao giờ đăng nhập Booking, mọi trang bị đá về sign-in, trông y hệt phiên hết hạn.

Truyền browserContextId của profile cũng không được: createTarget chỉ nhận context do chính nó tạo — trả Failed to find browser context with id ….

Cách duy nhất chạy được: nhờ một tab đang đăng nhập mở tab con bằng window.open(url,'_blank') với userGesture: true. Tab con thừa hưởng đúng profile.

# so hai giá trị này; khác nhau là KHÔNG được tạo tab trần
curl -s -X POST http://127.0.0.1:9333/cdp -H 'content-type: application/json' \
  -d '{"method":"Target.getBrowserContexts"}'      # defaultBrowserContextId
curl -s -X POST http://127.0.0.1:9333/cdp -H 'content-type: application/json' \
  -d '{"method":"Target.getTargets"}'              # browserContextId của tab extranet

Đã sửa trong chrome-grab.mjs, ota-read-booking-funnel.mjs, ota-read-booking-reviews.mjs (24/09/2026).

Bẫy đi kèm: nhiều tab = nhiều token ses

Extranet cấp một token ses= cho mỗi phiên. Mở nhiều tab qua nhiều lần đăng nhập thì các tab mang token khác nhau, và token cũ đã chết nhưng URL vẫn còn đó.

chrome-grab.mjs lấy token của tab đầu tiên tìm thấy — nếu đó là tab cũ thì mọi lệnh sẽ bị đá về trang đăng nhập, trông y hệt "hết phiên". Đã dính 24/09/2026.

Cách tránh: lấy token của tab mới nhất, hoặc đóng hết tab extranet cũ trước khi chạy. scripts/ota-read-booking-funnel.mjs đã làm đúng (hàm session() lấy token cuối danh sách).

Kiểm nhanh trước khi chạy lô lớn

curl -s -X POST http://127.0.0.1:9333/cdp -H 'content-type: application/json' \
  -d '{"method":"Target.getTargets"}' | grep -o 'ses=[a-f0-9]*' | sort -u

Ra nhiều hơn một token là phải dọn tab trước.

Nguồn: 10-rules/chrome-profile-rule.md

Tài liệu kỹ thuật khác